Symphonix Documentation · Core 0.61.0

What Symphonix is

A platform for building AI agents that your organisation runs itself — described in a file, compiled into a project you own, deployed one at a time, and watched from one place.

The problem it solves#

Organisations that try to put AI agents into real use meet the same three difficulties, and they arrive in this order.

The first is that an agent is easy to prototype and hard to pin down. A prompt and a few tool calls demonstrate something in an afternoon. What that demonstration does not have is a definition — something a second person can read, review, change and be sure they have understood. Symphonix makes the definition the artefact: an agent is a flow file, and everything the agent may do is declared in it.

The second is that the thing you demonstrated has to become something you can run. Running it means a process with an address, secrets it reads from somewhere, a record of what it did, an upgrade path and a way to stop it. Symphonix compiles a flow into an ordinary Node project with all of that already in it, and the engine is vendored and pinned inside the project rather than installed around it.

The third arrives when there are nine of them. Nobody can tell which are up, which are failing, what they are spending, or which of them is allowed to call the tool that writes to the CRM. The Control Panel is for that, and it is deliberately a separate component: the agents keep running when it is down, and it has no power to change what an agent is.

Who it is for#

Three roles, and the platform is divided along them rather than along technology.

What an agent is here#

In this platform an agent is a graph of steps over a shared set of named channels, compiled to LangGraph, the graph runtime underneath. That sentence is doing real work, so taking it apart:

What an agent is not is a prompt with tools bolted on. Everything it may reach — a tool, an MCP server and the specific tools on it, a knowledge collection, a database, who may talk to it — is declared in the flow, which means it can be read, reviewed and refused before anything runs.

Why the definition carries no addresses

A flow names an MCP server and the tools it may call. It says nothing about where that server is, what transport it speaks, or what credential reaches it — those belong to the deployment and come from the environment. The same is true of a folder of documents: a flow names the collection, never the folder. This is what lets one flow run against a test system on your machine and the real one in production without the flow changing, and it is also why a flow is safe to send to somebody.

The three components, and how they divide the work#

DESIGN TIME — YOUR WORKSTATION Symphonix Studio draw it, or describe it flow.json what the agent should do Symphonix Core validates · compiles · generates a project RUNTIME — YOUR MACHINES, ONE PROJECT PER AGENT Agent A a Node project, or an image its own port · its own .env its own journal and state serves its own chat page Agent B started, stopped and upgraded on its own What an agent reaches model providers · MCP servers knowledge collections SQL databases · webhooks GOVERNANCE — ONE PLACE, FOR THE WHOLE FLEET Symphonix Control Panel who people are · which agents are up · what each one is doing and spending · approvals · policy · MCP catalogue each agent dials out and reports
How the three fit together. Agents are in neither the Studio nor the Control Panel — they are projects of their own, which is the point.

Symphonix Core — the language, the compiler and the runtime#

Core owns what a flow may say. It validates a flow against the language version the flow declares, refuses the ones it cannot accept, generates a complete project from the ones it accepts, and provides the runtime that project uses. It is also what runs inside every deployed agent, vendored into the project and pinned to a version.

Two things worth knowing from the outside. Every flow declares a language version and gets exactly that version's features, and every version from the first still compiles — so an agent written a year ago does not stop working when the language moves. And a flow may not contain code: there is no node that carries JavaScript. Where behaviour has to be written, the flow carries a description and the installation generates the code from it, which is what makes a flow reviewable and a shared solution safe to accept.

Symphonix Studio — where agents are built#

A visual editor for flows. You draw the graph on a canvas, or describe what you want in the Ask bar down the left and have it written for you; both produce the same file.

The canvas sits in the middle. Down the right is a panel whose tabs are everything a flow declares — Flow, Chat template, Page, Views, In & out, MCP servers, Knowledge, Databases, Services, Settings, Tools and State — and which becomes the selected node's own settings when you click a node on the canvas. Along the bottom is Problems, the validator's standing opinion of the flow rather than something you run: it reads valid · ready to generate when the flow is sound, and otherwise names each refusal and hint with the exact place in the file it came from. Save and Play are in the top bar, and Open project… and Deploy all… beside the project name.

Symphonix Control Panel — where the estate is run#

The board every deployed agent reports to. It holds people and their roles, the list of agents and what each is doing, health and runs and what a run cost, the approval groups and rules that decide who is asked when an agent pauses for a person, organisation policy, and the catalogue of MCP servers available to the organisation.

It is a governance surface, not a host. Agents run whether or not it is up; what it adds is the ability to see them, to stop them, and to narrow what a particular agent may do.

The one dependency worth knowing before you install

The Studio asks the Control Panel whether people must sign in. If the Control Panel is not answering when the Studio's page loads, the Studio opens with no sign-in at all. That is a deliberate default for a single-machine setup and the wrong one for a shared machine; the installation guide shows the setting that makes an unreachable board mean nobody gets in instead. It is also why almost every confusing symptom downstream — a Studio with no door, an agent nobody can see — is answered by the question is the board up?

Design time and runtime, and why the line matters#

The Studio and Core's compiler are design time. They turn an intention into a project. Nothing they do is needed again once that project exists.

A deployed agent is runtime. It is an ordinary Node project — npm install and node run.js, or one container image — containing the flow, the generated code, the engine vendored at a pinned version, and its own .env. It serves its own chat page on its own port, keeps its own journal and its own waiting state on its own disk, and dials out to the Control Panel to report.

The practical consequences are what the line is for:

What you give up for that, said plainly

Independently deployed agents mean n processes to deploy, patch and watch rather than one service. That is the trade, and the Control Panel exists because of it: it is the single place that makes a fleet of separate processes legible. If you are running two agents, the independence costs more than it pays. At nine it is the only reason the estate is manageable at all.

How external systems are connected#

Four doors, and each one is declared in the flow and configured in the deployment.

From an idea to a watched agent#

  1. Describe or draw it in the Studio. The result is a flow file.
  2. Check it. The Problems panel runs the validator and the readiness checks, which refuse some things outright and warn about others.
  3. Test it with scenarios, and score it with an evaluation if the quality of the answer matters.
  4. Deploy it. The Studio writes a complete Node project — the flow, the generated units, the vendored engine, a Dockerfile, a .dockerignore and an .env.example.
  5. Start it, as a folder or as a container image. It prints the address it is listening on.
  6. It registers itself with the Control Panel by dialling out, and from then on it reports what it is doing.
  7. Watch it. Health, runs, what each run did, what it cost, and what needs attention.

Build your first agent walks all seven.

What the platform does not do#

Stated here because a reader evaluating it should not have to discover these.

Which build this describes

Core 0.61.0 · Studio 0.41.0 · Control Panel 0.53.0 · DSL 0.33 · protocol 0.19.