Docs
Com funciona esfis 1.8, del primer projecte a la línia d'ordres. L'app encara és en accés anticipat: aquí hi ha el que fa avui, i res del que farà.
En aquesta pàgina
Què és esfis
esfis és una app de macOS per treballar amb els teus projectes i els agents d'IA que ja fas servir. No és una plataforma on hagis de portar res: funciona sobre les carpetes, els fitxers i les sessions que ja tens a l'ordinador.
Té tres peces:
- Projectes
- Carpetes teves. Cadascuna té la seva activitat, les seves tasques i el seu espai de context.
- Agents
- Els CLI de sempre —Claude Code, Codex, Copilot, Grok, Antigravity, Ollama— en terminals reals.
- Context
- El que el projecte ha de recordar, compartit entre tots els agents per MCP i desat al teu Mac.
La finestra té quatre seccions: Inici (projectes i activitat), Agents (els terminals), Memòria (el context) i Configuració. L'app, la línia d'ordres esfis i el servidor MCP són el mateix binari.
Els primers cinc minuts
- Afegeix una carpetaA Inici, «Afegeix una carpeta». Es converteix en projecte i en té l'espai.
- Obre un agentA Agents, tria'n un. S'obre a la carpeta, amb el teu
PATHi les teves claus. - Connecta el contextA Configuració, copia l'ordre del teu agent i prem Comprova.
- Torna demàInici et diu on ho vas deixar i què ha decidit cada agent.
L'ordre per connectar Claude Code, que és la més habitual:
claude mcp add --scope user esfis -- ~/.esfis/bin/esfis --mcp
Projectes
Un projecte és una carpeta. L'afegeixes des de l'app i esfis no la mou ni en canvia l'estructura. Tot el que hi passa —els agents que s'hi obren, les seves sessions, el context que s'hi desa— queda associat a aquella carpeta.
Cada projecte, el seu espai
Afegir la carpeta crea un espai amb el seu nom i el seu camí. Un agent que treballa a dins ja és al projecte: no cal dir-li res. Si un espai ja la conté (per exemple, el d'un client que agrupa diversos projectes) o ja n'hi ha un amb aquell nom, esfis no el toca; només li posa la carpeta si encara no en tenia cap.
Des del terminal és el mateix:
esfis --space-add projecte1 --path ~/Documents/Projecte1
Agents
Cada agent és el seu CLI de sempre en un terminal real dins d'esfis. S'obre a la carpeta del projecte amb un login shell —el mateix PATH i les mateixes claus que el teu terminal— i parla amb el seu proveïdor com ho faria fora d'esfis.
Diversos alhora
Parteix la finestra (⌘D a la dreta, ⇧⌘D a sota), envia el mateix prompt a totes les sessions (⇧⌘B) i canvia de projecte sense aturar els agents dels altres.
Model, sessions i proveïdors
- Cada panell té el seu menú de model, que el canvia amb l'ordre del mateix CLI (
/model, o/loada Ollama) sense tancar la sessió. - Canviar de secció o tancar la finestra no atura cap agent. Sortir d'esfis sí, i abans ho pregunta.
- Els proveïdors que no fas servir s'apaguen a Configuració › Agents.
Tasques
Al costat de cada agent hi ha el panell de Tasques del projecte, per apuntar el que no toca fer ara sense perdre el fil.
| Acció | Què passa |
|---|---|
| Clic | Envia la tasca a l'agent i prem Retorn. |
⌥-clic | La deixa escrita al terminal, perquè la revisis abans. |
| Cercle | La marca com a feta, o torna a pendent. |
Cada tasca recorda a quin agent la vas enviar. La llista és un Markdown dins del projecte, a .esfis/feina.md, amb una línia - [ ] per tasca: es pot editar a mà i arriba a qualsevol Mac que tingui la carpeta.
Activitat
Inici té una fila per projecte, del que has tocat fa menys al que fa més temps que no toques. Serveix per tornar a la feina sense haver de recordar on eres.
- Fitxers i últim canvi
- de la carpeta
- Branca
- .git/HEAD
- Agents oberts
- ara mateix
- Context i decisions
- de l'espai
- Sessions i agents
- últims 30 dies
- Tasques pendents
- .esfis/feina.md
- Última decisió i on ho vas deixar
- context + sessions
Tot es llegeix del disc, en segon pla i sense subprocessos, dels registres que Claude Code, Codex i Grok ja deixen. Carpetes com node_modules o .build no es compten.
Context
El context d'un projecte són peces curtes: decisions, instruccions, objectius, persones, tecnologies. Cadascuna recorda d'on ve i quan es va desar, i una de nova en pot substituir una de vella en comptes de conviure-hi.
Qui el veu
El context d'un projecte només arriba als agents que treballen en aquell projecte. El personal, com ara en quina llengua vols les respostes, arriba a tot arreu.
Com hi arriben els agents
Hi llegeixen i hi escriuen per MCP. Qui decideix què val la pena desar és l'agent; esfis només desa i recupera, sense cap crida a cap model. Cada peça porta com a origen l'agent que la va desar, i l'agent que la rep l'endemà ho veu: «L'API fa servir PostgreSQL · Claude Code». Com connectar cada agent és a Connectar-hi la teva IA.
Tipus
identity, preference, person, project, goal (objectiu), decision, technology (tecnologia), event, knowledge i instruction. Cada peça porta també qui la va desar, si es va dir explícitament o es va deduir, i pot tenir data de caducitat.
Memòria
La secció Memòria ensenya tot el context i et deixa corregir-lo.
Llista i Text
Llista és una fila per peça, amb el seu tipus, d'on ve i els botons per canviar-ne el tipus o oblidar-la. Text és tot el context com un text seguit:
## Instruccions permanents
[#3] Respon sempre en català.
## Records
[#12] El projecte es desplega a Vercel.
- Reescriu una línia i canvies aquella peça.
- Esborra-la i s'oblida: queda desactivada i es recupera des dels oblidats.
- Afegeix-ne una sense
[#id]i és nova. - Res es desa fins que prems Desa (
⌘S), i si un agent hi ha escrit mentrestant, t'ho diu abans.
Prova i Conversa
Són dues pestanyes de Configuració, al costat d'Espais. Prova tria una IA i un espai, li fa una pregunta i ensenya què rebria, amb la puntuació de cada peça i el que queda fora. Conversa extreu context d'una conversa enganxada amb l'API d'Anthropic i la teva clau: és l'única funció que surt de la màquina, i amb l'MCP connectat no et cal.
MEMORY.md
~/.esfis/MEMORY.md és la còpia llegible del context personal (el d'un espai no hi va, perquè el llegeixen tots els projectes). Claude Code el pot llegir sense MCP si afegeixes @~/.esfis/MEMORY.md a ~/.claude/CLAUDE.md.
esfis --export # actualitza ~/.esfis/MEMORY.md
esfis --import-document # incorpora el que hi hagis editat
Portar-hi el que ja tens
Els .md de memòria que els assistents deixen a ~/.claude/projects/<projecte>/memory/ es poden importar. Tornar-hi a passar no duplica res, i un fitxer editat substitueix la versió vella.
esfis --import # ~/.claude/projects
esfis --import ~/notes ~/altra/mem # o les carpetes que diguis
Espais i polítiques
Els espais separen el context de cada projecte o client. Les polítiques diuen quina IA en veu cadascun. I la traça explica, després, què va rebre cada IA i per què.
Espais
Un record sense espai és personal i va a tot arreu. Un record amb espai només surt dins del seu, i l'espai es mira abans de buscar: una coincidència perfecta d'un altre client no arriba ni a puntuar-se. L'espai d'un agent surt de la carpeta on treballa (el camí més llarg que la conté); ESFIS_SPACE el fixa.
esfis --spaces
esfis --space-add acme --kind client --path ~/Clients/acme
esfis --move 184 acme
esfis --add "Acme paga a 60 dies." --space acme --until 2026-12-31
Polítiques
Guanya la regla més concreta: aquesta IA en aquest espai, aquesta IA a tot arreu, tothom en aquest espai, tothom. Sense regla, es permet. Qui no pot veure un espai tampoc no hi pot escriure ni oblidar-ne res.
A Configuració › Espais tries, per a cada espai i cada IA, «Hi té accés», «No» o el que digui la regla general. Des del terminal és el mateix:
esfis --deny chatgpt acme
esfis --deny '*' acme
esfis --allow claude-code acme
esfis --policy
Per què ho va veure
Cada recall per MCP deixa un lliurament: què hi va entrar, què en va quedar fora i per què. Es guarden identificadors i motius, no el text. Del que un altre espai o una política va deixar fora, s'anomena el que hauria respost la pregunta i la resta es compta. Els lliuraments també són a Configuració › Espais: un clic en un i en surt l'explicació.
esfis --deliveries
esfis --why 212
esfis --preview "quin magatzem fem servir" --as codex --space esfis
CLAUDE.md i AGENTS.md
--compile escriu el context vigent dins d'un bloc marcat (<!-- esfis:begin --> … <!-- esfis:end -->) i no toca res de fora. Tornar a compilar sense canvis no canvia ni un byte.
- Què hi va: instruccions, identitat, preferències, projectes, objectius, decisions i tecnologies.
- Només si són actius, vigents, dits explícitament i permesos per a aquell assistent.
- El personal només amb
--with-personal, perquè aquests fitxers acaben a git.
esfis --compile agents --space esfis
esfis --compile claude --print
esfis --import-instructions CLAUDE.md # el camí de tornada
esfis i CLAUDE.md
esfis no substitueix el CLAUDE.md ni l'Auto Memory de Claude Code: el CLAUDE.md pot ser una sortida d'esfis, no cal que en sigui la font. La diferència és on viu el context i qui el pot llegir.
| CLAUDE.md i Auto Memory | Context a esfis | |
|---|---|---|
| Format | Text en Markdown, per nivells: organització, usuari, projecte i subcarpetes | Peces amb tipus, espai i metadades |
| Qui el llegeix | Claude Code | Qualsevol agent per MCP, i CLAUDE.md o AGENTS.md compilats |
| Qui l'escriu | Tu, i Claude amb Auto Memory | Tu i qualsevol agent connectat |
| Origen | No queda anotat per a cada afirmació | Qui, quan i si es va dir o es va deduir |
| Vigència | Fins que algú l'edita o l'esborra | Data de caducitat per peça i historial |
| Permisos | Sense permisos per peça ni per agent | Polítiques per agent i per espai |
| Traça | Els fitxers que s'han carregat | Les peces que va rebre cada agent, i per què |
Comparació amb Claude Code a setembre del 2026.
Consum dels agents
La barra de baix de la secció Agents i el seu panell d'ús ensenyen quant ha fet servir cada agent, avui i els últims dies, i com va la màquina: CPU, memòria i els processos que més gasten. Tot es llegeix dels registres que cada CLI ja escriu en local, sense cap crida a cap API.
esfis --usage --days 14 # el panell d'ús, en text
esfis --claude-bridge # els límits reals de Claude (--remove el treu)
Els costos són una estimació amb preus públics, que es poden ajustar a ~/.config/agent-orchestrator/pricing.json.
Connectar-hi la teva IA
A Configuració › Connecta la teva IA hi ha el que cal copiar per a cada client, i un botó Comprova. esfis no escriu mai la configuració d'un altre programa.
| Client | Com |
|---|---|
| Claude Code | claude mcp add --scope user esfis -- ~/.esfis/bin/esfis --mcp |
| Codex | codex mcp add esfis -- ~/.esfis/bin/esfis --mcp |
| Cursor | El bloc JSON de sota, a ~/.cursor/mcp.json |
| Gemini CLI | El bloc JSON de sota, a ~/.gemini/settings.json |
| Qualsevol xat | Unes instruccions per enganxar, i el context de cada pregunta des de Prova |
La forma genèrica, per a qualsevol altre client MCP:
{ "mcpServers": { "esfis": { "command": "/Users/<tu>/.esfis/bin/esfis", "args": ["--mcp"] } } }
Les eines
| Eina | Què fa |
|---|---|
recall | Torna les instruccions permanents i el context rellevant per a una pregunta. |
remember | Desa una peça. Accepta type, space, valid_until i supersedes, per substituir-ne una en comptes d'acumular contradiccions. |
forget | Desactiva una peça per id. Queda com a història. |
memories | Llista el que l'agent pot veure a l'espai on és. |
Ordres de terminal
Tot el que fa l'app es pot fer des del terminal. esfis --help les té totes; surten amb 0 si ha anat bé i amb 1 si no.
| Ordre | Què fa |
|---|---|
--recall "…" | Què sap esfis d'això (--as, --space) |
--preview "…" --as codex | Què rebria aquella IA, i què quedaria fora |
--why <lliurament> | Per què una IA va veure el que va veure |
--add "…" | Desa context (--type, --space, --until) |
--spaces · --space-add · --move | Els espais i els seus records |
--policy · --allow · --deny | Qui veu què |
--compile claude|agents | Escriu el context al CLAUDE.md o l'AGENTS.md |
--import [carpetes] | Porta els .md de memòria dels assistents |
--list | Tots els records, també els oblidats |
--usage [--days N] | El consum dels agents |
--doctor | Comprova que tot està al seu lloc |
esfis --doctor fa una comprovació per línia: la base, l'esquema, els vectors, si el binari és el que diu la configuració MCP, si MEMORY.md està al dia i si hi ha duplicats. El mateix informe és a Configuració.
Dreceres
| Drecera | Què fa |
|---|---|
⌃⌘1 … ⌃⌘4 | Inici, Agents, Memòria, Configuració |
⌘1 … ⌘9 | Salta al panell d'agent |
⌘D · ⇧⌘D | Parteix a la dreta · a sota |
⌘↩ | Amplia el panell (i hi torna) |
⌥⌘ + fletxes | Mou el focus entre panells |
⇧⌘W | Tanca el panell |
⇧⌘B | Envia el mateix prompt a totes les sessions |
⌃⌥⌘← · ⌃⌥⌘→ · ⌃⌥⌘↑ | Aparca la finestra a un cantó · l'omple |
⌃⌘F | Ocupa la pantalla |
⌘S | Desa el text de la Memòria |
⇧⌘E | Actualitza MEMORY.md |
⌘, | Configuració |
Dades locals
Tot es desa al teu Mac. El servidor MCP parla per l'entrada estàndard i no obre cap port, i no cal cap compte.
| Fitxer | Què hi ha |
|---|---|
~/.esfis/memory.db | El context (SQLite): peces, espais, polítiques i historial |
~/.esfis/MEMORY.md | La còpia llegible del context personal |
~/.esfis/log.jsonl | Una línia per canvi |
~/.esfis/mcp.log | La traça de l'MCP, només amb ESFIS_LOG=1 |
~/.esfis/bin/esfis | El binari que criden els agents |
<projecte>/.esfis/feina.md | Les tasques del projecte |
Per mostrar l'activitat i el consum, esfis llegeix els fitxers que els CLI ja deixen al disc, com ~/.claude/projects o ~/.codex/sessions, i no els envia enlloc.
Agents compatibles
| Agent | Què és |
|---|---|
| Claude Code | L'agent de terminal d'Anthropic. Llegeix i escriu el context per MCP. |
| Codex | L'agent de terminal d'OpenAI. Llegeix i escriu el context per MCP. |
| Copilot | L'agent de terminal de GitHub. |
| Grok | L'agent de terminal de xAI. |
| Antigravity | L'agent de terminal de Google (agy). Apagat per defecte; s'encén a Configuració › Agents. |
| Ollama | Models locals, que s'executen a la teva màquina. |
Qualsevol altre client MCP també pot llegir i escriure el context, com Cursor o Gemini CLI.
En desenvolupament
esfis és en una fase inicial. Algunes funcionalitats poden canviar o desaparèixer, i aquestes pàgines s'actualitzen quan passa. Els canvis publicats són a novetats.

