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.
The durable workspace
Section titled “The durable workspace”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.
Conversation memory
Section titled “Conversation memory”| Surface | What the agent remembers |
|---|---|
| Workspace chats | Everything — tool results, files read, mid-task state — because each turn resumes the same session. |
| Agent Chat tab | Nothing 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.
Git sync
Section titled “Git sync”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:
| State | Meaning |
|---|---|
| Green | Agent and repository agree |
| Yellow | Ahead or behind for up to 24 hours |
| Red | Last sync failed, or out of step or uncommitted for more than 24 hours |
| Gray | Not 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.
Runtime data and portability
Section titled “Runtime data and portability”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:
| Endpoint | Purpose |
|---|---|
POST /api/agents/{name}/data/export | Download data/ as a tar archive with a manifest |
POST /api/agents/{name}/data/import | Restore 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.