Conversations
Run an agent and watch every step.
Managoat runs on Fountain, an open-source server you can run yourself.
Give an agent a task, follow its tools and changes, and send a follow-up. Each conversation has a real computer that keeps its files between prompts.
Your repositories, packages and credentials arrive with the machine. It parks between prompts and wakes with its work intact. Run your own instance to try it.
Case study
When a workload breaks, this Kubernetes cluster pages an on-call engineer and starts an agent at the same time. The agent investigates the alert and, when it finds a repository fix, opens one focused pull request. It never holds cluster credentials. A person decides whether to merge.
Measured from 11 to 25 August 2026 on one Kubernetes cluster running live production workloads. Numbers reported by the cluster administrator (us).
Setup
# fountain.yml
apiVersion: fountain.dev/v1
kind: Environment
metadata:
name: app
spec:
repositories:
- url: https://github.com/acme/app
mount_path: /work/app
secret_key: GITHUB_TOKEN
setup_script: cd /work/app && npm install
---
apiVersion: fountain.dev/v1
kind: Vault
metadata:
name: ci-bot
spec:
secrets:
GITHUB_TOKEN: op://Private/github/token # resolved from 1Password at apply time
---
apiVersion: fountain.dev/v1
kind: Agent
metadata:
name: reviewer
spec:
runtime: claude
model: anthropic/claude-sonnet-5
environment: app
skills:
- source: obra/superpowers
ref: v2.1.0
mcp_servers:
deepwiki:
type: http
url: https://mcp.deepwiki.com/mcp
fountain apply -f fountain.yml
import { Fountain } from "@managoat/fountain-sdk";
const fountain = new Fountain(); // FOUNTAIN_API_KEY
const run = await fountain.run(
"Fix the failing test and open a PR",
{ agent: "reviewer", vault: "ci-bot", channelId: ticket.id }
);
console.log(run.text);
Underneath
The agent is only the visible part.
?blocks=true.
State
Bind a conversation to a customer, ticket or Slack channel id. Send that id with the same Agent, Environment and Vault to resume the live conversation. You do not store or look up a Managoat conversation id.
Between prompts, the sandbox parks with its files intact. The next message or a scheduled run wakes it.
In the default mode, the disk belongs to that conversation. End the conversation and its workspace goes with it.
Scale
No queue to run, no worker pool to size, no image to bake per repository.
In the default mode, one call starts one conversation on its own sandbox. A batch is a loop. Every sandbox carries the bundled skill, so an agent can start more work and collect the replies.
Use persistent mode when many conversations need the same checkout. They keep separate transcripts and run up to the runtime's capacity. Work beyond that limit is refused, not queued.
Protocols
Your editor or chat surface keeps speaking ACP, and your agents keep speaking MCP. Everything else drives the roster through the API our own apps use.
fountain acp.
Self-host
The same API, SDK and CLI. Run Fountain and Postgres in your own account, and connect machines from your network.
Run the control plane yourself. Fountain is open source. Docker Compose brings up Fountain and Postgres, while plain Kubernetes manifests run the same release image.
Bring your own sandbox compute. A runner dials out from your network and opens no inbound port.
By default, a runner uses trusted mode. The agent runs as you, with your network and tools and no container between. Use it where you would hand a colleague a shell, or use the Firecracker backend on Linux with KVM for a microVM boundary.
Questions
Read every limit and review the security model yourself. The answers tell you what the software enforces and where it stops.
Get the answersManagoat is not open for sign-ups. If you are curious about it, or about running Fountain yourself, Jake is happy to talk.
Contact JakeOr read the manual.