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
- 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.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.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.Built-in debug agents do not need an LLM provider. To start a server without model access:
git + gradle
- Your own LLM provider keys
- Coral Cloud LLM proxy
Configure providers directly in Keep the providers you use and include the models your agents request. See LLM provider configuration for more options.
config.toml. For example:config.toml
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!
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.
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:
Using the Koog template (Kotlin)
Using the Koog template (Kotlin)
my-first-agent
src
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 hereOther templates & agent examples
Other templates & agent examples
Missing any? Come to our discord to share your own examples or ask for relevant ones.
Add the agent to your server
Open a terminal in your generated To “unlink” this agent, you can run:
my-first-agent directory, then link it so servers on that machine can discover it:On Windows, you may need to run as administrator to avoid permission issues creating the symlink
This creates a symlink called
~/.coral/agents/my-first-agent/{agentVersion} pointing to your agent’s directoryCreate 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.
Coral Console (development / testing)
Coral Console (development / testing)
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.
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.
From code (production)
From code (production)
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 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.
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!
