Declare your agents. Milieu runs them.
An AI agent ecosystem for the enterprise
Milieu runs AI agents inside your organisation. They reach your systems through a gateway that keeps the credentials, work in a sandbox with only the access you grant, and log every action to a tamper-evident audit trail.
Connect agents to your systems
Agents call your APIs, databases, internal tools, and MCP servers, but only through named routes that you approve.
Learn how it worksAgents
- mira
- arun
- vera
Trusted zone
- Approved routes
- Credential broker
- Audit log
Credentials are kept here
Your systems
- APIs
- Databases
- Internal tools
- MCP servers
- Agents at partner companies can reach yours over the Agent2Agent (A2A) protocol, and those conversations are logged like any other.
- Your people can ask an agent from Claude Code, Cursor, or their IDE over MCP, with the same permissions and audit trail.
Agents never see your credentials
The gateway adds the API key or password to each request inside a separate trusted zone. The agent can use the system but never holds the key.
Agents get only what you grant
Each agent can use only the tools on its list, and Milieu refuses any other call. Each installation runs in its own container; on a VM, a per-agent sandbox can add filesystem and network limits inside it.
Describe your agents in one manifest
The manifest lists your agents, their roles, what they can use, and what they know. Validate it, preview the change, then apply it. The same file works on a server, in your cloud, or on Kubernetes.
Learn how it worksapiVersion: milieu.dev/v1kind: Agentmetadata: { name: mira }spec:role: associate1permissions:2- "knowledge(search:*)"2- "memory(save:*)"2---apiVersion: milieu.dev/v1kind: Projectmetadata: { name: acme }spec:members: [mira, arun]1knowledge:3- source: ./projects/acme3---apiVersion: milieu.dev/v1kind: Knowledge3metadata: { name: policies }spec:layer: global3sources: [./global/knowledge]3
- 1
Roles and teamwork
Each agent has a role, such as associate, administrator, or auditor. Agents hand work to each other and run recurring tasks on a schedule.
- 2
Per-agent permissions
Each agent gets an explicit list of tools, such as
knowledge(search:*). Milieu refuses any call that isn’t on it. - 3
Layered knowledge and memory
Agents draw on company-wide, team, and project knowledge, and remember past conversations. Search works by keyword and, optionally, by meaning.
Audit every action
Milieu appends every command and tool call to a hash-chained audit log. If anyone edits, reorders, or deletes an entry, the chain breaks and Milieu reports it.
Learn how it works$ milieu audit tail
- #1apply Agent/miraby admin→ 5a575ad7
- #2apply Agent/arunby admin→ b0a7ec30
- #3apply Project/acmeby admin→ 9f9e86a5
- #4knowledge search refundby mira→ 41c0d2e7
- #5message send arunby mira→ c38b19f4
$ milieu audit verify
audit: chain intact (5 record(s))
Session transcripts
Read exactly what an agent was asked and what it did, and resume the conversation later.
Verified in your pipeline
Run
milieu audit verifyon demand or in continuous integration (CI) to show the log hasn’t been altered.Your own audit key
Key the chain with an HMAC key kept outside the installation, so someone who can edit the log can’t forge entries that still verify.
Signed messages
Each agent signs what it sends, and Milieu refuses delivery of a message whose signature doesn’t verify.
Run it in production
One installation serves one team or tenant. It runs as a single node with its state in SQLite, so you scale by adding installations rather than replicas.
Learn how it worksPolicies and approvals
Write access rules as Cedar policies. Run them in shadow mode beside Milieu’s own checks, then enforce them. A policy can make a call wait for a person’s approval.
A signed supply chain
The OCI image is built from digest-pinned base images, scanned, signed with Sigstore, and published with a software bill of materials (SBOM) and build provenance.
OpenTelemetry
Traces and metrics cover model calls, skill runs, and tool calls, so agents show up in the monitoring you already run.
Upgrades in place
Each database records its schema version. A new release upgrades it step by step, and an older release refuses a schema it doesn’t know.
One turn at a time
A conversation takes one turn at a time, whether it arrives over the CLI, REST, MCP, A2A, or the portal. Milieu asks a second caller to retry, so turns never interleave in the transcript.
Clean restarts
On shutdown, a server first fails its readiness check, then gives in-flight requests a grace period. A request that can’t finish gets a 503 response, not a dropped connection.
Drift detection
milieu apply driftreports anything changed outside the manifest since the last apply, and exits non-zero so CI can catch it.Known limits, written down
Per-host network filtering covers only proxy-aware HTTPS, and an audit log cut short at the end needs an external anchor to detect it. The security guide lists every known limitation.
Try the support team example
The getting-started guide builds a customer support team end to end: three agents, a knowledge base, memory, and an audit trail. milieu setup asks a few questions and writes the manifest for you.
$ make build
$ ./milieu setup
Agents, declared and managed the Kubernetes way
Many agent platforms are toolkits, where developers build each agent in code from blocks and modules. Milieu works the way Kubernetes does: you declare the agents you want in a manifest, and Milieu creates them and keeps them in that state.
Declarative
One manifest describes your agents, their roles, their access, and their knowledge. Preview a change, then apply it: Milieu creates and updates what the manifest declares and records every apply. With
--prune, it also disables agents and projects you have removed.Container-first
Milieu ships as one signed, non-root OCI image, and the container is the isolation boundary. Run one per team or tenant with Podman, under systemd, or on Kubernetes, in your own cloud or data centre.
Kubernetes-style
Manifests use the familiar
apiVersion,kind,metadata, andspecshape, so teams that run Kubernetes can review agents the way they review any other resource.