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.

Fountain

Fountain runs an agent on a cloud sandbox, and gives you a conversation with it. You send a prompt. You read the reply. Fountain operates the sandbox, and you do not.

It is an API first. Your app reaches it over a protocol you already speak, or through the SDK. The person who uses your app need never learn that an agent is there.

In a hurry?

Install the CLI and log in. For your own instance, set FOUNTAIN_BASE_URL first, because the CLI defaults to the hosted one.

brew install BinaryBourbon/tap/fountain
fountain auth login
fountain auth whoami

The CLI now works, and you have no agent to run yet. The guided tour builds the first one.

The problem

An agent is only useful with a sandbox behind it. That sandbox is the part nobody set out to build.

The agent needs a filesystem, a shell, a package manager and a network. It needs real credentials, and those must never reach the prompt or the transcript. It needs to remember the last time, so the second message costs a sentence and not an explanation of the first.

The sandbox also needs an owner. Something must start it, park it while nobody speaks, and wake it when somebody does. One account must never see another's work. A sandbox that nobody stops costs money for as long as it runs.

You can build all of that. It is weeks of infrastructure, and it is not your product.

What Fountain does

Fountain keeps the sandbox, and gives you the conversation.

Send a prompt. A sandbox starts, with whatever packages, files and secrets you configured, and runs the agent. It parks when the talk stops, and it costs little while parked. The next message wakes it, and the agent's work is still there.

Your secrets arrive at spawn as environment variables, so they never enter the prompt or the model's context. Fountain scrubs them out of the output it stores.

Fountain is multi-tenant. Each account reaches its own agents and its own sandboxes, because Fountain scopes each query to the caller. Your own users therefore stay apart, and you write no code for it.

Reach it the way you already work.

What you build on top is yours. It can be a chat client whose contacts are bots, or a tool that makes an engineer faster. Your own user need not know which. Why a bot needs more than a chat UI makes that case in full.

Start here

  • The guided tour builds an agent that clones a repo, changes it and opens a pull request. A second turn then lands a revision on the same PR. The tour is about forty lines. Start here if Fountain is new to you.
  • The four primitives explains the data model, and why Fountain divides it four ways.

Understand it

Build with it

Run it

Look it up