In development. Early access
Your projects.Your context.Your agents.
Claude Code, Codex, Cursor or any other agent that speaks MCP work from the same decisions, instructions and project knowledge. Each one gets exactly the part that concerns it.
Works with
- Claude Code
- Codex
- Cursor
- Copilot
- Grok
- Ollama
The problem
Every agent starts from nothing.
- Claude Code
Makes a call on the API.
- Codex
Knows nothing about it.
- Cursor
Asks you all over again.
- Files
CLAUDE.md, AGENTS.md, .cursor/rules: one per agent.
esfis decides which context each agent gets, and keeps a record of where it came from.
What it looks like
One decision in Claude. Codex already knows.
Claude picks PostgreSQL for the API. esfis stores it with a date and a source, and the next day Codex has it.
-
1Claude decides
Claude Codeopus› Postgres or Supabase for the API? ● weighing the options… PostgreSQL: it is already in production and the migrations are yours. ◆ esfis · save the decision
-
2esfis stores it
esfisdecisionThe API runs on PostgreSQL. Supabase ruled out.
-
3Codex receives it
Codexnext day› build the users model ◆ context · decision The API runs on PostgreSQL Claude Code · 14 Sep ✓ db/migrations/001_users.sql
How it works
Exactly the context that belongs there.
With a source, an expiry and permissions. Nothing from another project.
- 1Agents write to it
When Claude makes a decision, or you give it an instruction, it saves it to esfis over MCP. Nobody has to open a file.
- 2esfis keeps it in order
Each item carries a type, a space, a source, a date and an expiry. When it stops being true, it stops being delivered.
- 3Each agent gets its own
Codex works in project1, so it gets the context of project1 and your personal context. Nothing from project2 ever reaches it, however much that project also talks about databases.
- 4You can see why
Every delivery is recorded.
esfis --whytells you what went in, what stayed out and the reason.
Context, not memory
More than memory. Context.
esfis does not try to remember everything: it gives each agent what it needs to work on this project.
A preference of yours holds everywhere. A client's decision never leaves that client's space.
Already have a CLAUDE.md or an AGENTS.md? They still work: esfis can write them for you with --compile.
Memory
“I prefer TypeScript.”
True for you, anywhere.
Project context
- technologyNext.js and PostgreSQL
- decisionSupabase ruled out: the migrations are ours
- instructionEndpoints follow
/api/v1/resource
True inside project1. Decided by Claude Code yesterday.
The app
A macOS app to run it all.
Projects, agents, terminals and tasks, all around the same context.
› add the pricing page ◆ context · decision Prices are shown without VAT ● reading app/checkout/… ✓ app/pricing/page.tsx ✓ components/Plan.tsx
- Review the checkout
- Error-path tests
- Update the README
› review the checkout tests ◆ context · technology Next.js and Postgres ● 3 files changed since yesterday ✓ 42 tests passing
What the app gives you
Projects
A folder you already have becomes a project, with a context space of its own.
Agents
Real terminals, several at once, with your
PATHand your keys.Tasks
A queue beside the agent. It lives in
.esfis/feina.md, inside the project.Activity
Files, Git, sessions and the latest decision in every project.
Local by default
Your context is yours.
It is stored in ~/.esfis, on your disk. The MCP server opens no ports.
You decide which agent sees which space, and afterwards you can check what each one received. No account needed.
~/.esfis/ ├─ memory.db context and spaces └─ MEMORY.md readable copy
Who can see the project2 space
- Claude Codehas access
- Codexno
- Cursorno
No agent should ever start from nothing again.
The esfis app is still in development.

