Eve Agent Memory
Agents on Eve Horizon have no built-in "memory" primitive, but the platform provides storage systems at every timescale. This skill teaches how to compose them into coherent memory for agents that learn, remember, and share.
The Memory Problem
Every agent starts cold. Without deliberate memory design, agents:
- Re-discover the same facts on every job.
- Lose context when jobs end.
- Cannot share learned knowledge with sibling agents.
- Accumulate stale information with no expiry.
Solve this by mapping what to remember to where to store it, using the right primitive for each timescale.
Storage Primitives by Timescale
Short-Term (within a job)
Workspace files β the git repo checkout available during job execution.
echo '{"findings": [...]}' > .eve/agent-scratch.json
eve job create --workspace-mode session --workspace-key "auth-sprint"
Use for: scratch notes, intermediate results, coordination inbox files. Ephemeral by design β workspace state does not survive the job unless committed to git or saved elsewhere.
Coordination inbox β .eve/coordination-inbox.md is auto-generated from coordination thread messages at job start. Read it for sibling status without API calls.
Agent KV Store β lightweight operational state with optional TTL. Use for: feature flags, rate counters, agent state machines, deduplication keys. Namespace-partitioned.
eve kv set --org $ORG_ID --agent $AGENT_SLUG --key "pr-123-status" --value '{"phase":"review"}' --namespace workflow --ttl 86400
eve kv get --org $ORG_ID --agent $AGENT_SLUG --key "pr-123-status" --namespace workflow
eve kv list --org $ORG_ID --agent $AGENT_SLUG --namespace workflow
eve kv mget --org $ORG_ID --agent $AGENT_SLUG --keys "pr-123-status,pr-456-status" --namespace workflow
eve kv delete --org $ORG_ID --agent $AGENT_SLUG --key "pr-123-status" --namespace workflow
Medium-Term (across jobs within a project)
Job attachments β named key-value pairs attached to any job. Survive after job completion.
eve job attach $EVE_JOB_ID --name findings.json --content '{"patterns": [...]}'
eve job attach $EVE_JOB_ID --name summary.md --file ./analysis-summary.md
eve job attachment $PARENT_JOB_ID findings.json --out ./prior-findings.json
eve job attachments $JOB_ID
Use for: job outputs, decision records, analysis results. Attached to a specific job, so retrievable by job ID. Good for passing structured data between parent and child jobs.
Threads β message sequences with continuity across sessions.
eve thread messages $THREAD_ID --since 1h
eve thread post $COORD_THREAD_ID --body '{"kind":"update","body":"Found 3 auth issues"}'
eve thread follow $COORD_THREAD_ID
Use for: inter-agent communication, rolling context, coordination. Thread summaries provide compressed history. Coordination threads (coord:job:{parent_job_id}) are auto-created for team dispatches.
Thread Distillation β convert thread conversations into memory docs or org docs. Use for: preserving valuable discussion outcomes as searchable knowledge.
eve thread distill $THREAD_ID --org $ORG_ID --agent reviewer --category learnings --key "auth-discussion-findings"
Resource refs β versioned pointers to org documents, mounted into job workspaces.
eve job create \
--description "Review the approved plan" \
--resource-refs='[{"uri":"org_docs:/pm/features/FEAT-123.md@v3","label":"Plan","mount_path":"pm/plan.md"}]'
Use for: pinning specific document versions as job inputs. The referenced document is hydrated into the workspace at the specified mount path. Events track hydration success/failure.
Long-Term (across projects, persistent)
Org Document Store β versioned documents scoped to the organization.
eve docs write --org $ORG_ID --path /agents/learnings/auth-patterns.md --file ./auth-patterns.md
eve docs read --org $ORG_ID --path /agents/learnings/auth-patterns.md
eve docs list --org $ORG_ID --prefix /agents/learnings/
eve docs search --org $ORG_ID --query "authentication retry"
Use for: curated knowledge, decision logs, learned patterns. Versioned (every update creates a new version). Emits system.doc.created/updated/deleted events on the event spine. Best for knowledge that is reviewed, refined, and shared.
Agent Memory Namespaces β curated knowledge stored as org docs with agent-scoped path conventions. Categories: learnings, decisions, runbooks, context, conventions. Supports confidence scores, tags, review dates, and expiration. Use for: accumulated expertise, decision logs, operational runbooks.
eve memory set --org $ORG_ID --agent reviewer --category learnings --key "auth-retry-patterns" \
--content "Always use exponential backoff..." --confidence 0.9 --tags "auth,reliability" --review-in 30d
eve memory get --org $ORG_ID --agent reviewer --key "auth-retry-patterns" --category learnings
eve memory list --org $ORG_ID --agent reviewer --category learnings --limit 20
eve memory delete --org $ORG_ID --agent reviewer --category learnings --key "auth-retry-patterns"
eve memory search --org $ORG_ID --query "auth retry patterns" --agent reviewer --limit 10
Namespace convention: /agents/{slug}/memory/{category}/{key}.md or /agents/shared/memory/...
Org Filesystem β shared per-org file storage mounted at .org/ in agent workspaces and synced to local machines.
ls .org/
cat .org/shared/runbook.md
echo "new finding" >> .org/agents/reviewer/notes.md
eve fs sync init --org $ORG_ID --local ~/Eve/acme --mode two-way
eve fs sync status --org $ORG_ID
eve fs sync logs --org $ORG_ID --follow
Use for: large knowledge bases, design assets, documentation trees. Agents see .org/ in their workspace regardless of execution path (agent-runtime or worker). Markdown-first defaults. Event-driven notifications (file.created/updated/deleted). Best for knowledge that lives as a file tree and benefits from both agent and human editing.
Skills and Skillpacks β distilled patterns packaged for reuse.
Use for: encoding recurring workflows and hard-won knowledge as reusable instructions. When an agent discovers a pattern worth preserving, distill it into a skill (see eve-skill-distillation). Skills are the highest-fidelity form of long-term memory β they don't just store information, they teach how to use it.
Managed databases β environment-scoped Postgres instances with agent-accessible SQL.
eve db sql --env $ENV --sql "SELECT key, value FROM agent_memory WHERE agent_id = 'reviewer' AND expires_at > NOW()"
eve db sql --env $ENV --sql "INSERT INTO agent_memory (agent_id, key, value) VALUES ('reviewer', 'last_review', '...')" --write
Use for: structured queries, relationship data, anything that benefits from SQL. Requires schema setup via migrations. Use eve db rls init --with-groups for access-controlled agent memory tables.
Shared (coordination across agents)
Org threads β org-scoped message sequences for cross-project coordination.
eve thread list --org $ORG_ID
eve thread post $ORG_THREAD_ID --body '{"kind":"directive","body":"All agents: use new auth pattern"}'
Event spine β pub/sub event bus for reactive workflows.
eve event emit --type=agent.memory.updated --source=app --payload '{"agent":"reviewer","key":"patterns"}'
eve event list --type agent.memory.*
Use for: broadcasting knowledge updates, triggering reactive workflows when memory changes.
Unified Search β single query across memory, docs, threads, attachments, events. Use for: finding relevant prior knowledge before starting work.
eve search --org $ORG_ID --query "auth retry patterns" --sources memory,docs,threads --limit 10 --agent reviewer
Memory Patterns
Pattern 1: Job-Scoped Scratch
The simplest pattern. Write working state to workspace files during execution. Nothing survives the job.
Job starts β read inputs β write .eve/scratch.json β process β complete
When to use: single-job tasks with no memory requirement.
Pattern 2: Parent-Child Knowledge Passing
Pass knowledge between orchestrator and workers using attachments and threads.
Parent creates children with resource-refs β
Children execute, attach findings β
Parent resumes, reads child attachments β
Parent synthesizes into final output
eve job attach $EVE_JOB_ID --name findings.json --content "$FINDINGS"
for child_id in $CHILD_IDS; do
eve job attachment $child_id findings.json --out ./child-${child_id}.json
done
When to use: orchestrated work where children discover information the parent needs.
Pattern 3: Org Knowledge Base
Build persistent, searchable knowledge that survives across projects and time.
Agent discovers pattern β
Check if existing doc covers it (eve docs search) β
If yes: update with new information (eve docs write)
If no: create new document (eve docs write) β
Emit event for other agents (eve event emit)
Namespace convention for agent-maintained docs:
/agents/{agent-slug}/learnings/ β patterns and discoveries