Skip to main content

What is CoralOS?

CoralOS is a platform for deploying and orchestrating agents that connect easily (with each other, your application, agentic middleware, …) CoralOS consists of the Coral Server and supporting tooling/ecosystem. Think of CoralOS as the “Kubernetes for agents”: you have a HTTP API, like a control plane, that lets you spin up a graph of agents with fully controlled lifecycles.

What makes an agent a CoralOS agent?

The basic requirements for an agent to run via Coral and be fully interoperable with the ecosystem are:
  • it can run in a container
  • it connects to the supplied unique MCP server URL passed to it
With just those met, a whole host of things become possible:
  • Custom tools can be provided to any agent by the consuming application
  • Agents can discover and work with the other agents they are in groups with
  • Their lifecycles are fully managed, with configurable time-to-live for cost predictability.

What are some more advanced features of CoralOS?

CoralOS makes many more interesting things easy:
  • Pushing your agents to a marketplace, where they may be used securely for free or become their own revenue streams
  • Agent re-usability via exposable configuration (options)
  • Safely intercept & manipulate LLM requests in-flight, to e.g. patch prompts, add memory to memoryless agents, or change the model used; without touching agent code (in-flight manipulation features coming soon)

Getting started

Start by running Coral Server locally, then add your agents. Use Coral Console for development and debugging, and the API to create sessions from your application.
1

Run the server

Running the server is easy:Build and run the server with JDK 24 and Git installed. Docker is also required for agents using the Docker runtime.
git + gradle
Choose how your local server accesses language models. Both options work with your own Coral Server; Coral Console is available locally for development and debugging.
Configure providers directly in config.toml. For example:
config.toml
Keep the providers you use and include the models your agents request. See LLM provider configuration for more options.
Built-in debug agents do not need an LLM provider. To start a server without model access:
After the server starts, it prints an address to the Coral Console. You can “login” with the auth key dev or whatever you passed for the auth.keys parameter.
Make sure to use a secure auth key in production, and follow conventional security practices when exposing your Coral Server to the public internet!
2

Create your own agent

Let’s create a new agent from source to use in our server.We will use a template for convenience, but writing agents in any framework (or modifying existing to work with Coral) is also easy.
See this guide on writing agents for more information on agent requirements.

Using the Koog template (Kotlin)

Check the template’s own README for its JDK requirement; it can differ from Coral Server’s JDK 24 requirement.This will create a Kotlin agent using JetBrain’s wonderful Koog framework You should now have a file structure that looks something like this:
my-first-agent
build.gradle.kts
coral-agent.toml
...
coral-agent.toml is Coral’s entrypoint to this agent, with all relevant agent metadata (runtime, options, etc).Learn more about it here
Missing any? Come to our discord to share your own examples or ask for relevant ones.
4

Create a session in Coral Server

Now that you have agent(s) in your server, you can create a multi agent session!Creating a session can be done in one POST request, but for a more convenient experience, you can use Coral Console.
1

Navigate to the console

Open your browser and go to http://localhost:5555/ui/console. The screenshots show Console v0.3.18; to select this version, start the server with --console.console-release-version=v0.3.18.
2

Create a session request

Open Workbench and choose New file. Give the session request a name.Coral Console Workbench with a session request and its agents
3

Add your agent

In the Agents panel, find your agent and click Add. Select it in the diagram or Outline, then use Inspector to configure its options.
4

Fill out necessary agent options and session TTL

Configure the required agent options in Inspector. In Groups, put agents that need to communicate in the same group.Use the Session panel to set the budget and TTL (time-to-live), which determines how long the session can run before it is automatically terminated.
5

Save the request

Optionally, click Save request to save the configuration for reuse.
6

Create the session

Click Create session to start your agents.
7

Observe the agents

  1. Expand the session you just started under Sessions in the sidebar.
  2. Expand Agents, select an agent, and inspect its status and Logs.
  3. Expand Threads to inspect the conversation.
Ultimately it’s intended that Coral sessions are instantiated via code. Coral Console provides the needed JSON payload for the create session endpoint, as well as code snippets that include making the request.Coral Server requires a bearer token for application REST endpoints. We set our auth key to dev in Step 1, so use the header Authorization: Bearer dev. The documentation endpoints are public, while agents use their own MCP URLs and agent RPC credentials.
The server’s auth.keys authenticate these API requests. LLM provider keys, including the Coral Cloud proxy key, are configured separately on the server.
Make sure to use a secure auth key, and follow conventional security practices when exposing your Coral Server to the public internet!
Naturally, variable substitution and environment variables should be used over hardcoding every option value, since sensitive information like API keys can be passed as agent options.
That wraps up the CoralOS quickstart! Next, see Integrating with your app.