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.
Conversation states
This page lists the status values a conversation takes, what exists in each one, and which operations are legal. Read About conversations for what a conversation is.
Transitions
pending ---> running <---> idle
| | |
| v |
+--------> failed <-------+
any non-terminal state ---> terminated
idle returns to running when a follow-up prompt arrives. Each
non-terminal state moves to terminated through
POST /api/conversations/:id/terminate.
The states
| Status | What exists | What you can do | Terminal |
|---|---|---|---|
pending |
The conversation row, and its resolved set of environment variables. No sandbox yet. | Terminate it. | No |
running |
A sandbox, and a turn in flight. | Interrupt the turn, stream events, terminate it. | No |
idle |
A sandbox, and no turn in flight. The sandbox can be live or suspended. | Send a follow-up prompt, stream events, terminate it. | No |
failed |
The transcript and the log events. Fountain can have destroyed the sandbox already. | Read the transcript. Launch a new conversation. | Yes |
terminated |
The transcript and the log events. | Read the transcript. | Yes |
The sandbox is not the status
A conversation's status describes the run. It does not tell you whether a machine has power right now.
An idle conversation can have a live sandbox, a suspended one, or none at
all. Which one depends on how long it has been idle, and on what the provider
supports.
| Sandbox event | Trigger | Effect on status | Agent memory |
|---|---|---|---|
| Suspend | Idle for SANDBOX_IDLE_TIMEOUT_MINUTES, 60 by default. |
None. It stays idle. |
Kept. The disk survives. |
| Wake | The next prompt. | idle to running. |
Kept. |
| Destroy on ceiling | It ran for SANDBOX_MAX_LIFETIME_HOURS. Off by default, so this never happens unless you set it. |
None. It stays resumable. | Lost for an ephemeral sandbox. Fountain parks a persistent home, which keeps it. |
| Destroy on idle | It went idle on a provider with no :suspend capability. |
None. | Lost. |
You set both bounds for each instance. A 0 turns either one off, and the
ceiling starts off. Read the configuration reference.
Warnings
Do not expect to resume a conversation in failed or terminated. Launch a
new one.
An interrupt applies to the turn in flight, and not to the conversation. The
conversation returns to idle and stays usable.
Do not terminate a conversation you want back. On an ephemeral sandbox that no other conversation holds, termination destroys the sandbox, and the memory the agent works from goes with it. A persistent or shared sandbox stays up for the conversations that remain on it. The transcript stays in both cases.
A sandbox that a configured ceiling reclaims leaves the conversation resumable, and leaves the agent without its earlier context. State what matters again on the next turn.
Where to go next
- About conversations.
- API reference, for the endpoints that cause each transition.
- Configuration reference, for the two timeouts.