Skip to content

Fountain

llms.txt lists every page for an agent

The fountain lexicon declares Managoat’s workload layer (formerly fountain) as typed chant resources. Managoat runs coding agents in sandboxed VMs. Three kinds are declarable, the three fountain apply reconciles: Environment (sandbox baseline), Vault (env-var overrides) and Agent (a runnable agent config). Conversations are runs, not resources: start them with the fountainRun op.

Teammate, Schedule and Webhook are still exported, but Managoat removed the team, its scheduler and webhooks (managoat/managoat#2793): declaring one fails the build with FTN025, which names what replaced it. A long-lived thread is one conversation resumed by channel_id (what a Steward’s runs use), and a cadence is a clock outside Managoat running chant run <op> --on fountain. See Coming from the team kinds below.

Types are generated from a pinned fountain release’s OpenAPI spec, so they track the real API.

Install it with:

Terminal window
npm install --save-dev @intentius/chant-lexicon-fountain
import { Environment, Agent } from "@intentius/chant-lexicon-fountain";
export const env = new Environment({
name: "team-env",
networking_type: "limited", // FTN010 requires explicit intent
networking_config: { allowed_hosts: ["github.com"] },
metadata: { "managed-by": "chant" }, // enables owned-only reconcile/prune
});
export const helper = new Agent({
name: "helper",
model: "anthropic/claude-sonnet-4-6",
runtime: "claude",
environment: env, // typed ref, serialized by name
});
  1. chant build — synthesize and lint. The FTN rules catch open networking, credential literals, and unresolvable ${VAR} references before review. The same rules run via chant audit over a repo of hand-written fountain apply manifests — no chant project needed; the documents are parsed back into the entity graph.
  2. chant run <apply op> or call fountainApply — reconcile against the API. Idempotent by name.
  3. chant lifecycle diff --live — drift. A UI edit to an owned Environment shows up here.
  4. chant import --from — adopt UI-built resources into typed files.

FOUNTAIN_ENDPOINT (defaults to the hosted instance) and FOUNTAIN_TOKEN. Mint a token via POST /api/auth/token with email and password, or from the account UI. The same code applies to a local mix phx.server fountain by pointing FOUNTAIN_ENDPOINT at it — registration and token mint work headless, so CI needs no browser.

Managoat removed these between v0.21.0 and v0.29.0, the pinned spec. Each now fails the build with FTN025, and chant import skips its documents:

WasNow
Teammate (an agent on the team, with a thread)One conversation resumed by channel_id. A Steward’s runs go to chant:steward:<name>; its sandbox keeps its disk across park and wake. Or --on e2b, a sandbox of your own.
Schedule (a cron prompt into that thread)A clock outside Managoat (a CI schedule:, a CronJob) running chant run <op> --on fountain. The cadence stays on the Op.
WebhookNothing upstream. Read a run’s outcome from chant run, or the conversation’s event stream.
Agent sandbox_mode: "persistent"Drop it: every conversation gets a sandbox of its own, and persistent is a 422.
sandbox_provider daytona or runnersprites or e2b, or unset for the instance default.
runtime: "opencode"claude, codex, gemini or acp.
fountain.profiles.<name>.teamsteward, the steward’s name.
MetricCount
Resources3
Property types1
Services1
Intrinsic functions0
Pseudo-parameters0
Lint rules12

Lexicon version: 0.124.34
Namespace: Fountain

chant