The fleet
Every registered conversation, its accumulated diff, and landing or discarding its work
On this page(19 sections)
- Every live conversation
- Conversations put away
- Find a conversation
- One conversation's card
- The full conversation record
- Put words in the agent's mouth
- Retitle a conversation
- Whether this conversation merges its work automatically
- Whether this conversation retries after a provider outage
- Mark a conversation read
- Mark every conversation read
- Everything a conversation has changed
- One file's before and after in a conversation's work
- Merge a conversation's work into the workspace
- Ask a maintainer to merge this work
- Throw a conversation's work away
- Put conversations away
- Bring conversations back
- Empty the archive for good
The roster rather than the turn. Each conversation works in its own private copy of the repos, so it has a cumulative set of changes you can read and two ways for it to end: merge that work into the shared tree, or throw it away. The rest is the bookkeeping a board needs — renaming, marking read, archiving, purging.
19 calls. Pick one to open it, or use the list on the right.
GET/agentsEvery live conversation
The fleet as the board draws it: each conversation with its title, what it is doing, when it last moved and whether anybody has read it since. Archived conversations are not in here.
What you send
Nothing. Call it as it is.
What comes back
| Field | Type |
|---|---|
agentsThe conversations | object[] |
idThe conversation id, which is how… | string |
sessionIdThe provider session behind the last… | string |
titleWhat to call it: the first… | string |
statusWhat it is doing | "idle" | "running" | "awaiting" | "stopping" … (11) |
failureWhy the last turn failed, in… | string |
providerWhich model provider it runs on | string |
harnessWhich agentic loop it runs on | "native" | "claude-code" |
modelWhat its last turn ran with | string |
effortHow hard that turn was told… | string |
thinkingWhether that turn showed its reasoning | boolean |
fastWhether that turn asked for higher… | boolean |
tierHow hard its last turn looked… | "fast" | "standard" |
tierHoldWhether this conversation is pinned to… | boolean |
accountWhich connected account paid for it | string |
branchThe branch its private copy works… | string |
autoLandThis conversation's own answer to whether… | boolean |
resumeAfterOutage | boolean |
landRequestedA collaborator has asked a maintainer… | object |
emailWho asked | string |
nameTheir display name | string |
atWhen they asked, in milliseconds | number |
originWhere the conversation came from when… | object |
automationId | string |
provider | string |
channelId | string |
author | string |
forkedFromThe conversation this one was cut… | object |
conversationId | string |
index | integer |
files | "then" | "now" |
baseThe commit its private copy started… | string |
costUsdWhat it has cost so far,… | number |
inputTokensTokens sent | number |
outputTokensTokens received | number |
contextTokensHow much of the window the… | number |
contextWindowHow large that window is | number |
activityWhat it is doing at this… | object |
toolThe last tool it reached for | string |
targetWhat it reached for that tool… | string |
todoThe item on its own list… | string |
landedMessageDraftThe whole story of this merge's… | object |
startedAtWhen the drafting began, in milliseconds | number |
stepsEach model that was asked, in… | object[] |
providerWhich provider was asked | string |
modelWhich of its models | string |
statusHow this one went | "asking" | "answered" | "refused" | "skipped" |
atWhen it started being asked, in… | number |
msHow long it took | number |
reasonWhy it refused, in its own… | string |
outcomeHow it ended | "written" | "failed" |
reasonThe one-line account of a failure,… | string |
finishedAtWhen it ended, in milliseconds | number |
landedMessageWhat this conversation's merged work is… | object |
subjectOne line saying what the merged… | string |
noteThe same change said to somebody… | string |
breakingWhat this change takes away, for… | string |
startedAtWhen the running turn started, in… | number |
updatedAtWhen it last did something, in… | number |
seenAtWhen somebody last opened it, in… | number |
attentionWhich kinds of waiting-for-you it is… | object |
planIt has proposed a plan and… | boolean |
questionIt has asked you something | boolean |
permissionIt wants to use a tool… | boolean |
serviceIt wants to spend money on… | boolean |
capabilityIt needs something connected that is… | boolean |
conflictIts work cannot be merged without… | boolean |
turnsTurns it has finished | number |
toolUsesTools it has used, over its… | number |
subagentsHelper agents this one delegated to | object |
runningHelpers working right now | number |
totalHelpers it has started over its… | number |
diffEverything it has written, measured from… | object |
filesFiles touched | number |
insertionsLines added | number |
deletionsLines removed | number |
landedPresencePresent only when some of what… | object |
landedPaths this conversation merged in | number |
presentHow many of them are still… | number |
loopThe loop driving this conversation, if… | object |
stateHow the loop is going | "running" | "done" | "exhausted" | "stalled" … (7) |
iterationWhich round it is on | integer |
maxIterationsHow many rounds it will attempt… | integer |
goalWhat it is looping towards | string |
workflowThe workflow run this conversation is… | object |
runIdThe run this belongs to, which… | string |
nameThe workflow's name | string |
stepWhich step this conversation is on… | string |
indexThis step's place in the workflow,… | integer |
totalHow many steps the workflow has | integer |
archivedAtWhen it was put away, in… | number |
revWhich version of the fleet this… | number |
heldAutomations waiting at the door for… | object[] |
idThis waiting item's own id, which… | string |
automationIdWhich automation it came from | string |
payloadWhat set it off, kept whole… | string |
originWhere the message came from, kept… | object |
automationId | string |
provider | string |
channelId | string |
author | string |
titleWhat the conversation would be called | string |
conversationIdThe thread this belongs to, when… | string |
sessionIdThe provider session that thread last… | string |
createdAtWhen it started waiting, in milliseconds | number |
autoRunAtWhen it goes ahead on its… | number |
curl "$SANDBOX/agents" \
-H "x-intentic-control: $INTENTIC_TOKEN"import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.agents.list();GET/agents/archivedConversations put away
The same shape as the live fleet, for the conversations somebody has decided are finished. Their work is kept, and any one of them can be brought back.
What you send
Nothing. Call it as it is.
What comes back
| Field | Type |
|---|---|
agentsThe conversations | object[] |
idThe conversation id, which is how… | string |
sessionIdThe provider session behind the last… | string |
titleWhat to call it: the first… | string |
statusWhat it is doing | "idle" | "running" | "awaiting" | "stopping" … (11) |
failureWhy the last turn failed, in… | string |
providerWhich model provider it runs on | string |
harnessWhich agentic loop it runs on | "native" | "claude-code" |
modelWhat its last turn ran with | string |
effortHow hard that turn was told… | string |
thinkingWhether that turn showed its reasoning | boolean |
fastWhether that turn asked for higher… | boolean |
tierHow hard its last turn looked… | "fast" | "standard" |
tierHoldWhether this conversation is pinned to… | boolean |
accountWhich connected account paid for it | string |
branchThe branch its private copy works… | string |
autoLandThis conversation's own answer to whether… | boolean |
resumeAfterOutage | boolean |
landRequestedA collaborator has asked a maintainer… | object |
emailWho asked | string |
nameTheir display name | string |
atWhen they asked, in milliseconds | number |
originWhere the conversation came from when… | object |
automationId | string |
provider | string |
channelId | string |
author | string |
forkedFromThe conversation this one was cut… | object |
conversationId | string |
index | integer |
files | "then" | "now" |
baseThe commit its private copy started… | string |
costUsdWhat it has cost so far,… | number |
inputTokensTokens sent | number |
outputTokensTokens received | number |
contextTokensHow much of the window the… | number |
contextWindowHow large that window is | number |
activityWhat it is doing at this… | object |
toolThe last tool it reached for | string |
targetWhat it reached for that tool… | string |
todoThe item on its own list… | string |
landedMessageDraftThe whole story of this merge's… | object |
startedAtWhen the drafting began, in milliseconds | number |
stepsEach model that was asked, in… | object[] |
providerWhich provider was asked | string |
modelWhich of its models | string |
statusHow this one went | "asking" | "answered" | "refused" | "skipped" |
atWhen it started being asked, in… | number |
msHow long it took | number |
reasonWhy it refused, in its own… | string |
outcomeHow it ended | "written" | "failed" |
reasonThe one-line account of a failure,… | string |
finishedAtWhen it ended, in milliseconds | number |
landedMessageWhat this conversation's merged work is… | object |
subjectOne line saying what the merged… | string |
noteThe same change said to somebody… | string |
breakingWhat this change takes away, for… | string |
startedAtWhen the running turn started, in… | number |
updatedAtWhen it last did something, in… | number |
seenAtWhen somebody last opened it, in… | number |
attentionWhich kinds of waiting-for-you it is… | object |
planIt has proposed a plan and… | boolean |
questionIt has asked you something | boolean |
permissionIt wants to use a tool… | boolean |
serviceIt wants to spend money on… | boolean |
capabilityIt needs something connected that is… | boolean |
conflictIts work cannot be merged without… | boolean |
turnsTurns it has finished | number |
toolUsesTools it has used, over its… | number |
subagentsHelper agents this one delegated to | object |
runningHelpers working right now | number |
totalHelpers it has started over its… | number |
diffEverything it has written, measured from… | object |
filesFiles touched | number |
insertionsLines added | number |
deletionsLines removed | number |
landedPresencePresent only when some of what… | object |
landedPaths this conversation merged in | number |
presentHow many of them are still… | number |
loopThe loop driving this conversation, if… | object |
stateHow the loop is going | "running" | "done" | "exhausted" | "stalled" … (7) |
iterationWhich round it is on | integer |
maxIterationsHow many rounds it will attempt… | integer |
goalWhat it is looping towards | string |
workflowThe workflow run this conversation is… | object |
runIdThe run this belongs to, which… | string |
nameThe workflow's name | string |
stepWhich step this conversation is on… | string |
indexThis step's place in the workflow,… | integer |
totalHow many steps the workflow has | integer |
archivedAtWhen it was put away, in… | number |
revWhich version of the fleet this… | number |
heldAutomations waiting at the door for… | object[] |
idThis waiting item's own id, which… | string |
automationIdWhich automation it came from | string |
payloadWhat set it off, kept whole… | string |
originWhere the message came from, kept… | object |
automationId | string |
provider | string |
channelId | string |
author | string |
titleWhat the conversation would be called | string |
conversationIdThe thread this belongs to, when… | string |
sessionIdThe provider session that thread last… | string |
createdAtWhen it started waiting, in milliseconds | number |
autoRunAtWhen it goes ahead on its… | number |
curl "$SANDBOX/agents/archived" \
-H "x-intentic-control: $INTENTIC_TOKEN"import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.agents.archived();GET/agents/searchFind a conversation
Searches the live fleet and the archive together. Both halves on purpose: the board hides finished work by design, and a filter that says it found nothing while the answer sits one click away is simply wrong.
What you send
| Field | Type | Where |
|---|---|---|
queryrequiredWhat to look for | string | query |
caseSensitiveWhether capitals matter | string | query |
What comes back
| Field | Type |
|---|---|
matchesWhat matched, from the live fleet… | object[] |
idWhich conversation matched | string |
snippetWhy, in its own words | object |
textThe matching line, with a little… | string |
speakerWho said it | "user" | "agent" |
scannedHow many conversations were actually read,… | number |
indexingWhether what was said is still… | boolean |
curl "$SANDBOX/agents/search?query=%E2%80%A6" \
-H "x-intentic-control: $INTENTIC_TOKEN"import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.agents.search({
"query": "…"
});GET/agents/{id}One conversation's card
Everything the board shows for a single conversation: its title, state, working branch, unread marker and timestamps.
What you send
| Field | Type | Where |
|---|---|---|
idrequiredWhich conversation | string | address |
What comes back
| Field | Type |
|---|---|
idThe conversation id, which is how… | string |
sessionIdThe provider session behind the last… | string |
titleWhat to call it: the first… | string |
statusWhat it is doing | "idle" | "running" | "awaiting" | "stopping" … (11) |
failureWhy the last turn failed, in… | string |
providerWhich model provider it runs on | string |
harnessWhich agentic loop it runs on | "native" | "claude-code" |
modelWhat its last turn ran with | string |
effortHow hard that turn was told… | string |
thinkingWhether that turn showed its reasoning | boolean |
fastWhether that turn asked for higher… | boolean |
tierHow hard its last turn looked… | "fast" | "standard" |
tierHoldWhether this conversation is pinned to… | boolean |
accountWhich connected account paid for it | string |
branchThe branch its private copy works… | string |
autoLandThis conversation's own answer to whether… | boolean |
resumeAfterOutage | boolean |
landRequestedA collaborator has asked a maintainer… | object |
emailWho asked | string |
nameTheir display name | string |
atWhen they asked, in milliseconds | number |
originWhere the conversation came from when… | object |
automationId | string |
provider | string |
channelId | string |
author | string |
forkedFromThe conversation this one was cut… | object |
conversationId | string |
index | integer |
files | "then" | "now" |
baseThe commit its private copy started… | string |
costUsdWhat it has cost so far,… | number |
inputTokensTokens sent | number |
outputTokensTokens received | number |
contextTokensHow much of the window the… | number |
contextWindowHow large that window is | number |
activityWhat it is doing at this… | object |
toolThe last tool it reached for | string |
targetWhat it reached for that tool… | string |
todoThe item on its own list… | string |
landedMessageDraftThe whole story of this merge's… | object |
startedAtWhen the drafting began, in milliseconds | number |
stepsEach model that was asked, in… | object[] |
providerWhich provider was asked | string |
modelWhich of its models | string |
statusHow this one went | "asking" | "answered" | "refused" | "skipped" |
atWhen it started being asked, in… | number |
msHow long it took | number |
reasonWhy it refused, in its own… | string |
outcomeHow it ended | "written" | "failed" |
reasonThe one-line account of a failure,… | string |
finishedAtWhen it ended, in milliseconds | number |
landedMessageWhat this conversation's merged work is… | object |
subjectOne line saying what the merged… | string |
noteThe same change said to somebody… | string |
breakingWhat this change takes away, for… | string |
startedAtWhen the running turn started, in… | number |
updatedAtWhen it last did something, in… | number |
seenAtWhen somebody last opened it, in… | number |
attentionWhich kinds of waiting-for-you it is… | object |
planIt has proposed a plan and… | boolean |
questionIt has asked you something | boolean |
permissionIt wants to use a tool… | boolean |
serviceIt wants to spend money on… | boolean |
capabilityIt needs something connected that is… | boolean |
conflictIts work cannot be merged without… | boolean |
turnsTurns it has finished | number |
toolUsesTools it has used, over its… | number |
subagentsHelper agents this one delegated to | object |
runningHelpers working right now | number |
totalHelpers it has started over its… | number |
diffEverything it has written, measured from… | object |
filesFiles touched | number |
insertionsLines added | number |
deletionsLines removed | number |
landedPresencePresent only when some of what… | object |
landedPaths this conversation merged in | number |
presentHow many of them are still… | number |
loopThe loop driving this conversation, if… | object |
stateHow the loop is going | "running" | "done" | "exhausted" | "stalled" … (7) |
iterationWhich round it is on | integer |
maxIterationsHow many rounds it will attempt… | integer |
goalWhat it is looping towards | string |
workflowThe workflow run this conversation is… | object |
runIdThe run this belongs to, which… | string |
nameThe workflow's name | string |
stepWhich step this conversation is on… | string |
indexThis step's place in the workflow,… | integer |
totalHow many steps the workflow has | integer |
archivedAtWhen it was put away, in… | number |
curl "$SANDBOX/agents/a1b2c3d4" \
-H "x-intentic-control: $INTENTIC_TOKEN"import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.agents.get({
"id": "a1b2c3d4"
});GET/agents/{id}/transcriptThe full conversation record
Every message in one conversation, in order, including the tool calls and their results. This is the record the chat replays and the next turn is seeded from.
What you send
| Field | Type | Where |
|---|---|---|
idrequiredWhich conversation | string | address |
What comes back
| Field | Type |
|---|---|
messagesThe conversation, in order | object[] |
roleWho said it | "user" | "assistant" | "notice" |
textThe words | string |
sentAtWhen it was sent, in milliseconds | number |
attachmentsFiles attached to this message, as… | string[] |
checkpointIdThe saved point this message can… | string |
thinkingWhat the agent was reasoning about | string |
toolsThe tool calls this part of… | object[] |
idThe call's id | string |
nameWhich tool | string |
categoryWhat kind of thing it does:… | "read" | "edit" | "delete" | "move" … (9) |
statusHow it went | "pending" | "in_progress" | "completed" | "failed" |
targetWhat it acted on, in one… | string |
locationsThe files it touched | object[] |
pathThe file, as a workspace path,… | string |
lineWhich line, counting from one | number |
contentWhat it produced: text, a change… | object[] |
typePlain output | "text" |
textWhat the tool said | string |
childrenCalls a delegated helper made, nested… | object[] |
idThe call's id | string |
nameWhich tool | string |
categoryWhat kind of thing it does:… | "read" | "edit" | "delete" | "move" … (9) |
statusHow it went | "pending" | "in_progress" | "completed" | "failed" |
targetWhat it acted on, in one… | string |
locationsThe files it touched | object[] |
contentWhat it produced: text, a change… | object[] |
childrenCalls a delegated helper made, nested… | object[] |
thinkingWhat the agent was reasoning about… | string |
thinkingWhat the agent was reasoning about… | string |
notesWhat the sandbox added to this… | object[] |
titleThe one line a reader sees,… | string |
textThe note itself, which is also… | string |
placedA person wrote this in the… | boolean |
noticeActionA one-press follow-up this recorded notice… | "tierHold" |
sessionIdThe provider session behind the last… | string |
curl "$SANDBOX/agents/a1b2c3d4/transcript" \
-H "x-intentic-control: $INTENTIC_TOKEN"import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.agents.transcript({
"id": "a1b2c3d4"
});POST/agents/{id}/placePut words in the agent's mouth
Writes a line into the record as though the agent had said it, with no turn behind it and no reply. Human readers see it marked as placed. The next real turn starts fresh from the record, where the line reads as the agent's own. Refused while a turn is running.
What you send
| Field | Type | Where |
|---|---|---|
idrequiredWhich conversation | string | address |
textrequiredThe words to put in the… | string | body |
What comes back
| Field | Type |
|---|---|
okAlways true | true |
curl -X POST "$SANDBOX/agents/a1b2c3d4/place" \
-H "x-intentic-control: $INTENTIC_TOKEN" \
-H "content-type: application/json" \
-d '{"text":"export const start = () => listen(PORT);\n"}'import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.agents.place({
"id": "a1b2c3d4",
"text": "export const start = () => listen(PORT);\n"
});POST/agents/{id}/renameRetitle a conversation
Sets the title a person chose, replacing the one that was generated. Allowed while the conversation is working, and it does not count as activity.
What you send
| Field | Type | Where |
|---|---|---|
idrequiredWhich conversation | string | address |
titlerequiredWhat to call it from now… | string | body |
What comes back
| Field | Type |
|---|---|
idThe conversation id, which is how… | string |
sessionIdThe provider session behind the last… | string |
titleWhat to call it: the first… | string |
statusWhat it is doing | "idle" | "running" | "awaiting" | "stopping" … (11) |
failureWhy the last turn failed, in… | string |
providerWhich model provider it runs on | string |
harnessWhich agentic loop it runs on | "native" | "claude-code" |
modelWhat its last turn ran with | string |
effortHow hard that turn was told… | string |
thinkingWhether that turn showed its reasoning | boolean |
fastWhether that turn asked for higher… | boolean |
tierHow hard its last turn looked… | "fast" | "standard" |
tierHoldWhether this conversation is pinned to… | boolean |
accountWhich connected account paid for it | string |
branchThe branch its private copy works… | string |
autoLandThis conversation's own answer to whether… | boolean |
resumeAfterOutage | boolean |
landRequestedA collaborator has asked a maintainer… | object |
emailWho asked | string |
nameTheir display name | string |
atWhen they asked, in milliseconds | number |
originWhere the conversation came from when… | object |
automationId | string |
provider | string |
channelId | string |
author | string |
forkedFromThe conversation this one was cut… | object |
conversationId | string |
index | integer |
files | "then" | "now" |
baseThe commit its private copy started… | string |
costUsdWhat it has cost so far,… | number |
inputTokensTokens sent | number |
outputTokensTokens received | number |
contextTokensHow much of the window the… | number |
contextWindowHow large that window is | number |
activityWhat it is doing at this… | object |
toolThe last tool it reached for | string |
targetWhat it reached for that tool… | string |
todoThe item on its own list… | string |
landedMessageDraftThe whole story of this merge's… | object |
startedAtWhen the drafting began, in milliseconds | number |
stepsEach model that was asked, in… | object[] |
providerWhich provider was asked | string |
modelWhich of its models | string |
statusHow this one went | "asking" | "answered" | "refused" | "skipped" |
atWhen it started being asked, in… | number |
msHow long it took | number |
reasonWhy it refused, in its own… | string |
outcomeHow it ended | "written" | "failed" |
reasonThe one-line account of a failure,… | string |
finishedAtWhen it ended, in milliseconds | number |
landedMessageWhat this conversation's merged work is… | object |
subjectOne line saying what the merged… | string |
noteThe same change said to somebody… | string |
breakingWhat this change takes away, for… | string |
startedAtWhen the running turn started, in… | number |
updatedAtWhen it last did something, in… | number |
seenAtWhen somebody last opened it, in… | number |
attentionWhich kinds of waiting-for-you it is… | object |
planIt has proposed a plan and… | boolean |
questionIt has asked you something | boolean |
permissionIt wants to use a tool… | boolean |
serviceIt wants to spend money on… | boolean |
capabilityIt needs something connected that is… | boolean |
conflictIts work cannot be merged without… | boolean |
turnsTurns it has finished | number |
toolUsesTools it has used, over its… | number |
subagentsHelper agents this one delegated to | object |
runningHelpers working right now | number |
totalHelpers it has started over its… | number |
diffEverything it has written, measured from… | object |
filesFiles touched | number |
insertionsLines added | number |
deletionsLines removed | number |
landedPresencePresent only when some of what… | object |
landedPaths this conversation merged in | number |
presentHow many of them are still… | number |
loopThe loop driving this conversation, if… | object |
stateHow the loop is going | "running" | "done" | "exhausted" | "stalled" … (7) |
iterationWhich round it is on | integer |
maxIterationsHow many rounds it will attempt… | integer |
goalWhat it is looping towards | string |
workflowThe workflow run this conversation is… | object |
runIdThe run this belongs to, which… | string |
nameThe workflow's name | string |
stepWhich step this conversation is on… | string |
indexThis step's place in the workflow,… | integer |
totalHow many steps the workflow has | integer |
archivedAtWhen it was put away, in… | number |
curl -X POST "$SANDBOX/agents/a1b2c3d4/rename" \
-H "x-intentic-control: $INTENTIC_TOKEN" \
-H "content-type: application/json" \
-d '{"title":"Update the changelog"}'import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.agents.rename({
"id": "a1b2c3d4",
"title": "Update the changelog"
});POST/agents/{id}/auto-landWhether this conversation merges its work automatically
Overrides the sandbox-wide setting for one conversation; clear it to go back to following the default. Deliberately allowed mid-turn, because the setting is read when the turn finishes, so flipping it while the agent works means exactly hold this piece of work for review.
What you send
| Field | Type | Where |
|---|---|---|
idrequiredWhich conversation | string | address |
autoLandrequiredWhether its work merges automatically when… | boolean | null | body |
What comes back
| Field | Type |
|---|---|
idThe conversation id, which is how… | string |
sessionIdThe provider session behind the last… | string |
titleWhat to call it: the first… | string |
statusWhat it is doing | "idle" | "running" | "awaiting" | "stopping" … (11) |
failureWhy the last turn failed, in… | string |
providerWhich model provider it runs on | string |
harnessWhich agentic loop it runs on | "native" | "claude-code" |
modelWhat its last turn ran with | string |
effortHow hard that turn was told… | string |
thinkingWhether that turn showed its reasoning | boolean |
fastWhether that turn asked for higher… | boolean |
tierHow hard its last turn looked… | "fast" | "standard" |
tierHoldWhether this conversation is pinned to… | boolean |
accountWhich connected account paid for it | string |
branchThe branch its private copy works… | string |
autoLandThis conversation's own answer to whether… | boolean |
resumeAfterOutage | boolean |
landRequestedA collaborator has asked a maintainer… | object |
emailWho asked | string |
nameTheir display name | string |
atWhen they asked, in milliseconds | number |
originWhere the conversation came from when… | object |
automationId | string |
provider | string |
channelId | string |
author | string |
forkedFromThe conversation this one was cut… | object |
conversationId | string |
index | integer |
files | "then" | "now" |
baseThe commit its private copy started… | string |
costUsdWhat it has cost so far,… | number |
inputTokensTokens sent | number |
outputTokensTokens received | number |
contextTokensHow much of the window the… | number |
contextWindowHow large that window is | number |
activityWhat it is doing at this… | object |
toolThe last tool it reached for | string |
targetWhat it reached for that tool… | string |
todoThe item on its own list… | string |
landedMessageDraftThe whole story of this merge's… | object |
startedAtWhen the drafting began, in milliseconds | number |
stepsEach model that was asked, in… | object[] |
providerWhich provider was asked | string |
modelWhich of its models | string |
statusHow this one went | "asking" | "answered" | "refused" | "skipped" |
atWhen it started being asked, in… | number |
msHow long it took | number |
reasonWhy it refused, in its own… | string |
outcomeHow it ended | "written" | "failed" |
reasonThe one-line account of a failure,… | string |
finishedAtWhen it ended, in milliseconds | number |
landedMessageWhat this conversation's merged work is… | object |
subjectOne line saying what the merged… | string |
noteThe same change said to somebody… | string |
breakingWhat this change takes away, for… | string |
startedAtWhen the running turn started, in… | number |
updatedAtWhen it last did something, in… | number |
seenAtWhen somebody last opened it, in… | number |
attentionWhich kinds of waiting-for-you it is… | object |
planIt has proposed a plan and… | boolean |
questionIt has asked you something | boolean |
permissionIt wants to use a tool… | boolean |
serviceIt wants to spend money on… | boolean |
capabilityIt needs something connected that is… | boolean |
conflictIts work cannot be merged without… | boolean |
turnsTurns it has finished | number |
toolUsesTools it has used, over its… | number |
subagentsHelper agents this one delegated to | object |
runningHelpers working right now | number |
totalHelpers it has started over its… | number |
diffEverything it has written, measured from… | object |
filesFiles touched | number |
insertionsLines added | number |
deletionsLines removed | number |
landedPresencePresent only when some of what… | object |
landedPaths this conversation merged in | number |
presentHow many of them are still… | number |
loopThe loop driving this conversation, if… | object |
stateHow the loop is going | "running" | "done" | "exhausted" | "stalled" … (7) |
iterationWhich round it is on | integer |
maxIterationsHow many rounds it will attempt… | integer |
goalWhat it is looping towards | string |
workflowThe workflow run this conversation is… | object |
runIdThe run this belongs to, which… | string |
nameThe workflow's name | string |
stepWhich step this conversation is on… | string |
indexThis step's place in the workflow,… | integer |
totalHow many steps the workflow has | integer |
archivedAtWhen it was put away, in… | number |
curl -X POST "$SANDBOX/agents/a1b2c3d4/auto-land" \
-H "x-intentic-control: $INTENTIC_TOKEN" \
-H "content-type: application/json" \
-d '{"autoLand":true}'import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.agents.autoLand({
"id": "a1b2c3d4",
"autoLand": true
});POST/agents/{id}/resume-after-outageWhether this conversation retries after a provider outage
Overrides the sandbox-wide setting for one conversation; clear it to follow the default again. This is what the offer shown when a turn dies writes, because the press happens inside one conversation and honestly means finish this piece of work.
What you send
| Field | Type | Where |
|---|---|---|
idrequiredWhich conversation | string | address |
resumeAfterOutagerequiredWhether it retries by itself when… | boolean | null | body |
What comes back
| Field | Type |
|---|---|
idThe conversation id, which is how… | string |
sessionIdThe provider session behind the last… | string |
titleWhat to call it: the first… | string |
statusWhat it is doing | "idle" | "running" | "awaiting" | "stopping" … (11) |
failureWhy the last turn failed, in… | string |
providerWhich model provider it runs on | string |
harnessWhich agentic loop it runs on | "native" | "claude-code" |
modelWhat its last turn ran with | string |
effortHow hard that turn was told… | string |
thinkingWhether that turn showed its reasoning | boolean |
fastWhether that turn asked for higher… | boolean |
tierHow hard its last turn looked… | "fast" | "standard" |
tierHoldWhether this conversation is pinned to… | boolean |
accountWhich connected account paid for it | string |
branchThe branch its private copy works… | string |
autoLandThis conversation's own answer to whether… | boolean |
resumeAfterOutage | boolean |
landRequestedA collaborator has asked a maintainer… | object |
emailWho asked | string |
nameTheir display name | string |
atWhen they asked, in milliseconds | number |
originWhere the conversation came from when… | object |
automationId | string |
provider | string |
channelId | string |
author | string |
forkedFromThe conversation this one was cut… | object |
conversationId | string |
index | integer |
files | "then" | "now" |
baseThe commit its private copy started… | string |
costUsdWhat it has cost so far,… | number |
inputTokensTokens sent | number |
outputTokensTokens received | number |
contextTokensHow much of the window the… | number |
contextWindowHow large that window is | number |
activityWhat it is doing at this… | object |
toolThe last tool it reached for | string |
targetWhat it reached for that tool… | string |
todoThe item on its own list… | string |
landedMessageDraftThe whole story of this merge's… | object |
startedAtWhen the drafting began, in milliseconds | number |
stepsEach model that was asked, in… | object[] |
providerWhich provider was asked | string |
modelWhich of its models | string |
statusHow this one went | "asking" | "answered" | "refused" | "skipped" |
atWhen it started being asked, in… | number |
msHow long it took | number |
reasonWhy it refused, in its own… | string |
outcomeHow it ended | "written" | "failed" |
reasonThe one-line account of a failure,… | string |
finishedAtWhen it ended, in milliseconds | number |
landedMessageWhat this conversation's merged work is… | object |
subjectOne line saying what the merged… | string |
noteThe same change said to somebody… | string |
breakingWhat this change takes away, for… | string |
startedAtWhen the running turn started, in… | number |
updatedAtWhen it last did something, in… | number |
seenAtWhen somebody last opened it, in… | number |
attentionWhich kinds of waiting-for-you it is… | object |
planIt has proposed a plan and… | boolean |
questionIt has asked you something | boolean |
permissionIt wants to use a tool… | boolean |
serviceIt wants to spend money on… | boolean |
capabilityIt needs something connected that is… | boolean |
conflictIts work cannot be merged without… | boolean |
turnsTurns it has finished | number |
toolUsesTools it has used, over its… | number |
subagentsHelper agents this one delegated to | object |
runningHelpers working right now | number |
totalHelpers it has started over its… | number |
diffEverything it has written, measured from… | object |
filesFiles touched | number |
insertionsLines added | number |
deletionsLines removed | number |
landedPresencePresent only when some of what… | object |
landedPaths this conversation merged in | number |
presentHow many of them are still… | number |
loopThe loop driving this conversation, if… | object |
stateHow the loop is going | "running" | "done" | "exhausted" | "stalled" … (7) |
iterationWhich round it is on | integer |
maxIterationsHow many rounds it will attempt… | integer |
goalWhat it is looping towards | string |
workflowThe workflow run this conversation is… | object |
runIdThe run this belongs to, which… | string |
nameThe workflow's name | string |
stepWhich step this conversation is on… | string |
indexThis step's place in the workflow,… | integer |
totalHow many steps the workflow has | integer |
archivedAtWhen it was put away, in… | number |
curl -X POST "$SANDBOX/agents/a1b2c3d4/resume-after-outage" \
-H "x-intentic-control: $INTENTIC_TOKEN" \
-H "content-type: application/json" \
-d '{"resumeAfterOutage":true}'import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.agents.resumeAfterOutage({
"id": "a1b2c3d4",
"resumeAfterOutage": true
});POST/agents/{id}/seenMark a conversation read
Stamps the read marker behind the unread badge on one card. Allowed while the conversation is working, and reading never counts as activity.
What you send
| Field | Type | Where |
|---|---|---|
idrequiredWhich conversation | string | address |
What comes back
| Field | Type |
|---|---|
idThe conversation id, which is how… | string |
sessionIdThe provider session behind the last… | string |
titleWhat to call it: the first… | string |
statusWhat it is doing | "idle" | "running" | "awaiting" | "stopping" … (11) |
failureWhy the last turn failed, in… | string |
providerWhich model provider it runs on | string |
harnessWhich agentic loop it runs on | "native" | "claude-code" |
modelWhat its last turn ran with | string |
effortHow hard that turn was told… | string |
thinkingWhether that turn showed its reasoning | boolean |
fastWhether that turn asked for higher… | boolean |
tierHow hard its last turn looked… | "fast" | "standard" |
tierHoldWhether this conversation is pinned to… | boolean |
accountWhich connected account paid for it | string |
branchThe branch its private copy works… | string |
autoLandThis conversation's own answer to whether… | boolean |
resumeAfterOutage | boolean |
landRequestedA collaborator has asked a maintainer… | object |
emailWho asked | string |
nameTheir display name | string |
atWhen they asked, in milliseconds | number |
originWhere the conversation came from when… | object |
automationId | string |
provider | string |
channelId | string |
author | string |
forkedFromThe conversation this one was cut… | object |
conversationId | string |
index | integer |
files | "then" | "now" |
baseThe commit its private copy started… | string |
costUsdWhat it has cost so far,… | number |
inputTokensTokens sent | number |
outputTokensTokens received | number |
contextTokensHow much of the window the… | number |
contextWindowHow large that window is | number |
activityWhat it is doing at this… | object |
toolThe last tool it reached for | string |
targetWhat it reached for that tool… | string |
todoThe item on its own list… | string |
landedMessageDraftThe whole story of this merge's… | object |
startedAtWhen the drafting began, in milliseconds | number |
stepsEach model that was asked, in… | object[] |
providerWhich provider was asked | string |
modelWhich of its models | string |
statusHow this one went | "asking" | "answered" | "refused" | "skipped" |
atWhen it started being asked, in… | number |
msHow long it took | number |
reasonWhy it refused, in its own… | string |
outcomeHow it ended | "written" | "failed" |
reasonThe one-line account of a failure,… | string |
finishedAtWhen it ended, in milliseconds | number |
landedMessageWhat this conversation's merged work is… | object |
subjectOne line saying what the merged… | string |
noteThe same change said to somebody… | string |
breakingWhat this change takes away, for… | string |
startedAtWhen the running turn started, in… | number |
updatedAtWhen it last did something, in… | number |
seenAtWhen somebody last opened it, in… | number |
attentionWhich kinds of waiting-for-you it is… | object |
planIt has proposed a plan and… | boolean |
questionIt has asked you something | boolean |
permissionIt wants to use a tool… | boolean |
serviceIt wants to spend money on… | boolean |
capabilityIt needs something connected that is… | boolean |
conflictIts work cannot be merged without… | boolean |
turnsTurns it has finished | number |
toolUsesTools it has used, over its… | number |
subagentsHelper agents this one delegated to | object |
runningHelpers working right now | number |
totalHelpers it has started over its… | number |
diffEverything it has written, measured from… | object |
filesFiles touched | number |
insertionsLines added | number |
deletionsLines removed | number |
landedPresencePresent only when some of what… | object |
landedPaths this conversation merged in | number |
presentHow many of them are still… | number |
loopThe loop driving this conversation, if… | object |
stateHow the loop is going | "running" | "done" | "exhausted" | "stalled" … (7) |
iterationWhich round it is on | integer |
maxIterationsHow many rounds it will attempt… | integer |
goalWhat it is looping towards | string |
workflowThe workflow run this conversation is… | object |
runIdThe run this belongs to, which… | string |
nameThe workflow's name | string |
stepWhich step this conversation is on… | string |
indexThis step's place in the workflow,… | integer |
totalHow many steps the workflow has | integer |
archivedAtWhen it was put away, in… | number |
curl -X POST "$SANDBOX/agents/a1b2c3d4/seen" \
-H "x-intentic-control: $INTENTIC_TOKEN"import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.agents.seen({
"id": "a1b2c3d4"
});POST/agents/seenMark every conversation read
Clears the unread badge across the whole fleet at once, and hands the refreshed list back.
What you send
Nothing. Call it as it is.
What comes back
| Field | Type |
|---|---|
agentsThe conversations | object[] |
idThe conversation id, which is how… | string |
sessionIdThe provider session behind the last… | string |
titleWhat to call it: the first… | string |
statusWhat it is doing | "idle" | "running" | "awaiting" | "stopping" … (11) |
failureWhy the last turn failed, in… | string |
providerWhich model provider it runs on | string |
harnessWhich agentic loop it runs on | "native" | "claude-code" |
modelWhat its last turn ran with | string |
effortHow hard that turn was told… | string |
thinkingWhether that turn showed its reasoning | boolean |
fastWhether that turn asked for higher… | boolean |
tierHow hard its last turn looked… | "fast" | "standard" |
tierHoldWhether this conversation is pinned to… | boolean |
accountWhich connected account paid for it | string |
branchThe branch its private copy works… | string |
autoLandThis conversation's own answer to whether… | boolean |
resumeAfterOutage | boolean |
landRequestedA collaborator has asked a maintainer… | object |
emailWho asked | string |
nameTheir display name | string |
atWhen they asked, in milliseconds | number |
originWhere the conversation came from when… | object |
automationId | string |
provider | string |
channelId | string |
author | string |
forkedFromThe conversation this one was cut… | object |
conversationId | string |
index | integer |
files | "then" | "now" |
baseThe commit its private copy started… | string |
costUsdWhat it has cost so far,… | number |
inputTokensTokens sent | number |
outputTokensTokens received | number |
contextTokensHow much of the window the… | number |
contextWindowHow large that window is | number |
activityWhat it is doing at this… | object |
toolThe last tool it reached for | string |
targetWhat it reached for that tool… | string |
todoThe item on its own list… | string |
landedMessageDraftThe whole story of this merge's… | object |
startedAtWhen the drafting began, in milliseconds | number |
stepsEach model that was asked, in… | object[] |
providerWhich provider was asked | string |
modelWhich of its models | string |
statusHow this one went | "asking" | "answered" | "refused" | "skipped" |
atWhen it started being asked, in… | number |
msHow long it took | number |
reasonWhy it refused, in its own… | string |
outcomeHow it ended | "written" | "failed" |
reasonThe one-line account of a failure,… | string |
finishedAtWhen it ended, in milliseconds | number |
landedMessageWhat this conversation's merged work is… | object |
subjectOne line saying what the merged… | string |
noteThe same change said to somebody… | string |
breakingWhat this change takes away, for… | string |
startedAtWhen the running turn started, in… | number |
updatedAtWhen it last did something, in… | number |
seenAtWhen somebody last opened it, in… | number |
attentionWhich kinds of waiting-for-you it is… | object |
planIt has proposed a plan and… | boolean |
questionIt has asked you something | boolean |
permissionIt wants to use a tool… | boolean |
serviceIt wants to spend money on… | boolean |
capabilityIt needs something connected that is… | boolean |
conflictIts work cannot be merged without… | boolean |
turnsTurns it has finished | number |
toolUsesTools it has used, over its… | number |
subagentsHelper agents this one delegated to | object |
runningHelpers working right now | number |
totalHelpers it has started over its… | number |
diffEverything it has written, measured from… | object |
filesFiles touched | number |
insertionsLines added | number |
deletionsLines removed | number |
landedPresencePresent only when some of what… | object |
landedPaths this conversation merged in | number |
presentHow many of them are still… | number |
loopThe loop driving this conversation, if… | object |
stateHow the loop is going | "running" | "done" | "exhausted" | "stalled" … (7) |
iterationWhich round it is on | integer |
maxIterationsHow many rounds it will attempt… | integer |
goalWhat it is looping towards | string |
workflowThe workflow run this conversation is… | object |
runIdThe run this belongs to, which… | string |
nameThe workflow's name | string |
stepWhich step this conversation is on… | string |
indexThis step's place in the workflow,… | integer |
totalHow many steps the workflow has | integer |
archivedAtWhen it was put away, in… | number |
revWhich version of the fleet this… | number |
heldAutomations waiting at the door for… | object[] |
idThis waiting item's own id, which… | string |
automationIdWhich automation it came from | string |
payloadWhat set it off, kept whole… | string |
originWhere the message came from, kept… | object |
automationId | string |
provider | string |
channelId | string |
author | string |
titleWhat the conversation would be called | string |
conversationIdThe thread this belongs to, when… | string |
sessionIdThe provider session that thread last… | string |
createdAtWhen it started waiting, in milliseconds | number |
autoRunAtWhen it goes ahead on its… | number |
curl -X POST "$SANDBOX/agents/seen" \
-H "x-intentic-control: $INTENTIC_TOKEN"import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.agents.seenAll();GET/agents/{id}/diffEverything a conversation has changed
One flat set of changed files per repo, measured against where each repo stood when the conversation started, with every file flagged as already merged or not. Not the staged-and-unstaged shape a working copy has, because nobody ever checks this branch out to stage into it.
What you send
| Field | Type | Where |
|---|---|---|
idrequiredWhich conversation | string | address |
What comes back
| Field | Type |
|---|---|
reposOne entry per repository the conversation… | object[] |
repoWhich repository | string |
branchThe branch this conversation's work sits… | string |
changesWhat it changed there | object[] |
pathThe path, relative to the repository… | string |
statusWhat happened to it | "added" | "modified" | "deleted" | "renamed" … (6) |
fromWhere a renamed file came from | string |
additionsLines added | number |
deletionsLines removed | number |
landedWhether this change is already in… | boolean |
modulesThe packages of the tree these… | object[] |
dirWhere the package lives, relative to… | string |
nameThe name the package declares for… | string |
conflictsWhy the last merge refused, when… | object[] |
repoWhich repository | string |
pathsThe files that genuinely would not… | object[] |
pathWhich file | string |
reasonWhy it would not merge, and… | "workspace" | "diverged" | "binary" |
cleanHow many files would apply regardless,… | number |
mainBranchThe branch your own checkout is… | string |
curl "$SANDBOX/agents/a1b2c3d4/diff" \
-H "x-intentic-control: $INTENTIC_TOKEN"import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.agents.diff({
"id": "a1b2c3d4"
});GET/agents/{id}/{repo}/file-diffOne file's before and after in a conversation's work
Both sides of a single file: what it held when the conversation started and what it holds on its branch now.
What you send
| Field | Type | Where |
|---|---|---|
idrequiredWhich conversation | string | address |
reporequiredWhich repository | string | address |
pathrequiredWhich file, relative to that repository | string | query |
What comes back
| Field | Type |
|---|---|
beforeThe whole file as it was | string |
afterThe whole file as it is… | string |
binaryThe file is not text, so… | boolean |
truncatedThe file was too large to… | boolean |
curl "$SANDBOX/agents/a1b2c3d4/root/file-diff?path=src%2Fapp.ts" \
-H "x-intentic-control: $INTENTIC_TOKEN"import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.agents.fileDiff({
"id": "a1b2c3d4",
"repo": "root",
"path": "src/app.ts"
});POST/agents/{id}/landMerge a conversation's work into the workspace
Brings the conversation's branches into the main tree, one repo at a time. A conflict is reported rather than raised and nothing is lost when it fails. Refused while a turn is running, and refused for a conversation that works directly in the shared tree, which has nothing to merge.
What you send
| Field | Type | Where |
|---|---|---|
idrequiredWhich conversation's work to merge | string | address |
modeHow to apply it | "check" | "merge" | "measure" | body |
spanHow much of the work to… | "cumulative" | "outstanding" | body |
forceGo ahead despite a check that… | boolean | body |
What comes back
| Field | Type |
|---|---|
landedWhether anything was applied | boolean |
conflictsWhat stopped it, per repository | object[] |
repoWhich repository | string |
pathsThe files that genuinely would not… | object[] |
pathWhich file | string |
reasonWhy it would not merge, and… | "workspace" | "diverged" | "binary" |
cleanHow many files would apply regardless,… | number |
mainBranchThe branch your own checkout is… | string |
resolvingFiles left half-merged, when you asked… | object[] |
repoWhich repository | string |
pathsWhich files now hold conflict markers… | string[] |
heldNothing was applied and nothing failed:… | boolean |
curl -X POST "$SANDBOX/agents/a1b2c3d4/land" \
-H "x-intentic-control: $INTENTIC_TOKEN" \
-H "content-type: application/json" \
-d '{"mode":"check","span":"cumulative","force":false}'import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.agents.land({
"id": "a1b2c3d4",
"mode": "check",
"span": "cumulative",
"force": false
});POST/agents/{id}/request-landAsk a maintainer to merge this work
For a collaborator who is not allowed to merge: marks the conversation as waiting for review, with who asked. The request shows on every maintainer's board and clears when somebody merges or discards it.
What you send
| Field | Type | Where |
|---|---|---|
idrequiredWhich conversation | string | address |
What comes back
| Field | Type |
|---|---|
idThe conversation id, which is how… | string |
sessionIdThe provider session behind the last… | string |
titleWhat to call it: the first… | string |
statusWhat it is doing | "idle" | "running" | "awaiting" | "stopping" … (11) |
failureWhy the last turn failed, in… | string |
providerWhich model provider it runs on | string |
harnessWhich agentic loop it runs on | "native" | "claude-code" |
modelWhat its last turn ran with | string |
effortHow hard that turn was told… | string |
thinkingWhether that turn showed its reasoning | boolean |
fastWhether that turn asked for higher… | boolean |
tierHow hard its last turn looked… | "fast" | "standard" |
tierHoldWhether this conversation is pinned to… | boolean |
accountWhich connected account paid for it | string |
branchThe branch its private copy works… | string |
autoLandThis conversation's own answer to whether… | boolean |
resumeAfterOutage | boolean |
landRequestedA collaborator has asked a maintainer… | object |
emailWho asked | string |
nameTheir display name | string |
atWhen they asked, in milliseconds | number |
originWhere the conversation came from when… | object |
automationId | string |
provider | string |
channelId | string |
author | string |
forkedFromThe conversation this one was cut… | object |
conversationId | string |
index | integer |
files | "then" | "now" |
baseThe commit its private copy started… | string |
costUsdWhat it has cost so far,… | number |
inputTokensTokens sent | number |
outputTokensTokens received | number |
contextTokensHow much of the window the… | number |
contextWindowHow large that window is | number |
activityWhat it is doing at this… | object |
toolThe last tool it reached for | string |
targetWhat it reached for that tool… | string |
todoThe item on its own list… | string |
landedMessageDraftThe whole story of this merge's… | object |
startedAtWhen the drafting began, in milliseconds | number |
stepsEach model that was asked, in… | object[] |
providerWhich provider was asked | string |
modelWhich of its models | string |
statusHow this one went | "asking" | "answered" | "refused" | "skipped" |
atWhen it started being asked, in… | number |
msHow long it took | number |
reasonWhy it refused, in its own… | string |
outcomeHow it ended | "written" | "failed" |
reasonThe one-line account of a failure,… | string |
finishedAtWhen it ended, in milliseconds | number |
landedMessageWhat this conversation's merged work is… | object |
subjectOne line saying what the merged… | string |
noteThe same change said to somebody… | string |
breakingWhat this change takes away, for… | string |
startedAtWhen the running turn started, in… | number |
updatedAtWhen it last did something, in… | number |
seenAtWhen somebody last opened it, in… | number |
attentionWhich kinds of waiting-for-you it is… | object |
planIt has proposed a plan and… | boolean |
questionIt has asked you something | boolean |
permissionIt wants to use a tool… | boolean |
serviceIt wants to spend money on… | boolean |
capabilityIt needs something connected that is… | boolean |
conflictIts work cannot be merged without… | boolean |
turnsTurns it has finished | number |
toolUsesTools it has used, over its… | number |
subagentsHelper agents this one delegated to | object |
runningHelpers working right now | number |
totalHelpers it has started over its… | number |
diffEverything it has written, measured from… | object |
filesFiles touched | number |
insertionsLines added | number |
deletionsLines removed | number |
landedPresencePresent only when some of what… | object |
landedPaths this conversation merged in | number |
presentHow many of them are still… | number |
loopThe loop driving this conversation, if… | object |
stateHow the loop is going | "running" | "done" | "exhausted" | "stalled" … (7) |
iterationWhich round it is on | integer |
maxIterationsHow many rounds it will attempt… | integer |
goalWhat it is looping towards | string |
workflowThe workflow run this conversation is… | object |
runIdThe run this belongs to, which… | string |
nameThe workflow's name | string |
stepWhich step this conversation is on… | string |
indexThis step's place in the workflow,… | integer |
totalHow many steps the workflow has | integer |
archivedAtWhen it was put away, in… | number |
curl -X POST "$SANDBOX/agents/a1b2c3d4/request-land" \
-H "x-intentic-control: $INTENTIC_TOKEN"import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.agents.requestLand({
"id": "a1b2c3d4"
});POST/agents/{id}/discardThrow a conversation's work away
Deletes the conversation's working copies, its branches and its entry. Nothing is kept. Refused while a turn is running, and refused for a conversation working in the shared tree.
What you send
| Field | Type | Where |
|---|---|---|
idrequiredWhich conversation | string | address |
What comes back
| Field | Type |
|---|---|
okAlways true | true |
curl -X POST "$SANDBOX/agents/a1b2c3d4/discard" \
-H "x-intentic-control: $INTENTIC_TOKEN"import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.agents.discard({
"id": "a1b2c3d4"
});POST/agents/archivePut conversations away
The gentle counterpart to discarding. Commits whatever the conversation still has in progress onto its own branch, releases its working copy, and keeps the entry and the record. It leaves the live fleet and joins the archive. Refused for a conversation that is running.
What you send
| Field | Type | Where |
|---|---|---|
idsWhich conversations to put away | string[] | body |
What comes back
| Field | Type |
|---|---|
movedWhat actually moved, whole, rather than… | object[] |
idThe conversation id, which is how… | string |
sessionIdThe provider session behind the last… | string |
titleWhat to call it: the first… | string |
statusWhat it is doing | "idle" | "running" | "awaiting" | "stopping" … (11) |
failureWhy the last turn failed, in… | string |
providerWhich model provider it runs on | string |
harnessWhich agentic loop it runs on | "native" | "claude-code" |
modelWhat its last turn ran with | string |
effortHow hard that turn was told… | string |
thinkingWhether that turn showed its reasoning | boolean |
fastWhether that turn asked for higher… | boolean |
tierHow hard its last turn looked… | "fast" | "standard" |
tierHoldWhether this conversation is pinned to… | boolean |
accountWhich connected account paid for it | string |
branchThe branch its private copy works… | string |
autoLandThis conversation's own answer to whether… | boolean |
resumeAfterOutage | boolean |
landRequestedA collaborator has asked a maintainer… | object |
emailWho asked | string |
nameTheir display name | string |
atWhen they asked, in milliseconds | number |
originWhere the conversation came from when… | object |
automationId | string |
provider | string |
channelId | string |
author | string |
forkedFromThe conversation this one was cut… | object |
conversationId | string |
index | integer |
files | "then" | "now" |
baseThe commit its private copy started… | string |
costUsdWhat it has cost so far,… | number |
inputTokensTokens sent | number |
outputTokensTokens received | number |
contextTokensHow much of the window the… | number |
contextWindowHow large that window is | number |
activityWhat it is doing at this… | object |
toolThe last tool it reached for | string |
targetWhat it reached for that tool… | string |
todoThe item on its own list… | string |
landedMessageDraftThe whole story of this merge's… | object |
startedAtWhen the drafting began, in milliseconds | number |
stepsEach model that was asked, in… | object[] |
providerWhich provider was asked | string |
modelWhich of its models | string |
statusHow this one went | "asking" | "answered" | "refused" | "skipped" |
atWhen it started being asked, in… | number |
msHow long it took | number |
reasonWhy it refused, in its own… | string |
outcomeHow it ended | "written" | "failed" |
reasonThe one-line account of a failure,… | string |
finishedAtWhen it ended, in milliseconds | number |
landedMessageWhat this conversation's merged work is… | object |
subjectOne line saying what the merged… | string |
noteThe same change said to somebody… | string |
breakingWhat this change takes away, for… | string |
startedAtWhen the running turn started, in… | number |
updatedAtWhen it last did something, in… | number |
seenAtWhen somebody last opened it, in… | number |
attentionWhich kinds of waiting-for-you it is… | object |
planIt has proposed a plan and… | boolean |
questionIt has asked you something | boolean |
permissionIt wants to use a tool… | boolean |
serviceIt wants to spend money on… | boolean |
capabilityIt needs something connected that is… | boolean |
conflictIts work cannot be merged without… | boolean |
turnsTurns it has finished | number |
toolUsesTools it has used, over its… | number |
subagentsHelper agents this one delegated to | object |
runningHelpers working right now | number |
totalHelpers it has started over its… | number |
diffEverything it has written, measured from… | object |
filesFiles touched | number |
insertionsLines added | number |
deletionsLines removed | number |
landedPresencePresent only when some of what… | object |
landedPaths this conversation merged in | number |
presentHow many of them are still… | number |
loopThe loop driving this conversation, if… | object |
stateHow the loop is going | "running" | "done" | "exhausted" | "stalled" … (7) |
iterationWhich round it is on | integer |
maxIterationsHow many rounds it will attempt… | integer |
goalWhat it is looping towards | string |
workflowThe workflow run this conversation is… | object |
runIdThe run this belongs to, which… | string |
nameThe workflow's name | string |
stepWhich step this conversation is on… | string |
indexThis step's place in the workflow,… | integer |
totalHow many steps the workflow has | integer |
archivedAtWhen it was put away, in… | number |
revThe version of the fleet that… | number |
failedThe conversations this press could not… | object[] |
idWhich conversation stayed on the board | string |
reasonWhy its working copy could not… | string |
curl -X POST "$SANDBOX/agents/archive" \
-H "x-intentic-control: $INTENTIC_TOKEN" \
-H "content-type: application/json" \
-d '{"ids":["a1b2c3d4","e5f6a7b8"]}'import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.agents.archive({
"ids": [
"a1b2c3d4",
"e5f6a7b8"
]
});POST/agents/unarchiveBring conversations back
Returns archived conversations to the live fleet. The next turn picks up a fresh working copy from the branch that was kept.
What you send
| Field | Type | Where |
|---|---|---|
idsrequiredWhich conversations | string[] | body |
What comes back
| Field | Type |
|---|---|
movedWhat actually moved, whole, rather than… | object[] |
idThe conversation id, which is how… | string |
sessionIdThe provider session behind the last… | string |
titleWhat to call it: the first… | string |
statusWhat it is doing | "idle" | "running" | "awaiting" | "stopping" … (11) |
failureWhy the last turn failed, in… | string |
providerWhich model provider it runs on | string |
harnessWhich agentic loop it runs on | "native" | "claude-code" |
modelWhat its last turn ran with | string |
effortHow hard that turn was told… | string |
thinkingWhether that turn showed its reasoning | boolean |
fastWhether that turn asked for higher… | boolean |
tierHow hard its last turn looked… | "fast" | "standard" |
tierHoldWhether this conversation is pinned to… | boolean |
accountWhich connected account paid for it | string |
branchThe branch its private copy works… | string |
autoLandThis conversation's own answer to whether… | boolean |
resumeAfterOutage | boolean |
landRequestedA collaborator has asked a maintainer… | object |
emailWho asked | string |
nameTheir display name | string |
atWhen they asked, in milliseconds | number |
originWhere the conversation came from when… | object |
automationId | string |
provider | string |
channelId | string |
author | string |
forkedFromThe conversation this one was cut… | object |
conversationId | string |
index | integer |
files | "then" | "now" |
baseThe commit its private copy started… | string |
costUsdWhat it has cost so far,… | number |
inputTokensTokens sent | number |
outputTokensTokens received | number |
contextTokensHow much of the window the… | number |
contextWindowHow large that window is | number |
activityWhat it is doing at this… | object |
toolThe last tool it reached for | string |
targetWhat it reached for that tool… | string |
todoThe item on its own list… | string |
landedMessageDraftThe whole story of this merge's… | object |
startedAtWhen the drafting began, in milliseconds | number |
stepsEach model that was asked, in… | object[] |
providerWhich provider was asked | string |
modelWhich of its models | string |
statusHow this one went | "asking" | "answered" | "refused" | "skipped" |
atWhen it started being asked, in… | number |
msHow long it took | number |
reasonWhy it refused, in its own… | string |
outcomeHow it ended | "written" | "failed" |
reasonThe one-line account of a failure,… | string |
finishedAtWhen it ended, in milliseconds | number |
landedMessageWhat this conversation's merged work is… | object |
subjectOne line saying what the merged… | string |
noteThe same change said to somebody… | string |
breakingWhat this change takes away, for… | string |
startedAtWhen the running turn started, in… | number |
updatedAtWhen it last did something, in… | number |
seenAtWhen somebody last opened it, in… | number |
attentionWhich kinds of waiting-for-you it is… | object |
planIt has proposed a plan and… | boolean |
questionIt has asked you something | boolean |
permissionIt wants to use a tool… | boolean |
serviceIt wants to spend money on… | boolean |
capabilityIt needs something connected that is… | boolean |
conflictIts work cannot be merged without… | boolean |
turnsTurns it has finished | number |
toolUsesTools it has used, over its… | number |
subagentsHelper agents this one delegated to | object |
runningHelpers working right now | number |
totalHelpers it has started over its… | number |
diffEverything it has written, measured from… | object |
filesFiles touched | number |
insertionsLines added | number |
deletionsLines removed | number |
landedPresencePresent only when some of what… | object |
landedPaths this conversation merged in | number |
presentHow many of them are still… | number |
loopThe loop driving this conversation, if… | object |
stateHow the loop is going | "running" | "done" | "exhausted" | "stalled" … (7) |
iterationWhich round it is on | integer |
maxIterationsHow many rounds it will attempt… | integer |
goalWhat it is looping towards | string |
workflowThe workflow run this conversation is… | object |
runIdThe run this belongs to, which… | string |
nameThe workflow's name | string |
stepWhich step this conversation is on… | string |
indexThis step's place in the workflow,… | integer |
totalHow many steps the workflow has | integer |
archivedAtWhen it was put away, in… | number |
revThe version of the fleet that… | number |
curl -X POST "$SANDBOX/agents/unarchive" \
-H "x-intentic-control: $INTENTIC_TOKEN" \
-H "content-type: application/json" \
-d '{"ids":["a1b2c3d4","e5f6a7b8"]}'import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.agents.unarchive({
"ids": [
"a1b2c3d4",
"e5f6a7b8"
]
});POST/agents/purgeEmpty the archive for good
Discards every conversation already in the archive: working copies, branches and entries. The whole archive rather than a chosen few, because the archive is the pile somebody has already decided is over. A teardown that fails on one conversation leaves that one behind instead of taking the rest down with it.
What you send
Nothing. Call it as it is.
What comes back
| Field | Type |
|---|---|
removedWhich conversations were deleted, as ids | string[] |
curl -X POST "$SANDBOX/agents/purge" \
-H "x-intentic-control: $INTENTIC_TOKEN"import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.agents.purge();