> ## Documentation Index
> Fetch the complete documentation index at: https://docs.onecortex.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> What changed in Onecortex, whether it affects you, and what to do.

<Update label="28 September 2026" tags={["Added"]}>
  ## The private beta opens

  Onecortex deploys an AI agent from your GitHub repository to an authenticated HTTPS endpoint. Today:

  * Python and TypeScript agents on LangGraph, the OpenAI Agents SDK, Strands Agents, CrewAI, LangChain, LlamaIndex, Mastra, the Vercel AI SDK, LangChain.js, or a plain function.
  * Builds that are smoke tested before they serve, and never take down the live version when they fail.
  * Rollback to any of the last ten versions, automatic deploys on push, secrets, logs, alerts and a chat console.
  * One endpoint that streams text, tool calls, tool results and steps.

  Access is by invitation. Start with the [quickstart](/quickstart).
</Update>

<Update label="28 September 2026" tags={["Breaking"]}>
  ## One contract for agent code

  Every agent is now served the same way: Onecortex imports the object named by `entrypoint` and calls it. Agents that ran their own server are no longer supported.

  **Does it affect you?** Only if your `agent.yml` has a `mode`, `server` or `streaming` key, or your agent was built before this change.

  **What to do:**

  * Point `entrypoint` at your agent object or a function. See [Entrypoints](/build/entrypoints).
  * Remove `mode`, `server` and `streaming` from `agent.yml`. Until you do, each is ignored with a warning: ``Unknown key `mode` will be ignored.``
  * Redeploy agents built before this change. Until you do, calls answer `502` with `This version was built by an older version of Onecortex. Redeploy the agent to serve it.`

  Before:

  ```yaml agent.yml theme={null}
  apiVersion: v1
  runtime: python3.12
  mode: server
  server:
    command: uvicorn app:app --port 8080
  ```

  After:

  ```yaml agent.yml theme={null}
  apiVersion: v1
  runtime: python3.12
  entrypoint: agent.py:agent
  ```
</Update>

<Update label="28 September 2026" tags={["Changed", "Breaking"]}>
  ## The invoke API carries every event

  Calls now report what the agent did, not only what it said: tool calls, tool results and steps, as [events](/build/streaming), in the stream and in the JSON body's `events`.

  **Does it affect you?** Yes, if you call agents with `input` or `message` instead of `prompt`, or if you treat any non `200` as a failure without reading the body.

  **What to do:**

  * Send `prompt`. A request without it answers `400` with `Request must include a 'prompt' field.` Fields named `input` or `message` now reach your agent as `params`, and are not read as the prompt.
  * A run in which your agent raised now answers `502`, with the full body: `status` is `failed`, `error` holds the code and message, and `result` the text sent before the failure.
  * In a stream, handle `event: error`. See [the invoke API](/call/invoke).

  Before:

  ```json theme={null}
  { "input": "hello" }
  ```

  After:

  ```json theme={null}
  { "prompt": "hello" }
  ```
</Update>
