Managoat is the hosted Fountain. Fountain is the open-source engine, and its name is on the CLI, the API, the SDK and this manual. Everything here applies to Managoat unless a page says it is for a self-hosted server.
claude
Anthropic's Claude Code CLI, headless in the sandbox.
At a glance
| Provider | anthropic |
| Multi-provider | No |
| Transport | ACP, through the pinned claude-agent-acp adapter |
| Skills root | /home/sprite/.claude/skills |
| skills.sh agent | claude-code |
| System prompt | ~/.claude/CLAUDE.md |
| Credential | An OAuth token or an API key. Read which one it uses. |
Why you would choose this one
It is the default, and it is the most exercised path. Editor integration, the permission flow and the block format all grew against it first.
Choose opencode instead to get one agent definition that can move between providers.
Set it up
apiVersion: fountain.dev/v1
kind: Agent
metadata:
name: researcher
spec:
runtime: claude
model: anthropic/claude-sonnet-4-6
The model must carry the anthropic/ prefix. Fountain rejects any other
prefix when you save the agent.
Add your credential at /account/inference-credentials in the app. An
operator cannot set one for you. Read
Services Fountain uses.
Which credential it uses
Two kinds work. If you hold both, the OAuth token wins.
| Credential | Bills |
|---|---|
| Claude Code OAuth token | Your Claude.ai subscription, Pro or Team. |
| Anthropic API key | Metered API usage. |
That preference matters to you and not to Fountain. A subscription you already pay for is usually the one you want spent.
Fountain exports exactly one into the sandbox, and never both. Claude Code prefers the OAuth path when it sees both, but the variable it picks has changed between CLI versions. So Fountain chooses one, and it does not let the CLI decide.
When an organization disallows the subscription
An Anthropic organization can disable Claude subscription access for Claude
Code. After that, a turn that uses the OAuth token fails with
oauth_org_not_allowed.
Fountain recovers. It does not leave you to work it out.
- With an API key on file, the conversation moves to that key, and the turn fails with a message that says so. Send the prompt again and it runs.
- Without one, the turn fails with a message that tells you to add one.
Two details about the recovery matter.
The turn still fails. The switch is not a silent retry. The failure and the fix both sit in the transcript, and not only in a log nobody reads.
The switch lasts for that conversation, and not forever. A new conversation tries the OAuth token again. So an organization policy that somebody later reverts heals on its own. It does not stay pinned to the fallback.
Verify
Run a conversation, then ask it what model it is. A turn that reaches output at all proves the credential, the runtime and the sandbox.
Limits
Fountain provisions the MCP servers. It does not pass them for each
session. An upstream defect in claude-agent-acp breaks session-scoped MCP
delivery. So Fountain writes .mcp.json into the sandbox and starts the
project servers instead. The effect is the same and the mechanism is
different. That matters when you debug why a raw ACP probe behaves one way and
Fountain behaves another.