Skip to content

Memory & git state

An agent remembers through three layers: a durable workspace, conversation sessions and, optionally, a git repository that versions its instructions, skills and state.

Each agent’s home directory, /home/developer, is a persistent volume. It survives restarts, container recreation (resource or runtime changes), image upgrades and resets. Anything the agent writes there — notes in memory/, databases in data/, generated files in content/ — is still there next time.

On ExoHuman Cloud, workspace volumes count towards your instance storage and are covered by backups. When an idle agent is suspended, its workspace is kept and reattached when it resumes.

SurfaceWhat the agent remembers
Workspace chatsEverything — tool results, files read, mid-task state — because each turn resumes the same session.
Agent Chat tabNothing between messages; each message is a fresh run with the last 20 messages as context.

Long, multi-step work belongs in the Workspace. When a resumed session approaches the model’s context limit, the runtime summarises older history to keep going. You can clear an agent’s working memory from the Workspace to start fresh.

An agent can be bound to a GitHub repository so its instructions, skills and work are versioned:

  • Working-branch mode — the agent owns a branch such as exohuman/<agent>/<id>, commits its changes and pushes them back (auto-sync). Used for agents whose repository is the agent.
  • Source mode — the agent only pulls. Used for deployments of a codebase and repositories you do not own.

The agent also pulls new commits on a timer, so changes people push reach it without pressing Pull. The Git tab shows the sync state:

StateMeaning
GreenAgent and repository agree
YellowAhead or behind for up to 24 hours
RedLast sync failed, or out of step or uncommitted for more than 24 hours
GrayNot yet observed

Optionally, freeze schedules if sync is failing skips scheduled runs while sync is unhealthy, so an agent does not keep working on a stale copy. Conflicts and branches with no shared history require an explicit resolution choice in the Git tab.

ExoHuman manages a block of default ignore rules in the agent’s .gitignore so caches, virtual environments, credentials and content/ are never committed; your own rules go below the managed block.

Agents created without a repository can be connected later from the Git tab or with the initialize_github_sync MCP tool (creates a private repository if needed). Authentication uses the agent’s GitHub credential — see Platform keys.

Declare which paths hold runtime data in template.yaml:

data_paths:
- data/*.db
- data/datasets/**

Declared data is kept out of git automatically. To move an agent between instances, export its data/ directory as an archive and import it into the new agent:

EndpointPurpose
POST /api/agents/{name}/data/exportDownload data/ as a tar archive with a manifest
POST /api/agents/{name}/data/importRestore an archive into data/ (accepts Idempotency-Key)

MCP tools: export_agent_data, import_agent_data. Both are owner/admin only and require a running agent.