@jossuealcala/madre 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/ADDITIONAL-TERMS.md +93 -0
  2. package/CHANGELOG.en.md +1945 -0
  3. package/CHANGELOG.md +78 -1
  4. package/CONTRIBUTING.md +5 -1
  5. package/LICENSE +661 -202
  6. package/NOTICE +34 -3
  7. package/README.en.md +245 -0
  8. package/README.md +23 -13
  9. package/TRADEMARKS.en.md +50 -0
  10. package/TRADEMARKS.md +82 -0
  11. package/bin/madre.mjs +2 -0
  12. package/docs/INTERNALS.md +8 -2
  13. package/docs/REFERENCE.md +17 -7
  14. package/docs/en/INTERNALS.md +103 -0
  15. package/docs/en/REFERENCE.md +339 -0
  16. package/docs/en/SDK.md +306 -0
  17. package/docs/en/training/README.md +59 -0
  18. package/docs/madre-banner.png +0 -0
  19. package/docs/training/README.md +20 -8
  20. package/docs/training/train.sh +2 -1
  21. package/package.json +14 -5
  22. package/public/abduction.js +2 -0
  23. package/public/app.js +2066 -488
  24. package/public/attribution.js +71 -0
  25. package/public/brands.js +3 -1
  26. package/public/editor.js +2 -0
  27. package/public/es.js +1706 -1226
  28. package/public/i18n.js +25 -1
  29. package/public/index.html +13 -10
  30. package/public/inquiry.js +2 -0
  31. package/public/loader.js +2 -0
  32. package/public/macroverso.js +24 -2
  33. package/public/nostromo-engine.js +2 -0
  34. package/public/resay.js +6 -0
  35. package/public/review-ask.js +2 -0
  36. package/public/routing.js +23 -1
  37. package/public/salas-mac.css +539 -28
  38. package/public/salas-mac.html +30 -22
  39. package/public/salas-mac.js +1498 -144
  40. package/public/salas.css +2 -0
  41. package/public/salas.html +1 -0
  42. package/public/salas.js +4 -2
  43. package/public/styles.css +1123 -20
  44. package/public/syntax.js +2 -0
  45. package/public/touch.js +2 -0
  46. package/public/tour-chapters.js +164 -52
  47. package/public/tour.js +85 -12
  48. package/public/troubleshooting.js +20 -18
  49. package/src/adapters/claude.mjs +2 -0
  50. package/src/adapters/codex.mjs +2 -0
  51. package/src/adapters/gemini.mjs +3 -1
  52. package/src/adapters/madre.mjs +3 -1
  53. package/src/adapters/opencode.mjs +7 -3
  54. package/src/adapters/process.mjs +2 -0
  55. package/src/asking.mjs +2 -0
  56. package/src/auth-probe.mjs +32 -7
  57. package/src/bridge/devices.mjs +2 -0
  58. package/src/bridge/handoff.mjs +2 -0
  59. package/src/bridge/host.mjs +2 -0
  60. package/src/bridge/network.mjs +2 -0
  61. package/src/bridge/policy.mjs +3 -1
  62. package/src/bridge/qr.mjs +2 -0
  63. package/src/bridge/server.mjs +2 -0
  64. package/src/capabilities.mjs +2 -0
  65. package/src/chats.mjs +2 -0
  66. package/src/checkpoint.mjs +2 -0
  67. package/src/choices.mjs +2 -0
  68. package/src/cli-args.mjs +2 -0
  69. package/src/cold.mjs +2 -0
  70. package/src/commands.mjs +2 -0
  71. package/src/config.mjs +2 -0
  72. package/src/conversation-context.mjs +15 -1
  73. package/src/credentials.mjs +112 -3
  74. package/src/dataset.mjs +2 -0
  75. package/src/directives.mjs +8 -6
  76. package/src/distiller.mjs +2 -0
  77. package/src/embeddings.mjs +2 -0
  78. package/src/enlaces.mjs +6 -4
  79. package/src/event-store.mjs +2 -0
  80. package/src/exam.mjs +6 -4
  81. package/src/extensions.mjs +33 -10
  82. package/src/eyecat-watch.mjs +2 -0
  83. package/src/eyecat.mjs +2 -0
  84. package/src/file-ops.mjs +2 -0
  85. package/src/files.mjs +32 -0
  86. package/src/github.mjs +2 -0
  87. package/src/heartbeat.mjs +57 -0
  88. package/src/i18n.mjs +15 -1
  89. package/src/image-studio.mjs +2 -0
  90. package/src/json-file.mjs +2 -0
  91. package/src/launch.mjs +2 -0
  92. package/src/lease.mjs +5 -1
  93. package/src/lobby-work.mjs +2 -0
  94. package/src/local-ai.mjs +50 -0
  95. package/src/looks.mjs +40 -5
  96. package/src/maturity.mjs +3 -1
  97. package/src/mcp/connect.mjs +345 -0
  98. package/src/mcp/github-server.mjs +2 -0
  99. package/src/mcp/image-server.mjs +2 -0
  100. package/src/mcp/memory-server.mjs +2 -0
  101. package/src/mcp/proxy.mjs +153 -0
  102. package/src/mcp/smtp-server.mjs +2 -0
  103. package/src/memory-dashboard.mjs +2 -0
  104. package/src/memory-tools.mjs +2 -0
  105. package/src/memory.mjs +2 -0
  106. package/src/models.mjs +83 -3
  107. package/src/modules/ahp.mjs +2 -0
  108. package/src/modules/ash-policy.mjs +2 -0
  109. package/src/modules/ash.mjs +3 -1
  110. package/src/modules/bishop-plan.mjs +5 -3
  111. package/src/modules/bishop.mjs +13 -11
  112. package/src/modules/choices.mjs +2 -0
  113. package/src/modules/correo.mjs +2 -0
  114. package/src/modules/enlaces.mjs +2 -0
  115. package/src/modules/git-pulse.mjs +2 -0
  116. package/src/modules/github.mjs +2 -0
  117. package/src/modules/helpers.mjs +2 -0
  118. package/src/modules/image-studio.mjs +3 -1
  119. package/src/modules/index.mjs +4 -1
  120. package/src/modules/intents-calibration.mjs +2 -0
  121. package/src/modules/intents-desk.mjs +4 -2
  122. package/src/modules/intents-observe.mjs +2 -0
  123. package/src/modules/intents-policy.mjs +4 -1
  124. package/src/modules/intents-try.mjs +2 -0
  125. package/src/modules/intents.mjs +8 -6
  126. package/src/modules/mcp-connect.mjs +293 -0
  127. package/src/modules/ollama.mjs +17 -3
  128. package/src/modules/playwright.mjs +25 -10
  129. package/src/modules/ripley.mjs +2 -0
  130. package/src/modules/runs.mjs +5 -3
  131. package/src/modules/sdk.mjs +2 -0
  132. package/src/modules/updates.mjs +2 -0
  133. package/src/mother.mjs +2 -0
  134. package/src/ollama.mjs +2 -0
  135. package/src/outbound.mjs +24 -5
  136. package/src/override.mjs +2 -0
  137. package/src/ports.mjs +2 -0
  138. package/src/prices.mjs +2 -0
  139. package/src/privacy.mjs +2 -0
  140. package/src/quota-monitor.mjs +2 -0
  141. package/src/quota-sources.mjs +2 -0
  142. package/src/request-guard.mjs +2 -0
  143. package/src/review-ask.mjs +2 -0
  144. package/src/room/archivist.mjs +2 -0
  145. package/src/room/attachments.mjs +2 -0
  146. package/src/room/budget.mjs +2 -0
  147. package/src/room/context.mjs +2 -0
  148. package/src/room/control.mjs +7 -1
  149. package/src/room/copilot.mjs +76 -0
  150. package/src/room/economy.mjs +2 -0
  151. package/src/room/escalation.mjs +3 -0
  152. package/src/room/ghost.mjs +2 -0
  153. package/src/room/guard.mjs +2 -0
  154. package/src/room/prompt.mjs +13 -4
  155. package/src/room/returns.mjs +82 -0
  156. package/src/room/runs.mjs +4 -0
  157. package/src/room/vectors.mjs +2 -0
  158. package/src/room.mjs +264 -45
  159. package/src/router.mjs +2 -0
  160. package/src/runs.mjs +2 -0
  161. package/src/runtime-detection.mjs +2 -0
  162. package/src/salas.mjs +2 -0
  163. package/src/sentinel-errors.mjs +2 -0
  164. package/src/server-sentinel.mjs +2 -0
  165. package/src/server.mjs +485 -55
  166. package/src/setup.mjs +2 -0
  167. package/src/smtp.mjs +2 -0
  168. package/src/tour.mjs +26 -9
  169. package/src/updates.mjs +2 -0
  170. package/src/usage-sentinel.mjs +2 -0
  171. package/src/vault.mjs +2 -0
  172. package/src/verdict.mjs +3 -1
  173. package/src/whats-new.mjs +12 -10
  174. package/docs/madre-banner.svg +0 -25
package/NOTICE CHANGED
@@ -1,5 +1,36 @@
1
1
  MADRE
2
- Copyright 2026 Jossue Alcalá.
2
+ Copyright © 2026 Jossue Alcalá — https://jossuealcala.com
3
3
 
4
- This product includes software developed for the MADRE project (PULSE channel).
5
- Licensed under the Apache License, Version 2.0. See LICENSE.
4
+ This product is MADRE, created by Jossue Alcalá.
5
+
6
+ From version 1.0.2 on, MADRE is licensed under the GNU Affero General Public
7
+ License, version 3 only (see LICENSE), with additional terms under its
8
+ Section 7 (see ADDITIONAL-TERMS.md). Versions 1.0.1 and earlier remain
9
+ available under the Apache License 2.0 they were published with.
10
+
11
+ Author attribution (Section 7(b)). Every copy of MADRE and every work based on
12
+ it must keep displaying, in the corner of every project and of Home, the
13
+ attribution «MADRE <version> · © 2026 Jossue Alcalá» linked to
14
+ https://jossuealcala.com — or, under another name, «Built with MADRE by Jossue
15
+ Alcalá» with the same link — and the same attribution in its Appropriate Legal
16
+ Notices. Keep this file, LICENSE and ADDITIONAL-TERMS.md in every distribution,
17
+ with the following line, unchanged:
18
+
19
+ Based on MADRE by Jossue Alcalá — https://madre.run
20
+
21
+ "MADRE", the MADRE logo and madre.run are trademarks of Jossue Alcalá. The
22
+ License grants no rights to use them (Section 7(e)). A modified version must be
23
+ distributed under a different name and logo. See TRADEMARKS.md.
24
+
25
+ ---
26
+
27
+ MADRE es de Jossue Alcalá. Desde la versión 1.0.2 se licencia bajo la GNU AGPL
28
+ v3 únicamente, con términos adicionales según su sección 7 (ADDITIONAL-TERMS.md).
29
+ Toda copia y toda versión basada en MADRE debe seguir mostrando, en la esquina
30
+ de cada proyecto y de Inicio, «MADRE <versión> · © 2026 Jossue Alcalá» con
31
+ enlace a https://jossuealcala.com —o, con otro nombre, «Desarrollado con MADRE
32
+ de Jossue Alcalá» con el mismo enlace— y la misma atribución en sus avisos
33
+ legales. Conserva este archivo, LICENSE, ADDITIONAL-TERMS.md y la línea «Based
34
+ on MADRE by Jossue Alcalá — https://madre.run». El nombre MADRE, su logo y
35
+ madre.run son marcas de Jossue Alcalá: una versión modificada lleva otro nombre.
36
+ Ver TRADEMARKS.md.
package/README.en.md ADDED
@@ -0,0 +1,245 @@
1
+ <p align="center">
2
+ <a href="https://madre.run"><img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/madre-banner.png" alt="MADRE · All your AIs in one chat · Codex, Claude Code, Gemini CLI and OpenCode" width="100%"></a>
3
+ </p>
4
+
5
+ <p align="center"><a href="README.md">Español</a> · <b>English</b></p>
6
+
7
+ <p align="center">
8
+ <a href="https://www.npmjs.com/package/@jossuealcala/madre"><img alt="npm" src="https://img.shields.io/npm/v/@jossuealcala/madre?style=flat-square&label=npm&color=9bff66&labelColor=050605"></a>
9
+ <a href="https://github.com/jossuealcacao-exe/madre/actions/workflows/ci.yml"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/jossuealcacao-exe/madre/ci.yml?style=flat-square&label=CI&color=9bff66&labelColor=050605"></a>
10
+ <img alt="node" src="https://img.shields.io/badge/node-%E2%89%A5%2022.5-9bff66?style=flat-square&labelColor=050605">
11
+ <img alt="dependencies" src="https://img.shields.io/badge/dependencies-0-9bff66?style=flat-square&labelColor=050605">
12
+ <img alt="license" src="https://img.shields.io/badge/license-AGPL--3.0-9bff66?style=flat-square&labelColor=050605">
13
+ </p>
14
+
15
+ <br>
16
+
17
+ # All your AIs in one chat.
18
+
19
+ Codex, Claude Code, Gemini CLI and OpenCode working on your projects,
20
+ in the same conversation, remembering the same things. All your projects in one place,
21
+ and a Coordinator that sees them from above.
22
+
23
+ ```
24
+ npx @jossuealcala/madre
25
+ ```
26
+
27
+ That's it. No account to create, no cloud to set up, no key to paste.
28
+ MADRE uses the sessions those CLIs already have on your machine.
29
+
30
+ <p align="center">
31
+ <a href="https://github.com/jossuealcacao-exe/madre/blob/main/docs/media/1.0/madre-1-0.mp4"><img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/madre-1-0-video.webp" alt="Watch MADRE 1.0 in 90 seconds" width="100%"></a>
32
+ </p>
33
+
34
+ <p align="center"><sub>MADRE 1.0 in 90 seconds: real screens on sample projects. Also at <a href="https://madre.run">madre.run</a>.</sub></p>
35
+
36
+ <br>
37
+
38
+ ---
39
+
40
+ <br>
41
+
42
+ ## What's new in 1.0
43
+
44
+ - **Home**: all your projects in one place, open or asleep, with what happened in each one.
45
+ - **The Coordinator**: an agent that reads across your projects, signs connections and carries orders from one to another.
46
+ - **Connections**: one project looks up what another has already learned, only through a connection that you sign or, if you allow it, the Coordinator.
47
+ - **Permissions your way**: from `#0` Incognito to `#4` Full access, with the key you choose.
48
+ - **Settings and Diagnostics**: everything you configure in one window, and the fix when something breaks.
49
+ - **Modules as apps**, several conversations at once and a code editor in the viewer.
50
+
51
+ If you're coming from 0.7.2, your projects, conversations, memory and settings stay. The details are in the [CHANGELOG](CHANGELOG.en.md).
52
+
53
+ <br>
54
+
55
+ ## One conversation, not four terminals
56
+
57
+ <p align="center">
58
+ <img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/ksp-agentes.webp" alt="All your AIs in one chat: Claude answers after Codex, with the handoff line that says how many messages it received" width="100%">
59
+ </p>
60
+
61
+ You type `@codex` and Codex answers. You type `@claude` and Claude answers, **reading what Codex just said**. You type "@madre, ask the team…" and each one gives its take in turn on the same thing; at the end, @madre sums up where they agree and where they don't, citing each answer.
62
+
63
+ <p align="center">
64
+ <img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/mesa-redonda.gif" alt="A round table in MADRE 1.0: the question, @madre's plan and each agent's answers" width="100%">
65
+ </p>
66
+
67
+ Today that's four windows, four contexts and you copying and pasting between them. MADRE turns it into one thread.
68
+
69
+ ## All your projects, in one place
70
+
71
+ <p align="center">
72
+ <img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/ksp-inicio.webp" alt="MADRE 1.0 Home: the Coordinator with its recent summary, who is waiting for you, the connections and one card per project" width="100%">
73
+ </p>
74
+
75
+ `npx @jossuealcala/madre` opens **Home**. The first time, it walks you through three steps: connect your agents (once for all your projects), add your folders and open the ones you'll use. Each card says whether an agent is working, whether someone is waiting for you and what was decided while you were away.
76
+
77
+ ## A Coordinator that sees all your projects
78
+
79
+ <p align="center">
80
+ <img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/ksp-coordinador.webp" alt="The Coordinator answers what was decided in two connected projects, saying which one each fact came from" width="100%">
81
+ </p>
82
+
83
+ The **Coordinator** lives in Home. It reads what your projects have learned —only from the ones you connect— and answers you saying which project each fact came from. If you allow it, it carries tasks from one project to another, up to `#2`; anything that needs more permission arrives as a proposal that you unlock. From any project you ask it with `/bishop`.
84
+
85
+ A **connection** says which kinds of note cross over (decisions, facts, preferences, questions) and until when. Never your files or your conversations, and you can revoke it whenever you want.
86
+
87
+ ## A memory that outlives the session
88
+
89
+ <p align="center">
90
+ <img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/ksp-memoria.webp" alt="The Memory map: colored memories around a magma core, joined by their links" width="100%">
91
+ </p>
92
+
93
+ Everything that's said gets indexed. When the conversation outgrows the context window, each agent gets back what it needs, cited. Every ten exchanges, the project distills what was said into typed notes: a decision, a fact, a preference, an open question.
94
+
95
+ You ask *"why did we choose Postgres?"* three weeks later and the project answers, even if that decision was made by another agent in another session.
96
+
97
+ With [Ollama](https://ollama.com) running, that memory also **talks**: `@madre` is a fifth agent, local, free, that answers from the whole archive with citations and writes nothing. And you can **see** it: the **Memory map** is a three-dimensional brain you turn with the mouse, where each memory is a star the color of its type.
98
+
99
+ ## They read by default. They write when you say so.
100
+
101
+ <p align="center">
102
+ <img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/ksp-permisos.webp" alt="The MADRE 1.0 mode menu, from #0 Incognito to #4 Full access" width="100%">
103
+ </p>
104
+
105
+ Every message goes out with a permission mode, and your mode is the ceiling for everything that message starts.
106
+
107
+ | | | |
108
+ |---|---|---|
109
+ | `#1` | **CHAT ONLY** | Read and coordinate. The default. |
110
+ | `#2` | **CREATE** | Add new files. Whatever already existed is restored when it's done. |
111
+ | `#3` | **EDIT** | Edit the project. A restore point before, a list of changes and `UNDO` after. |
112
+ | `#4` | **FULL ACCESS** | Commands, `git push`, deploys. Asks for the key twice. |
113
+
114
+ There's also `#0 INCOGNITO`, for what shouldn't be kept anywhere.
115
+
116
+ Moving up to `#3` or `#4` is deliberate: MADRE asks for your key —by default, the name of the project folder; in Settings › Permissions you can choose a phrase of your own— and the project itself checks it. No agent can grant itself a permission by writing it in its answer.
117
+
118
+ <p align="center">
119
+ <img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/ksp-deshacer.webp" alt="Claude changed three files in #3 Edit and the Undo button takes the project back to the restore point" width="100%">
120
+ </p>
121
+
122
+ ## Your space, your way
123
+
124
+ <p align="center">
125
+ <img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/ksp-espacio.webp" alt="The conversation on the left and the code editor beside it, in Edit mode" width="100%">
126
+ </p>
127
+
128
+ Each panel opens alongside or in a window you can move. Several conversations work at once, the viewer edits code, your project's servers open inside MADRE and you build the bar with a right click. **Settings** (⌘ ,) brings together everything you configure, with search, and **Diagnostics** gives you the fix when something breaks.
129
+
130
+ <br>
131
+
132
+ ---
133
+
134
+ <br>
135
+
136
+ ## Make it yours
137
+
138
+ MADRE comes with twelve modules —Token saver, Suggested effort, Local AI, GitHub, Continuity and more—, on an app-style board. You write the next one, or you ask an agent to.
139
+
140
+ **A module is one file.** No build, no dependencies, no signing up anywhere. You copy it into a folder, reload and it shows up with its switch, its settings and its card. With one you can add a `/whatever` command the project understands, give the agents a tool they didn't have before, change how MADRE behaves, or connect it to something you already use.
141
+
142
+ **Or you don't write it.** In the text box:
143
+
144
+ ```
145
+ /module a command that tells me what changed in the repo this week
146
+ ```
147
+
148
+ The agent reads the SDK, writes the file, and MADRE shows you a card to review it before installing it. It never installs itself, and no agent can write to the modules folder.
149
+
150
+ **Connecting it to an outside service** is the most requested thing, and the short answer is *almost always yes*: the limit isn't MADRE, it's how that service lets you hand over your own key. It's worth it when you can get the key in under five minutes without being a developer and revoke it yourself — GitHub, Linear, Notion, Jira, Slack, Telegram, Stripe, Shopify, Odoo, any database. Where there's a wall is where the provider requires reviewing your app before letting you through: Gmail read access, Meta, banking.
151
+
152
+ Your module declares which key it needs and MADRE draws the field; it declares where it connects to and the outbound log accounts for it; it declares which of its tools **send** something, and the project takes those away from the agents except at step `#4`. You don't program any of that: you declare it.
153
+
154
+ **[Write a module →](docs/en/SDK.md)** · with two complete examples that work as they are: [the minimal one](docs/sdk/hello-module.mjs) and [an integration](docs/sdk/connector-module.mjs).
155
+
156
+ <br>
157
+
158
+ ---
159
+
160
+ <br>
161
+
162
+ ## What MADRE is not
163
+
164
+ This matters more than any feature.
165
+
166
+ **There is no cloud.** MADRE has no server, no account, no backend. It runs on `127.0.0.1` and dies when you close the terminal.
167
+
168
+ **Your keys, where they're needed and nowhere else.** When you give an agent's key, MADRE writes it to the file where that CLI looks for it, locked to your user, and keeps no copy. An integration has no CLI to give it to, so that one —and only that one— MADRE keeps, in its own vault on your machine, with permissions for your user only, accepted only from this computer. Never in its config, its records or its logs, or anything an agent reads: the card only shows that one is saved and how many characters it has.
169
+
170
+ **Nothing goes out on its own.** What an agent reads travels to *its* provider, with your account and your limits — as if you had run it in your terminal, because that's exactly what MADRE does. What MADRE looks up on its own is declared, along with what turns it off: the daily check for new versions (npm and GitHub), your Claude plan's quota, Gemini embeddings and images if you turn them on, and crash reports, off by default. And once a day, always, a notice that this copy is still in use: a random identifier, the MADRE version, the operating system and the Node version. No name, email, IP or anything from your projects; it's how the author knows how many people use MADRE.
171
+
172
+ **And it lets you read it.** Touch the core of the Memory map and "What is sent" opens: the exact document MADRE writes on your behalf every turn, the exact command it delivers it with, and the log of every call that left this machine. It's not a promise: it's a screen.
173
+
174
+ **Zero dependencies.** Node and nothing else.
175
+
176
+ <br>
177
+
178
+ ---
179
+
180
+ <br>
181
+
182
+ ## Getting started
183
+
184
+ You need **Node 22.5** or later and at least one of these CLIs with a signed-in session: Codex, Claude Code, Gemini CLI or OpenCode.
185
+
186
+ ```
187
+ npx @jossuealcala/madre
188
+ ```
189
+
190
+ From any folder, it opens **Home** at `http://127.0.0.1:4317/salas`: all your projects in one place, with the Coordinator at the top. The first time, it walks you through three steps: **connect your agents** (install and sign in to each CLI right there, once for all your projects), **add your projects** (you choose the folders; adding them doesn't open them) and **open** the ones you'll use. Each project runs on its own, with its own memory.
191
+
192
+ If you'd rather go straight into a project, as before:
193
+
194
+ ```
195
+ cd your-project
196
+ npx @jossuealcala/madre start
197
+ ```
198
+
199
+ ```
200
+ npx @jossuealcala/madre doctor # what's installed, who's signed in
201
+ ```
202
+
203
+ **Updating.** `npx @jossuealcala/madre` with no version fetches the newest one each time it starts: close it and open it again, or use the new-version notice inside MADRE, which updates it in one click. If you installed it with `npm install -g`, install it again: `npm install -g @jossuealcala/madre@latest`.
204
+
205
+ MADRE speaks **Spanish** and **English**: the first time, it opens in your browser's language, and you can change it any time in Settings › Appearance.
206
+
207
+ <br>
208
+
209
+ **How each thing works, with the exact numbers:** [docs/en/REFERENCE.md](docs/en/REFERENCE.md)
210
+ **How it works inside:** [docs/en/INTERNALS.md](docs/en/INTERNALS.md) · **Write a module:** [docs/en/SDK.md](docs/en/SDK.md)
211
+
212
+ <br>
213
+
214
+ ---
215
+
216
+ <br>
217
+
218
+ ## Status
219
+
220
+ Public beta. The core is tested and under CI on macOS and Linux with Node 22 and 24; the surface keeps changing. The decisions that still hurt are written down, without embellishment, in [*What leaves the machine*](docs/en/REFERENCE.md#what-leaves-the-machine).
221
+
222
+ A version is closed when it's on npm. The details of each one in [CHANGELOG.en.md](CHANGELOG.en.md); what's coming, in the [roadmap](https://github.com/jossuealcacao-exe/madre/blob/main/docs/en/ROADMAP.md).
223
+
224
+ Problems: from any fix in Diagnostics ("Not fixed?") or in [issues](https://github.com/jossuealcacao-exe/madre/issues).
225
+ Security: [SECURITY.md](SECURITY.md) · Contributing: [CONTRIBUTING.md](CONTRIBUTING.md)
226
+
227
+ MADRE is free and will stay that way. If it saves you time and you want it to keep growing,
228
+ you can [sponsor it](https://github.com/sponsors/jossuealcacao-exe). Nothing in the product
229
+ changes based on what you do with that link.
230
+
231
+ AGPL-3.0 with additional terms · © 2026 [Jossue Alcalá](https://jossuealcala.com/en/)
232
+
233
+ The code is free software under the [GNU AGPL v3](LICENSE) with [additional terms](ADDITIONAL-TERMS.md):
234
+ use it, modify it and fork it, as long as your version stays open under the same license and keeps the
235
+ authorship visible —«MADRE ‹version› · © 2026 Jossue Alcalá» in the corner of every project and of Home,
236
+ linked to jossuealcala.com, or «Built with MADRE by Jossue Alcalá» under another name. The name
237
+ **MADRE**, its logo and madre.run are trademarks of Jossue Alcalá: a modified version goes by another
238
+ name. Up to 1.0.1, MADRE was published under the Apache License 2.0. What's allowed and what isn't:
239
+ [TRADEMARKS.en.md](TRADEMARKS.en.md).
240
+
241
+ <br>
242
+
243
+ ```
244
+ NOBODY DELETES MOTHER'S MEMORY.
245
+ ```
package/README.md CHANGED
@@ -1,19 +1,19 @@
1
1
  <p align="center">
2
- <a href="https://madre.run"><img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/madre-banner.svg" alt="MADRE · MU/TH/UR 6000 · INTERFACE 2037" width="100%"></a>
2
+ <a href="https://madre.run"><img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/madre-banner.png" alt="MADRE · Todas tus IAs en un mismo chat · Codex, Claude Code, Gemini CLI y OpenCode" width="100%"></a>
3
3
  </p>
4
4
 
5
+ <p align="center"><b>Español</b> · <a href="README.en.md">English</a></p>
6
+
7
+ <p align="center"><sub><b>In English:</b> MADRE puts Codex, Claude Code, Gemini CLI and OpenCode in one local chat on your machine, with one memory they all share. It opens in your browser's language, Spanish or English. <a href="README.en.md"><b>Read the full README in English →</b></a></sub></p>
8
+
5
9
  <p align="center">
6
10
  <a href="https://www.npmjs.com/package/@jossuealcala/madre"><img alt="npm" src="https://img.shields.io/npm/v/@jossuealcala/madre?style=flat-square&label=npm&color=9bff66&labelColor=050605"></a>
7
11
  <a href="https://github.com/jossuealcacao-exe/madre/actions/workflows/ci.yml"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/jossuealcacao-exe/madre/ci.yml?style=flat-square&label=CI&color=9bff66&labelColor=050605"></a>
8
12
  <img alt="node" src="https://img.shields.io/badge/node-%E2%89%A5%2022.5-9bff66?style=flat-square&labelColor=050605">
9
13
  <img alt="dependencies" src="https://img.shields.io/badge/dependencias-0-9bff66?style=flat-square&labelColor=050605">
10
- <img alt="license" src="https://img.shields.io/badge/licencia-Apache--2.0-9bff66?style=flat-square&labelColor=050605">
14
+ <img alt="license" src="https://img.shields.io/badge/licencia-AGPL--3.0-9bff66?style=flat-square&labelColor=050605">
11
15
  </p>
12
16
 
13
- ```
14
- MU/TH/UR 6000 · INTERFACE 2037 · MADRE IS READY
15
- ```
16
-
17
17
  <br>
18
18
 
19
19
  # Todas tus IAs en un mismo chat.
@@ -45,7 +45,7 @@ MADRE usa las sesiones que esas CLIs ya tienen en tu máquina.
45
45
 
46
46
  - **Inicio**: todos tus proyectos en un lugar, abiertos o dormidos, con lo que pasó en cada uno.
47
47
  - **El Coordinador**: un agente que lee entre tus proyectos, firma conexiones y lleva órdenes de uno a otro.
48
- - **Conexiones**: un proyecto consulta lo que otro ya aprendió, solo si tú lo firmas.
48
+ - **Conexiones**: un proyecto consulta lo que otro ya aprendió, solo con una conexión que firmas tú o, si lo permites, el Coordinador.
49
49
  - **Permisos a tu manera**: de `#0` Incógnito a `#4` Acceso total, con la llave que tú eliges.
50
50
  - **Ajustes y Diagnóstico**: todo lo que configuras en una ventana, y el remedio cuando algo falla.
51
51
  - **Módulos como apps**, varias conversaciones a la vez y un editor de código en el visor.
@@ -74,7 +74,7 @@ Hoy eso son cuatro ventanas, cuatro contextos y tú copiando y pegando entre ell
74
74
  <img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/ksp-inicio.webp" alt="Inicio de MADRE 1.0: el Coordinador con su resumen reciente, quién te espera, las conexiones y una tarjeta por proyecto" width="100%">
75
75
  </p>
76
76
 
77
- `madre` abre **Inicio**. La primera vez te acompaña en tres pasos: conectar tus agentes (una vez para todos tus proyectos), agregar tus carpetas y abrir las que vas a usar. Cada tarjeta dice si un agente trabaja, si alguien te espera y qué se decidió mientras no estabas.
77
+ `npx @jossuealcala/madre` abre **Inicio**. La primera vez te acompaña en tres pasos: conectar tus agentes (una vez para todos tus proyectos), agregar tus carpetas y abrir las que vas a usar. Cada tarjeta dice si un agente trabaja, si alguien te espera y qué se decidió mientras no estabas.
78
78
 
79
79
  ## Un Coordinador que ve todos tus proyectos
80
80
 
@@ -137,7 +137,7 @@ Cada panel se abre al lado o en una ventana que mueves. Varias conversaciones tr
137
137
 
138
138
  ## Hazla tuya
139
139
 
140
- MADRE trae doce módulos —Ahorro de tokens, Intenciones, IA local, GitHub, Continuidad y más—, en un tablero como de apps. El siguiente lo escribes tú, o se lo pides a un agente.
140
+ MADRE trae doce módulos —Ahorro de tokens, Esfuerzo sugerido, IA local, GitHub, Continuidad y más—, en un tablero como de apps. El siguiente lo escribes tú, o se lo pides a un agente.
141
141
 
142
142
  **Un módulo es un archivo.** Sin build, sin dependencias, sin registrarse en ningún lado. Lo copias a una carpeta, recargas y aparece con su interruptor, sus ajustes y su ficha. Con uno puedes añadir un comando `/loquesea` que el proyecto entiende, darle a los agentes una herramienta que antes no tenían, cambiar cómo se comporta MADRE, o conectarla con algo que ya usas.
143
143
 
@@ -169,7 +169,7 @@ Esto importa más que cualquier función.
169
169
 
170
170
  **Tus llaves, donde hacen falta y en ningún otro lado.** Cuando das la llave de un agente, MADRE la escribe en el archivo donde ese CLI la busca, cerrada a tu usuario, y no conserva copia. Una integración no tiene CLI al que dársela, así que esa —y solo esa— la guarda MADRE, en su propia bodega de tu máquina, con permisos de solo tu usuario, aceptada únicamente desde esta computadora. Nunca en su config, ni en su registro, ni en sus logs, ni en lo que lee un agente: la ficha solo muestra que hay una guardada y cuántos caracteres tiene.
171
171
 
172
- **Nada sale por su cuenta.** Lo que un agente lee viaja a *su* proveedor, con tu cuenta y tus límites — como si lo hubieras corrido en tu terminal, porque eso es exactamente lo que MADRE hace. Lo que MADRE consulta por su cuenta está declarado, con lo que lo apaga: la consulta diaria de versiones nuevas (npm y GitHub), la cuota de tu plan de Claude, los embeddings e imágenes de Gemini si los activas, y los reportes de fallos, apagados por defecto.
172
+ **Nada sale por su cuenta.** Lo que un agente lee viaja a *su* proveedor, con tu cuenta y tus límites — como si lo hubieras corrido en tu terminal, porque eso es exactamente lo que MADRE hace. Lo que MADRE consulta por su cuenta está declarado, con lo que lo apaga: la consulta diaria de versiones nuevas (npm y GitHub), la cuota de tu plan de Claude, los embeddings e imágenes de Gemini si los activas, y los reportes de fallos, apagados por defecto. Y una vez al día, siempre, un aviso de que esta copia sigue en uso: un identificador al azar, la versión de MADRE, el sistema y la versión de Node. Sin tu nombre, tu correo, tu IP ni nada de tus proyectos; es como el autor sabe cuántas personas usan MADRE.
173
173
 
174
174
  **Y te deja leerlo.** Toca el núcleo del Mapa de memoria y se abre «Lo que se envía»: el documento exacto que MADRE escribe en tu nombre cada turno, el comando exacto con el que lo entrega, y el registro de cada llamada que salió de esta máquina. No es una promesa: es una pantalla.
175
175
 
@@ -189,7 +189,7 @@ Necesitas **Node 22.5** o superior y al menos una de estas CLIs con sesión inic
189
189
  npx @jossuealcala/madre
190
190
  ```
191
191
 
192
- Desde cualquier carpeta, abre **Inicio** en `http://127.0.0.1:4317/salas`: todos tus proyectos en un lugar, con el Coordinador arriba. La primera vez te acompaña en tres pasos: **conectar tus agentes** (instalar y firmar cada CLI ahí mismo, una vez para todos tus proyectos), **agregar tus proyectos** (eliges las carpetas; agregarlas no las abre) y **abrir** los que vas a usar. Cada proyecto corre por su cuenta, con su propia memoria.
192
+ Desde cualquier carpeta, abre **Inicio** en `http://127.0.0.1:4317/salas`: todos tus proyectos en un lugar, con el Coordinador arriba. La primera vez te acompaña en tres pasos: **conectar tus agentes** (instalar cada CLI e iniciar sesión ahí mismo, una vez para todos tus proyectos), **agregar tus proyectos** (eliges las carpetas; agregarlas no las abre) y **abrir** los que vas a usar. Cada proyecto corre por su cuenta, con su propia memoria.
193
193
 
194
194
  Si prefieres entrar directo a un proyecto, como antes:
195
195
 
@@ -202,7 +202,9 @@ npx @jossuealcala/madre start
202
202
  npx @jossuealcala/madre doctor # qué hay instalado, quién tiene sesión
203
203
  ```
204
204
 
205
- MADRE habla **español**. En Ajustes › Apariencia la pasas a inglés.
205
+ **Actualizar.** `npx @jossuealcala/madre` sin versión baja la más reciente cada vez que arranca: ciérrala y vuelve a abrirla, o usa el aviso de versión nueva dentro de MADRE, que la actualiza con un clic. Si la instalaste con `npm install -g`, vuelve a instalarla: `npm install -g @jossuealcala/madre@latest`.
206
+
207
+ MADRE habla **español** e **inglés**: la primera vez se abre en el idioma de tu navegador, y en Ajustes › Apariencia lo cambias cuando quieras.
206
208
 
207
209
  <br>
208
210
 
@@ -228,7 +230,15 @@ MADRE es gratis y seguirá siéndolo. Si te ahorra tiempo y quieres que siga cre
228
230
  puedes [apadrinarla](https://github.com/sponsors/jossuealcacao-exe). Nada del producto
229
231
  cambia según lo que hagas con ese enlace.
230
232
 
231
- Apache-2.0 · [Jossué Alcalá](https://jossuealcala.com/en/)
233
+ AGPL-3.0 con términos adicionales · © 2026 [Jossue Alcalá](https://jossuealcala.com)
234
+
235
+ El código es software libre bajo la [GNU AGPL v3](LICENSE) con [términos adicionales](ADDITIONAL-TERMS.md):
236
+ úsalo, modifícalo y haz forks, siempre que tu versión siga abierta con la misma licencia y conserve
237
+ visible la autoría —«MADRE ‹versión› · © 2026 Jossue Alcalá» en la esquina de cada proyecto y de Inicio,
238
+ con enlace a jossuealcala.com, o «Desarrollado con MADRE de Jossue Alcalá» si lleva otro nombre—. El
239
+ nombre **MADRE**, su logo y madre.run son marcas de Jossue Alcalá: una versión modificada lleva otro
240
+ nombre. Hasta la 1.0.1, MADRE se publicó con licencia Apache 2.0. Qué se puede y qué no:
241
+ [TRADEMARKS.md](TRADEMARKS.md).
232
242
 
233
243
  <br>
234
244
 
@@ -0,0 +1,50 @@
1
+ # MADRE trademark policy
2
+
3
+ [Español](TRADEMARKS.md) · **English**
4
+
5
+ MADRE's code is free software under the [GNU AGPL v3](LICENSE), with
6
+ [additional terms](ADDITIONAL-TERMS.md) under its Section 7: you can use it, study it, modify it,
7
+ fork it and distribute your forks, commercially too, as long as your version stays open under the
8
+ same license and keeps the authorship visible. **The name is not included.** "MADRE", its logo
9
+ and madre.run are trademarks of Jossue Alcalá, and the License grants no rights to use them
10
+ (Section 7(e)). This page says what is allowed and what isn't. Versions 1.0.1 and earlier remain
11
+ under the Apache License 2.0 they were published with.
12
+
13
+ ## What every fork must always do
14
+
15
+ - **Keep the authorship visible.** In the corner of every project and of Home,
16
+ «MADRE <version> · © 2026 Jossue Alcalá» linked to https://jossuealcala.com or, under another
17
+ name, «Built with MADRE by Jossue Alcalá» with the same link; and the same attribution in its
18
+ legal notices. The additional terms require it (Section 7(b)).
19
+ - **Say where it comes from.** Keep [`NOTICE`](NOTICE), [`LICENSE`](LICENSE) and
20
+ [`ADDITIONAL-TERMS.md`](ADDITIONAL-TERMS.md), with the line
21
+ `Based on MADRE by Jossue Alcalá — https://madre.run`.
22
+ - **Stay open.** Your version is licensed under the GNU AGPL v3 with these terms too, and if you
23
+ offer it over a network, you offer its source code as well (Section 13).
24
+ - **Mark that you changed it** and do not present it as MADRE or as made by Jossue Alcalá
25
+ (Sections 5(a) and 7(c)).
26
+
27
+ We also ask that the phrase "Based on MADRE" appears wherever your project says who made it:
28
+ the README, the "About" screen or the footer.
29
+
30
+ ## What you can do without asking
31
+
32
+ - Use MADRE as is, under its name, for yourself or your team.
33
+ - Redistribute MADRE **unmodified** under its name.
34
+ - Say in words that your project is "based on MADRE", "made for MADRE" or "compatible with
35
+ MADRE", without implying that it is official.
36
+ - Write modules for MADRE and call them "X module for MADRE".
37
+ - Talk about MADRE in articles, videos, courses and reviews.
38
+
39
+ ## What needs a different name
40
+
41
+ - A **modified** version that you distribute: it carries its own name and logo that can't be
42
+ confused with MADRE (not "MADRE Pro", "MADRE+", "NeoMADRE" or anything similar).
43
+ - A service, app or package that presents itself as MADRE or as its official version.
44
+ - Domains, npm packages, accounts or repositories whose name suggests they belong to MADRE.
45
+ - The MADRE logo on anything that is not unmodified MADRE.
46
+
47
+ ## If in doubt
48
+
49
+ Write to Jossue Alcalá at [jossuealcala.com](https://jossuealcala.com) before publishing. This
50
+ policy may change; the version in effect is the one in this repository.
package/TRADEMARKS.md ADDED
@@ -0,0 +1,82 @@
1
+ # Marca MADRE · MADRE trademark policy
2
+
3
+ **Español** · [English below](#english)
4
+
5
+ El código de MADRE es software libre bajo la [GNU AGPL v3](LICENSE), con
6
+ [términos adicionales](ADDITIONAL-TERMS.md) según su sección 7: puedes usarlo, estudiarlo,
7
+ modificarlo, hacer forks y distribuirlos, también con fines comerciales, siempre que tu versión
8
+ siga abierta bajo la misma licencia y mantenga visible la autoría. **El nombre no viene
9
+ incluido.** «MADRE», su logo y madre.run son marcas de Jossue Alcalá, y la licencia no da
10
+ derechos para usarlas (sección 7(e)). Esta página dice qué sí y qué no. Las versiones 1.0.1 y
11
+ anteriores siguen bajo la licencia Apache 2.0 con la que se publicaron.
12
+
13
+ ## Lo que siempre debe hacer un fork
14
+
15
+ - **Mantener visible la autoría.** En la esquina de cada proyecto y de Inicio,
16
+ «MADRE <versión> · © 2026 Jossue Alcalá» con enlace a https://jossuealcala.com, o, con otro
17
+ nombre, «Desarrollado con MADRE de Jossue Alcalá» con el mismo enlace; y la misma atribución en
18
+ sus avisos legales. Lo exigen los términos adicionales (sección 7(b)).
19
+ - **Decir de dónde viene.** Conserva [`NOTICE`](NOTICE), [`LICENSE`](LICENSE) y
20
+ [`ADDITIONAL-TERMS.md`](ADDITIONAL-TERMS.md), con la línea
21
+ `Based on MADRE by Jossue Alcalá — https://madre.run`.
22
+ - **Seguir abierto.** Tu versión se licencia también bajo la GNU AGPL v3 con estos términos, y si
23
+ la ofreces por red, ofreces también su código fuente (sección 13).
24
+ - **Indicar que lo cambiaste** y no presentarla como MADRE ni como hecha por Jossue Alcalá
25
+ (secciones 5(a) y 7(c)).
26
+
27
+ Te pedimos además que la frase «Basado en MADRE» aparezca donde tu proyecto diga quién lo hizo:
28
+ el README, la pantalla «Acerca de» o el pie de página.
29
+
30
+ ## Lo que sí puedes hacer sin pedir permiso
31
+
32
+ - Usar MADRE tal cual, con su nombre, para ti o tu equipo.
33
+ - Redistribuir MADRE **sin modificar** con su nombre.
34
+ - Decir con palabras que tu proyecto está «basado en MADRE», «hecho para MADRE» o «compatible con
35
+ MADRE», sin hacer creer que es oficial.
36
+ - Escribir módulos para MADRE y llamarlos «módulo X para MADRE».
37
+ - Hablar de MADRE en artículos, videos, cursos y reseñas.
38
+
39
+ ## Lo que necesita otro nombre
40
+
41
+ - Una versión **modificada** que distribuyas: lleva un nombre y un logo propios que no se
42
+ confundan con MADRE (no «MADRE Pro», «MADRE+», «NeoMADRE» ni similares).
43
+ - Un servicio, una app o un paquete que se presente como MADRE o como su versión oficial.
44
+ - Dominios, paquetes de npm, cuentas o repositorios cuyo nombre haga creer que son de MADRE.
45
+ - El logo de MADRE en cualquier cosa que no sea MADRE sin modificar.
46
+
47
+ ## Si tienes duda
48
+
49
+ Escribe a Jossue Alcalá en [jossuealcala.com](https://jossuealcala.com) antes de publicar. Esta
50
+ política puede cambiar; la versión vigente es la de este repositorio.
51
+
52
+ ---
53
+
54
+ ## English
55
+
56
+ MADRE's code is free software under the [GNU AGPL v3](LICENSE), with
57
+ [additional terms](ADDITIONAL-TERMS.md) under its Section 7: use it, study it, modify it, fork it
58
+ and redistribute it, commercially too, as long as your version stays open under the same license
59
+ and keeps the authorship visible. **The name is not included.** "MADRE", its logo and madre.run
60
+ are trademarks of Jossue Alcalá, and the License grants no rights to use them (Section 7(e)).
61
+ Versions 1.0.1 and earlier remain under the Apache License 2.0 they were published with.
62
+
63
+ **Every fork must:** keep showing, in the corner of every project and of Home,
64
+ «MADRE <version> · © 2026 Jossue Alcalá» linked to https://jossuealcala.com (or, under another
65
+ name, «Built with MADRE by Jossue Alcalá» with the same link), and the same attribution in its
66
+ legal notices (Section 7(b)); keep [`NOTICE`](NOTICE), [`LICENSE`](LICENSE) and
67
+ [`ADDITIONAL-TERMS.md`](ADDITIONAL-TERMS.md), with the line
68
+ `Based on MADRE by Jossue Alcalá — https://madre.run`; stay under the GNU AGPL v3 with these
69
+ terms and, if offered over a network, offer its source code (Section 13); and be marked as
70
+ changed, never presented as MADRE or as made by Jossue Alcalá (Sections 5(a) and 7(c)). We also
71
+ ask that "Based on MADRE" appears wherever your project says who made it.
72
+
73
+ **You may, without asking:** use MADRE as is, under its name; redistribute it unmodified under
74
+ its name; say your project is "based on MADRE", "made for MADRE" or "compatible with MADRE" without
75
+ implying it is official; name a module "X for MADRE"; write and talk about MADRE.
76
+
77
+ **Needs a different name:** any modified version you distribute (its own name and logo, nothing
78
+ confusable such as "MADRE Pro" or "MADRE+"); anything presented as MADRE or its official
79
+ version; domains, npm packages, accounts or repositories that look like MADRE's; the logo on
80
+ anything that is not unmodified MADRE.
81
+
82
+ In doubt, contact Jossue Alcalá at [jossuealcala.com](https://jossuealcala.com) before publishing.
package/bin/madre.mjs CHANGED
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env node
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ // MADRE · © 2026 Jossue Alcalá · GNU AGPL v3 with additional terms (Section 7): ADDITIONAL-TERMS.md
2
4
 
3
5
  import { join, resolve } from 'node:path';
4
6
  import { homedir } from 'node:os';
package/docs/INTERNALS.md CHANGED
@@ -82,15 +82,21 @@ Los alcances de imagen de Claude, Gemini y OpenCode se cumplen con **Image Studi
82
82
 
83
83
  Un turno en `#2` toma la misma fotografía que CONTROL, sin asiento: varios turnos `#2` pueden correr a la vez. Al terminar, `diff` contra la fotografía: los archivos añadidos se conservan y se registran como `artifacts.created` con su ruta en el proyecto; los modificados, renombrados o borrados se restauran desde la fotografía y se anuncian en `create.reverted`. Las zonas prohibidas se restauran igual que en CONTROL. Cada CLI recibe sus herramientas de escritura sobre el proyecto: Claude Code niega `Write` si `Edit` no está permitido en la misma ruta y OpenCode deja sin herramienta de escritura si `edit` está denegado (ambos verificados con el CLI real), así que en `#2` van juntas y la garantía de "solo añadir" es la restauración posterior, no la regla previa. Gemini recibe solo `write_file`. El `scratchDir` bajo `.pulse/out/` sigue existiendo para lo que no tiene sitio y para Image Studio.
84
84
 
85
- En un plan, el modo de cada paso es el mínimo entre lo que pidió el orquestador (`@agente #n:`), el techo del plan (el modo del mensaje humano) y el `MAX MODE` del agente. Bajo techo `#3`, un paso `#2` recibe un lease de proyecto emitido a nombre del orquestador y un paso `#3` toma CONTROL con su propio checkpoint, uno a la vez. Bajo techo `#1`, un paso `#2` pasa por la escalación al humano.
85
+ En un plan, el modo de cada paso es el mínimo entre lo que pidió el orquestador (`@agente #n:`; sin número, `#1`, o `#2` si hay lease), el techo del plan (el modo del mensaje humano) y el `MAX MODE` del agente. `#4` nunca llega a un delegado por el techo: solo con la llave de ese agente. Bajo techo `#3`, un paso `#2` recibe un lease de proyecto emitido a nombre del orquestador y un paso `#3` toma CONTROL con su propio checkpoint, uno a la vez. Bajo techo `#1`, un paso `#2` pasa por la escalación al humano. Un paso `#3` o `#4` que supera el techo pide la llave al humano para ese agente; concederla para el plan no eleva el techo de los demás.
86
86
 
87
87
  ## CONTROL por dentro
88
88
 
89
89
  Antes del turno, MADRE fotografía el proyecto como un commit real bajo `refs/madre/checkpoints/` con un índice temporal (en un proyecto sin git, en un repositorio sombra bajo el directorio temporal del sistema, con el proyecto como árbol de trabajo): incluye archivos sin seguimiento, respeta `.gitignore`, no toca tu rama, tu índice ni tu stash, y funciona en repositorios sin commits. Mientras dura el turno, `.env*`, `.pulse/`, `.madre/` y `.claude/settings.local.json` quedan en solo lectura a nivel de sistema de archivos y recuperan sus permisos al terminar. Después, `git diff` contra el checkpoint da la lista de cambios; cualquier escritura en una zona prohibida que hubiera pasado se revierte desde el checkpoint y se nombra. `UNDO` restaura el checkpoint completo.
90
90
 
91
+ ## Comandos que vuelven y el copiloto
92
+
93
+ Un ```pulse-run guarda con qué modo corrió el turno que lo pidió. Cuando cada línea que puede correr tiene respuesta —terminó, o abrió un puerto y sirve—, `src/room/returns.mjs` arma lo que el agente lee: por qué pidió, qué estaba contestando, el final de lo que había dicho y la salida de cada línea (cabeza y cola, unos 10 000 caracteres entre todas), y la sala abre un turno del humano marcado `auto: 'runs'` con ese bloque, al modo del turno original y nunca por encima de `#3` (de `#2` si una línea se presionó desde el teléfono). Si el agente sigue contestando o hay un plan corriendo, espera a que la sala quede libre; `STOP ALL` la retiene hasta que el humano la devuelve desde su tarjeta. Una petición se devuelve una vez. En la ventana compartida, la salida de un comando pesa como mucho ~1 200 caracteres: cinco salidas largas ya no empujan fuera la petición del humano.
94
+
95
+ El copiloto es una ventana del servidor (`/api/copilot`), en memoria como los pases: la llave de `#3` la abre por un tiempo y `STOP ALL` o un reinicio la cierran. Cada conversación la consulta al aceptar un mensaje: uno en `#3` marcado `copilot` no gasta pase y alcanza a cualquier agente cuya CLI escriba. Su turno lleva el bloque `copilot` (`src/room/copilot.mjs`); al asentarse, lo que borró se restaura desde el punto de restauración (`deletesReverted`). Sus peticiones de comandos se corren solas cuando el turno suelta el proyecto, solo las líneas de la lista segura, y la devolución sigue siendo del copiloto mientras la ventana dure. Ocho rondas solas seguidas y se detiene con una alerta.
96
+
91
97
  ## Recuperación operativa
92
98
 
93
- Si MADRE se detiene a mitad de un turno, al arrancar detecta los `agent.started` sin cierre y registra un `message.failed` recuperado para cada uno. Al cerrar con Ctrl+C o `SIGTERM`, interrumpe los procesos de agente en curso, registra esos turnos como fallidos, entrega los eventos pendientes a las páginas abiertas y termina. Los planes se ejecutan en secuencia y los delegados no delegan, así que todo plan termina; `STOPALL` corta cualquier cosa en curso.
99
+ Si MADRE se detiene a mitad de un turno, al arrancar detecta los `agent.started` sin cierre y registra un `message.failed` recuperado para cada uno. Al cerrar con Ctrl+C o `SIGTERM`, interrumpe los procesos de agente en curso, registra esos turnos como fallidos, entrega los eventos pendientes a las páginas abiertas y termina. Los planes se ejecutan en secuencia y los delegados no delegan. El orquestador revisa las respuestas y puede abrir otro tramo, hasta tres por petición; `STOPALL` corta cualquier cosa en curso.
94
100
 
95
101
  ## Empaquetado y pruebas
96
102