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.
Sprites
sprites.dev is the first of the four
sandbox providers, and the instance default
(SANDBOX_PROVIDER=sprites). It is a hosted service. A Fountain instance
needs at least one provider credential. With none configured, each
conversation fails at provision time.
The Sprites transport reference writes down the exact
API surface Fountain consumes. It also says what a compatible replacement
behind SPRITES_BASE_URL would have to provide.
At a glance
| Role | Sandbox provider, and the instance default. |
| Turned on by | SPRITES_TOKEN |
| Env vars | SPRITES_TOKEN, SPRITES_BASE_URL, SPRITES_TIMEOUT_MS |
| Suspend | Parks on its own. The sprite scales itself to zero and keeps its disk. |
| Capabilities advertised | :suspend, :network_policy, :attach, :tty, :public_url, and :checkpoint, which is off by default (#654). |
| Billed to | One platform token, so the operator and not the tenant. |
The provider side
Create a sprites.dev account, then issue an API token. That token is the whole setup on the provider side.
Env vars
| Variable | Default | Effect |
|---|---|---|
SPRITES_TOKEN |
— | The platform token. Fountain does not check it at boot, so the app starts without it and the first conversation fails at provision time. |
SPRITES_BASE_URL |
https://api.sprites.dev |
Repoints the Sprites API. Whatever you point it at must implement the same transport. E2B and Daytona are separate providers, and not replacements behind this variable. |
SPRITES_TIMEOUT_MS |
30000 |
Bounds each HTTP call to the Sprites API. A long command, such as a package install or a clone, sets its own timeout for that call. Boot refuses a value that is not positive. |
The cost model
One platform token pays for each Sprites sandbox. Fountain provisions
every tenant's Sprites sandboxes with SPRITES_TOKEN, and the bill lands on
that token's account. On the hosted instance, the credit a tenant burns
recovers it. On yours, you pay. Two results follow.
- Each signup that can start a conversation can spend your money. Close registration, or restrict it, before you put an instance on the internet.
- Fountain caps concurrency for each user. The credit balance sets the cap,
between a floor of 2 and a ceiling of 20. An admin can override it for one
user from the admin panel, or with
POST /api/admin/users/:id/sandbox-limit. A sandbox counts from the moment a provision starts, because that is the moment it starts to cost money.
Fountain never shows the token to a tenant, to the admin UI, or to a sandbox. A sprite receives a scoped token that expires, and its only audience is your Fountain instance's own API.
Verify
Start a conversation. Progress streams as stage events. A token that is bad or
absent shows up as a failure at the provision stage, in the conversation's
log view.
A Sprites outage affects nothing else. Sign-in, dashboards and configuration all still work, and the health endpoints deliberately ask Sprites no question.
Related
- About sandboxes, for what a provider is.
- The sandbox contract, and the Sprites transport reference for the wire protocol.
- Sandbox errors.