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.
Self-host Fountain
This section is about an instance of your own that stays up.
For a development environment on your own machine, read Setup. That is a different thing.
Start with Deploy an instance.
What you must have
| Postgres 16+ | The compose file runs one for you. |
| A sandbox provider | sprites.dev is the default. E2B and Daytona are two more hosts. A user can also bring their own machine with fountain runner, which needs no credential. The app boots without a provider, but then each conversation fails. |
| A mail provider | Resend, or any SMTP server. Read Configure email. It is a decision, and not an optional extra. |
A sandbox runs on one of three hosted backends, or on a user's own runner. Somebody else runs all three hosted backends as a service, so a Fountain instance is not self-contained. Self-hosted Daytona comes closest.
| Provider | Turned on by | When idle | Notes |
|---|---|---|---|
| Sprites (default) | SPRITES_TOKEN |
Parks, and scales to zero on its own. | The reference backend. |
| E2B | E2B_API_KEY |
Parks on an explicit pause, with a snapshot of filesystem and memory. | Needs a template built from images/e2b/. Read E2B. |
| Daytona | DAYTONA_API_KEY |
Parks on an explicit stop, keeps the disk, and archives a long park. | You can self-host it through DAYTONA_API_URL. Read Daytona. |
SANDBOX_PROVIDER chooses the default for a new sandbox. An agent can pin a
provider. A sandbox that already exists always stays where Fountain made it.
Architecture says what each piece of the system does, and what breaks when a dependency is down.
The guides
How to stand it up.
The decisions it forces.
How to keep it up.
When something is wrong, start from Troubleshoot a problem.
Licence
The Fountain server uses the GNU AGPL v3.0 or later. You can run your own instance. You can run it commercially.
The AGPL adds one obligation. Assume that you change the server, and that you offer the changed server to other people over a network. You must then offer those people the source of your changed version. A private instance for your own company does not trigger this obligation. You do not offer a service to third parties in that case.
The ee/ directory holds the Stripe integration. That directory uses the
Elastic Licence 2.0. You can run the code in your own instance at no cost, and
your changes stay private. You must not offer that code to third parties as a
hosted service.
The cli/ directory and the TypeScript SDK use the Apache Licence 2.0. Your
application gets no licence obligation when it calls the Fountain API.
Releases up to v0.12.0 used the MIT licence, and those releases stay MIT. The
NOTICE file at the repository root records the change.
Known gaps
Here is what a self-hosted instance does not yet cover.
- A sandbox backend is a dependency somebody else runs. Sprites, E2B and
Daytona are all services. Self-hosted Daytona narrows the gap. The contract
that a new backend must satisfy is executable code,
Fountain.Sandboxand its conformance suite, and the sandbox contract writes it down.