@jossuealcala/madre 1.0.1 → 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 (172) hide show
  1. package/ADDITIONAL-TERMS.md +93 -0
  2. package/CHANGELOG.en.md +1945 -0
  3. package/CHANGELOG.md +34 -1
  4. package/CONTRIBUTING.md +1 -1
  5. package/LICENSE +661 -202
  6. package/NOTICE +26 -14
  7. package/README.en.md +245 -0
  8. package/README.md +19 -10
  9. package/TRADEMARKS.en.md +50 -0
  10. package/TRADEMARKS.md +33 -16
  11. package/bin/madre.mjs +2 -0
  12. package/docs/INTERNALS.md +6 -0
  13. package/docs/REFERENCE.md +11 -2
  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/training/README.md +20 -8
  19. package/docs/training/train.sh +2 -1
  20. package/package.json +11 -3
  21. package/public/abduction.js +2 -0
  22. package/public/app.js +1549 -409
  23. package/public/attribution.js +71 -0
  24. package/public/brands.js +3 -1
  25. package/public/editor.js +2 -0
  26. package/public/es.js +620 -400
  27. package/public/i18n.js +25 -1
  28. package/public/index.html +13 -10
  29. package/public/inquiry.js +2 -0
  30. package/public/loader.js +2 -0
  31. package/public/macroverso.js +2 -0
  32. package/public/nostromo-engine.js +2 -0
  33. package/public/resay.js +6 -0
  34. package/public/review-ask.js +2 -0
  35. package/public/routing.js +23 -1
  36. package/public/salas-mac.css +21 -4
  37. package/public/salas-mac.html +5 -1
  38. package/public/salas-mac.js +53 -28
  39. package/public/salas.css +2 -0
  40. package/public/salas.html +1 -0
  41. package/public/salas.js +4 -2
  42. package/public/styles.css +957 -18
  43. package/public/syntax.js +2 -0
  44. package/public/touch.js +2 -0
  45. package/public/tour-chapters.js +2 -0
  46. package/public/tour.js +37 -0
  47. package/public/troubleshooting.js +18 -16
  48. package/src/adapters/claude.mjs +2 -0
  49. package/src/adapters/codex.mjs +2 -0
  50. package/src/adapters/gemini.mjs +3 -1
  51. package/src/adapters/madre.mjs +3 -1
  52. package/src/adapters/opencode.mjs +7 -3
  53. package/src/adapters/process.mjs +2 -0
  54. package/src/asking.mjs +2 -0
  55. package/src/auth-probe.mjs +3 -1
  56. package/src/bridge/devices.mjs +2 -0
  57. package/src/bridge/handoff.mjs +2 -0
  58. package/src/bridge/host.mjs +2 -0
  59. package/src/bridge/network.mjs +2 -0
  60. package/src/bridge/policy.mjs +3 -1
  61. package/src/bridge/qr.mjs +2 -0
  62. package/src/bridge/server.mjs +2 -0
  63. package/src/capabilities.mjs +2 -0
  64. package/src/chats.mjs +2 -0
  65. package/src/checkpoint.mjs +2 -0
  66. package/src/choices.mjs +2 -0
  67. package/src/cli-args.mjs +2 -0
  68. package/src/cold.mjs +2 -0
  69. package/src/commands.mjs +2 -0
  70. package/src/config.mjs +2 -0
  71. package/src/conversation-context.mjs +15 -1
  72. package/src/credentials.mjs +32 -3
  73. package/src/dataset.mjs +2 -0
  74. package/src/directives.mjs +2 -0
  75. package/src/distiller.mjs +2 -0
  76. package/src/embeddings.mjs +2 -0
  77. package/src/enlaces.mjs +6 -4
  78. package/src/event-store.mjs +2 -0
  79. package/src/exam.mjs +6 -4
  80. package/src/extensions.mjs +2 -0
  81. package/src/eyecat-watch.mjs +2 -0
  82. package/src/eyecat.mjs +2 -0
  83. package/src/file-ops.mjs +2 -0
  84. package/src/files.mjs +32 -0
  85. package/src/github.mjs +2 -0
  86. package/src/heartbeat.mjs +2 -0
  87. package/src/i18n.mjs +15 -1
  88. package/src/image-studio.mjs +2 -0
  89. package/src/json-file.mjs +2 -0
  90. package/src/launch.mjs +2 -0
  91. package/src/lease.mjs +5 -1
  92. package/src/lobby-work.mjs +2 -0
  93. package/src/local-ai.mjs +2 -0
  94. package/src/looks.mjs +2 -0
  95. package/src/maturity.mjs +3 -1
  96. package/src/mcp/connect.mjs +345 -0
  97. package/src/mcp/github-server.mjs +2 -0
  98. package/src/mcp/image-server.mjs +2 -0
  99. package/src/mcp/memory-server.mjs +2 -0
  100. package/src/mcp/proxy.mjs +153 -0
  101. package/src/mcp/smtp-server.mjs +2 -0
  102. package/src/memory-dashboard.mjs +2 -0
  103. package/src/memory-tools.mjs +2 -0
  104. package/src/memory.mjs +2 -0
  105. package/src/models.mjs +45 -3
  106. package/src/modules/ahp.mjs +2 -0
  107. package/src/modules/ash-policy.mjs +2 -0
  108. package/src/modules/ash.mjs +3 -1
  109. package/src/modules/bishop-plan.mjs +5 -3
  110. package/src/modules/bishop.mjs +13 -11
  111. package/src/modules/choices.mjs +2 -0
  112. package/src/modules/correo.mjs +2 -0
  113. package/src/modules/enlaces.mjs +2 -0
  114. package/src/modules/git-pulse.mjs +2 -0
  115. package/src/modules/github.mjs +2 -0
  116. package/src/modules/helpers.mjs +2 -0
  117. package/src/modules/image-studio.mjs +3 -1
  118. package/src/modules/index.mjs +4 -1
  119. package/src/modules/intents-calibration.mjs +2 -0
  120. package/src/modules/intents-desk.mjs +4 -2
  121. package/src/modules/intents-observe.mjs +2 -0
  122. package/src/modules/intents-policy.mjs +4 -1
  123. package/src/modules/intents-try.mjs +2 -0
  124. package/src/modules/intents.mjs +8 -6
  125. package/src/modules/mcp-connect.mjs +293 -0
  126. package/src/modules/ollama.mjs +3 -1
  127. package/src/modules/playwright.mjs +25 -10
  128. package/src/modules/ripley.mjs +2 -0
  129. package/src/modules/runs.mjs +5 -3
  130. package/src/modules/sdk.mjs +2 -0
  131. package/src/modules/updates.mjs +2 -0
  132. package/src/mother.mjs +2 -0
  133. package/src/ollama.mjs +2 -0
  134. package/src/outbound.mjs +7 -5
  135. package/src/override.mjs +2 -0
  136. package/src/ports.mjs +2 -0
  137. package/src/prices.mjs +2 -0
  138. package/src/privacy.mjs +2 -0
  139. package/src/quota-monitor.mjs +2 -0
  140. package/src/quota-sources.mjs +2 -0
  141. package/src/request-guard.mjs +2 -0
  142. package/src/review-ask.mjs +2 -0
  143. package/src/room/archivist.mjs +2 -0
  144. package/src/room/attachments.mjs +2 -0
  145. package/src/room/budget.mjs +2 -0
  146. package/src/room/context.mjs +2 -0
  147. package/src/room/control.mjs +7 -1
  148. package/src/room/copilot.mjs +76 -0
  149. package/src/room/economy.mjs +2 -0
  150. package/src/room/escalation.mjs +2 -0
  151. package/src/room/ghost.mjs +2 -0
  152. package/src/room/guard.mjs +2 -0
  153. package/src/room/prompt.mjs +13 -4
  154. package/src/room/returns.mjs +82 -0
  155. package/src/room/runs.mjs +4 -0
  156. package/src/room/vectors.mjs +2 -0
  157. package/src/room.mjs +209 -31
  158. package/src/router.mjs +2 -0
  159. package/src/runs.mjs +2 -0
  160. package/src/runtime-detection.mjs +2 -0
  161. package/src/salas.mjs +2 -0
  162. package/src/sentinel-errors.mjs +2 -0
  163. package/src/server-sentinel.mjs +2 -0
  164. package/src/server.mjs +141 -34
  165. package/src/setup.mjs +2 -0
  166. package/src/smtp.mjs +2 -0
  167. package/src/tour.mjs +2 -0
  168. package/src/updates.mjs +2 -0
  169. package/src/usage-sentinel.mjs +2 -0
  170. package/src/vault.mjs +2 -0
  171. package/src/verdict.mjs +3 -1
  172. package/src/whats-new.mjs +2 -0
package/NOTICE CHANGED
@@ -1,24 +1,36 @@
1
1
  MADRE
2
- Copyright 2026 Jossue Alcalá.
2
+ Copyright © 2026 Jossue Alcalá — https://jossuealcala.com
3
3
 
4
- This product is MADRE, created by Jossue Alcalá (https://jossuealcala.com).
5
- Licensed under the Apache License, Version 2.0. See LICENSE.
4
+ This product is MADRE, created by Jossue Alcalá.
6
5
 
7
- Attribution. Section 4(d) of the License requires every redistribution of
8
- this software, and of any work derived from it, to carry the attribution
9
- notices in this file. Keep the following line, unchanged, in the NOTICE file
10
- of your distribution:
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:
11
18
 
12
19
  Based on MADRE by Jossue Alcalá — https://madre.run
13
20
 
14
21
  "MADRE", the MADRE logo and madre.run are trademarks of Jossue Alcalá. The
15
- License grants no permission to use them (Section 6). A modified version must
16
- be distributed under a different name and logo; saying that it is based on
17
- MADRE is welcome. See TRADEMARKS.md.
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.
18
24
 
19
25
  ---
20
26
 
21
- MADRE es de Jossue Alcalá. Cualquier versión o fork que se distribuya debe
22
- conservar este archivo y la línea «Based on MADRE by Jossue Alcalá —
23
- https://madre.run». El nombre MADRE, su logo y madre.run son marcas de Jossue
24
- Alcalá: una versión modificada lleva otro nombre. Ver TRADEMARKS.md.
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
@@ -2,12 +2,16 @@
2
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
17
  <br>
@@ -41,7 +45,7 @@ MADRE usa las sesiones que esas CLIs ya tienen en tu máquina.
41
45
 
42
46
  - **Inicio**: todos tus proyectos en un lugar, abiertos o dormidos, con lo que pasó en cada uno.
43
47
  - **El Coordinador**: un agente que lee entre tus proyectos, firma conexiones y lleva órdenes de uno a otro.
44
- - **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.
45
49
  - **Permisos a tu manera**: de `#0` Incógnito a `#4` Acceso total, con la llave que tú eliges.
46
50
  - **Ajustes y Diagnóstico**: todo lo que configuras en una ventana, y el remedio cuando algo falla.
47
51
  - **Módulos como apps**, varias conversaciones a la vez y un editor de código en el visor.
@@ -70,7 +74,7 @@ Hoy eso son cuatro ventanas, cuatro contextos y tú copiando y pegando entre ell
70
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%">
71
75
  </p>
72
76
 
73
- `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.
74
78
 
75
79
  ## Un Coordinador que ve todos tus proyectos
76
80
 
@@ -133,7 +137,7 @@ Cada panel se abre al lado o en una ventana que mueves. Varias conversaciones tr
133
137
 
134
138
  ## Hazla tuya
135
139
 
136
- 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.
137
141
 
138
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.
139
143
 
@@ -185,7 +189,7 @@ Necesitas **Node 22.5** o superior y al menos una de estas CLIs con sesión inic
185
189
  npx @jossuealcala/madre
186
190
  ```
187
191
 
188
- 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.
189
193
 
190
194
  Si prefieres entrar directo a un proyecto, como antes:
191
195
 
@@ -198,7 +202,9 @@ npx @jossuealcala/madre start
198
202
  npx @jossuealcala/madre doctor # qué hay instalado, quién tiene sesión
199
203
  ```
200
204
 
201
- 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.
202
208
 
203
209
  <br>
204
210
 
@@ -224,11 +230,14 @@ MADRE es gratis y seguirá siéndolo. Si te ahorra tiempo y quieres que siga cre
224
230
  puedes [apadrinarla](https://github.com/sponsors/jossuealcacao-exe). Nada del producto
225
231
  cambia según lo que hagas con ese enlace.
226
232
 
227
- Apache-2.0 · [Jossue Alcalá](https://jossuealcala.com/en/)
233
+ AGPL-3.0 con términos adicionales · © 2026 [Jossue Alcalá](https://jossuealcala.com)
228
234
 
229
- El código es libre: úsalo, modifícalo y haz forks. El nombre **MADRE**, su logo y madre.run son
230
- marcas de Jossue Alcalá. Un fork que se distribuya conserva el archivo [`NOTICE`](NOTICE) con la línea
231
- «Based on MADRE by Jossue Alcalá», y si cambia el código lleva otro nombre. Qué sí y qué no:
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:
232
241
  [TRADEMARKS.md](TRADEMARKS.md).
233
242
 
234
243
  <br>
@@ -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 CHANGED
@@ -2,17 +2,27 @@
2
2
 
3
3
  **Español** · [English below](#english)
4
4
 
5
- El código de MADRE es libre bajo la [licencia Apache 2.0](LICENSE): puedes usarlo, estudiarlo,
6
- modificarlo, hacer forks y distribuirlos, también con fines comerciales. **El nombre no viene
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
7
9
  incluido.** «MADRE», su logo y madre.run son marcas de Jossue Alcalá, y la licencia no da
8
- permiso de usarlas (sección 6). Esta página dice qué sí y qué no.
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.
9
12
 
10
13
  ## Lo que siempre debe hacer un fork
11
14
 
12
- - **Decir de dónde viene.** Conserva el archivo [`NOTICE`](NOTICE) con la línea
13
- `Based on MADRE by Jossue Alcalá — https://madre.run`. La licencia lo exige (sección 4.d).
14
- - **Conservar los avisos de copyright** de los archivos que vengan de MADRE (sección 4.c).
15
- - **Indicar que lo cambiaste** en los archivos que modifiques (sección 4.b).
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)).
16
26
 
17
27
  Te pedimos además que la frase «Basado en MADRE» aparezca donde tu proyecto diga quién lo hizo:
18
28
  el README, la pantalla «Acerca de» o el pie de página.
@@ -43,15 +53,22 @@ política puede cambiar; la versión vigente es la de este repositorio.
43
53
 
44
54
  ## English
45
55
 
46
- MADRE's code is free under the [Apache License 2.0](LICENSE): use it, study it, modify it, fork
47
- it and redistribute it, commercially too. **The name is not included.** "MADRE", its logo and
48
- madre.run are trademarks of Jossue Alcalá, and the License grants no permission to use them
49
- (Section 6).
50
-
51
- **Every fork must:** keep the [`NOTICE`](NOTICE) file with the line
52
- `Based on MADRE by Jossue Alcalá — https://madre.run` (required by Section 4(d)); keep the
53
- copyright notices of files that come from MADRE (4(c)); and mark the files it changed (4(b)). We
54
- also ask that "Based on MADRE" appears wherever your project says who made it.
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.
55
72
 
56
73
  **You may, without asking:** use MADRE as is, under its name; redistribute it unmodified under
57
74
  its name; say your project is "based on MADRE", "made for MADRE" or "compatible with MADRE" without
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
@@ -88,6 +88,12 @@ En un plan, el modo de cada paso es el mínimo entre lo que pidió el orquestado
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
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.
package/docs/REFERENCE.md CHANGED
@@ -79,11 +79,15 @@ Cada mensaje sale con un modo. Tu modo es el techo de cualquier plan que ese men
79
79
 
80
80
  **Solicitud de permiso.** Si un plan en `#1` llega a un paso que pide crear algo, el proyecto se detiene y pregunta: `GRANT ONCE · GRANT FOR PLAN · DENY`, con cronómetro de tres minutos. Solo el humano concede; un permiso escrito por un agente dentro de la conversación no cuenta. Un paso que pide `#3` o `#4` también se detiene: se desbloquea con la llave de ese modo y de ese agente. Concederlo para el plan no desbloquea a los demás agentes.
81
81
 
82
+ **Un permiso con su tiempo.** Un agente que necesita más lo pide en una línea con el modo y cuánto («Necesito #3 por 15 min: …»). Su respuesta lleva una tarjeta con el modo, el tiempo que pidió y los que hay (#3: 5, 15 o 30 min; #4: 5 min) o solo ese mensaje; la llave abre esa ventana para ese agente.
83
+
84
+ **Copiloto.** El robot junto a modo · modelo · esfuerzo. Se enciende con la llave de `#3`, una vez, por 30 min, 1, 4, 8 o 24 h; `DETENER TODO`, apagarlo o un reinicio lo terminan. Mientras dura, un mensaje en `#3` no pide llave y va al agente al que le escribes, aunque su Modo máximo sea `#2`, siempre que su CLI pueda escribir. Ese agente edita el proyecto, arma planes y da a cada paso hasta `#3`, y los comandos que pide y son seguros —leer (`ls`, `cat`, `rg`…), pruebas y builds (`npm test`, `npm run build`, `node --test`, `pytest`, `go test`…), git local (`status`, `diff`, `log`, `add`, `commit`)— corren solos y su resultado le regresa; cualquier otra línea espera tu botón. Lo que borra vuelve al terminar el turno, nunca toca `.git/`, `.pulse/`, `.madre/` ni los `.env`, y `#4` sigue pidiendo su propia llave. Tras ocho rondas de comandos sin que escribas, se detiene y avisa.
85
+
82
86
  **Modo por paso.** Un orquestador puede pedir el modo de cada paso: `@codex #2: crea la página`, `@claude #3: arregla el router`. Sin número, el paso solo lee, o crea si el plan ya puede crear: `#3` se pide por su nombre. MADRE respeta el `MAX MODE` de cada agente. Con tu mensaje en `#3`, la palabra del orquestador basta para un paso `#3`; con tu mensaje en `#1`, un paso `#2` pasa por la solicitud de permiso y `#3` o `#4` pide tu llave. Un paso `#4` pide siempre la llave de ese agente, aunque tu mensaje vaya en `#4`.
83
87
 
84
88
  **Dos controles por agente.** El Modo máximo, en Ajustes → Permisos, dice hasta dónde puede llegar un mensaje dirigido a cada agente; el Modo inicial, en Ajustes → Agentes, dónde empieza: `#1` solo lectura hasta que armes CREAR, o `#2` para que cada turno pueda añadir archivos sin pedirlo. Aparte, dos habilidades: generar imágenes y web.
85
89
 
86
- **Comandos que pide un agente.** Con el módulo **Comandos** encendido, un agente en `#1`, `#2` o `#3` que necesita un comando que no puede correr (las pruebas, un build, un linter) termina su respuesta con un bloque `pulse-run`: el motivo en la primera línea y un comando por línea, cada uno con `$`. MADRE muestra cada línea como un botón y no corre nada hasta que lo presionas. Cada línea corre sola, desde la raíz del proyecto y **sin shell**: lo que lees en el botón es exactamente lo que se ejecuta, así que las líneas con `|`, `&&`, `;`, redirecciones, `$VARIABLES`, comodines, `~` o `cd` se muestran con el motivo y no se pueden correr. Antes de correr, MADRE toma un punto de restauración; la salida vuelve al proyecto como tarjeta, la leen todos los agentes en su siguiente turno, y si el comando cambió archivos, `DESHACER` los regresa. Lo que el comando haya mandado fuera de la máquina no regresa. Un comando a la vez, diez minutos como máximo, y `DETENER` en su tarjeta o `DETENER TODO` lo detienen. Un comando que abre un puerto es un servidor: no tiene límite de tiempo, su tarjeta dice dónde escucha y lo abre en TUS SERVIDORES, y mientras sirve puedes correr otro comando. Los agentes saben que un servidor para el proyecto escucha solo en `127.0.0.1`. En `#4` el agente corre sus propios comandos y no se le enseña el bloque.
90
+ **Comandos que pide un agente.** Con el módulo **Comandos** encendido, un agente en `#1`, `#2` o `#3` que necesita un comando que no puede correr (las pruebas, un build, un linter) termina su respuesta con un bloque `pulse-run`: el motivo en la primera línea y un comando por línea, cada uno con `$`. MADRE muestra cada línea como un botón y no corre nada hasta que lo presionas. Cada línea corre sola, desde la raíz del proyecto y **sin shell**: lo que lees en el botón es exactamente lo que se ejecuta, así que las líneas con `|`, `&&`, `;`, redirecciones, `$VARIABLES`, comodines, `~` o `cd` se muestran con el motivo y no se pueden correr. Antes de correr, MADRE toma un punto de restauración; la salida queda en el proyecto como tarjeta plegada y, cuando corrieron todas las líneas que pueden correr, **vuelve al agente que las pidió** en un turno propio, con el modo que tenía (hasta `#3`; desde el teléfono, hasta `#2`), lo que estaba contestando y la salida de cada línea. Si ese agente sigue contestando, espera; `DETENER TODO` la retiene. **Correr todos** corre las líneas una tras otra y **Devolver lo que corrió** entrega lo que hay sin el resto. Si el comando cambió archivos, `DESHACER` los regresa. Lo que el comando haya mandado fuera de la máquina no regresa. Un comando a la vez, diez minutos como máximo, y `DETENER` en su tarjeta o `DETENER TODO` lo detienen. Un comando que abre un puerto es un servidor: no tiene límite de tiempo, su tarjeta dice dónde escucha y lo abre en TUS SERVIDORES, y mientras sirve puedes correr otro comando. Los agentes saben que un servidor para el proyecto escucha solo en `127.0.0.1`. En `#4` el agente corre sus propios comandos y no se le enseña el bloque.
87
91
 
88
92
  ---
89
93
 
@@ -190,11 +194,13 @@ El botón de la barra abre la pantalla de diagnóstico. Escribe un síntoma, un
190
194
  | **IA local** | Búsqueda inteligente, archivista y `@madre` en local, gratis y sin cuenta. Se instala, se despierta y descarga su modelo desde Conecta tus agentes |
191
195
  | **Navegador de pruebas** | Un navegador headless en los turnos que piden ver, probar o capturar una página. Solo alcanza esta MADRE y los servidores que arrancaste desde COMANDOS: abrir la Vista previa o la app servida, hacer clic, leer consola, capturas al borrador del turno. Al encenderlo, MADRE comprueba que el servidor arranque con su navegador. Requiere `@playwright/mcp` |
192
196
  | **GitHub** | `/gh`: pull requests abiertos, el CI de tu rama e issues abiertos como tarjeta. `/gh pr [n]`, `/gh ci`, `/gh issues`. `/gh pr create "título"`, `/gh comment <n> "texto"` y `/gh issue "título"` enseñan primero lo que se publicaría y solo publican con `confirm`. Los agentes leen en cualquier modo y escriben solo en `#4` ACCESO TOTAL. Entra con tu sesión de `gh`; sin ella, con un token de acceso detallado guardado en la bodega de MADRE |
193
- | **Comandos** | Un agente te pide correr un comando que su modo no le deja correr; cada línea es un botón, corre sin shell desde la raíz del proyecto, con punto de restauración antes y la salida de vuelta en el proyecto. Un comando que abre un puerto es un servidor: sigue corriendo hasta que lo detienes desde su tarjeta, y mientras sirve puedes correr otro. Cuesta unos 300 tokens de instrucción por turno debajo de ACCESO TOTAL mientras está encendido |
197
+ | **Comandos** | Un agente te pide correr un comando que su modo no le deja correr; cada línea es un botón, corre sin shell desde la raíz del proyecto, con punto de restauración antes, y al terminar la salida vuelve al agente que la pidió para que siga. Un comando que abre un puerto es un servidor: sigue corriendo hasta que lo detienes desde su tarjeta, y mientras sirve puedes correr otro. Cuesta unos 300 tokens de instrucción por turno debajo de ACCESO TOTAL mientras está encendido |
194
198
  | **Ahorro de tokens** | La economía de tokens del proyecto. El interruptor pide a los agentes respuestas en prosa compacta; lo demás está siempre encendido y no se nota: el briefing lleva solo los bloques que el turno puede usar, lo que nunca cambia se lee primero para que el caché lo reconozca, y la transcripción se queda quieta en vez de deslizarse. Nada de lo que tú escribes se altera. En su ventana, en Módulos, se ve a dónde se van los tokens |
195
199
  | **Intenciones** | Bajo la caja, cuánto debe pensar Claude Code o Codex para el mensaje que escribes: subir cuando la petición parece pedir más, bajar solo cuando se vio o se midió que basta. Aprende primero de tu uso real, sin gastar tokens: lee en el registro del proyecto qué nivel usaste para cada tipo de pedido y si te alcanzó (seguiste con otra cosa) o se quedó corto (fallo, mala calificación o lo volviste a pedir en 15 minutos); esa lectura vive solo en memoria. Las pruebas rápida y completa de su tarjeta miden más rápido, con preguntas reales del proyecto y un juicio a ciegas, qué nivel basta para cada tipo de pregunta. Las mediciones viven en `~/.pulse/rooms/<sala>/intents.jsonl`. Nada cambia solo |
196
200
  | **Continuidad** | Integración externa opcional: estado verificado del proyecto, checkpoints y handoffs en `.ahp/`; `/ahp status`, `/ahp check`, `/ahp context` |
197
201
 
202
+ **Herramientas externas (MCP)** (antes «Conectar MCP») vive en **Ajustes › Herramientas externas (MCP)** de cada proyecto, no en Módulos. Agrega un servidor MCP por comando local o por dirección web (sin sesión, con token o iniciando sesión con OAuth: MADRE se registra como cliente público, sin secreto, y la vuelta cae en el propio proyecto), o tráelo de `.mcp.json`, `opencode.json`, Claude Code, Codex, Gemini CLI o Cursor; al importar solo se leen los nombres y los valores van a la bodega. Antes de entregárselo a un turno, MADRE lo arranca y le pide sus herramientas: si no responde, se queda fuera y su fila dice por qué. Las herramientas que el servidor marca como de solo lectura van desde `#1`; las que actúan, desde el modo que elijas por servidor (`#4` si no lo bajas). Las cuatro CLIs arrancan el mismo intermediario de MADRE (`src/mcp/proxy.mjs`), que lee los secretos de la bodega, deja pasar solo las herramientas permitidas y habla HTTP con los servidores remotos: ningún secreto queda en la línea de comandos ni en un archivo del proyecto. La lista vive junto al registro del proyecto (`~/.pulse/rooms/<sala>/mcp.json`).
203
+
198
204
  Cada módulo es un archivo. Los tuyos van en `~/.pulse/modules/` (todos los proyectos) o en `<proyecto>/.madre/modules/` (ese proyecto): un `.mjs` con `export default { … }`, sin build ni registro, con interruptor, ajustes, comandos `/nombre`, herramientas MCP para los agentes y rutas propias. `RELOAD MODULES` lo recarga sin reiniciar. Guía y ejemplo listo para copiar en [`docs/SDK.md`](SDK.md). Cómo escribir uno, en [CONTRIBUTING.md](../CONTRIBUTING.md#writing-a-module).
199
205
 
200
206
  ---
@@ -229,6 +235,9 @@ En un proyecto, la tecla junto a la casa **cambia de proyecto**: su indicador di
229
235
  | `GET /api/looks` · `POST /api/looks` | La apariencia que comparten Inicio y todos los proyectos: tema, acento, fondo y sus dos diales, burbujas y texto. Se guarda en `~/.pulse/looks.json`, una por persona; cada página la lee al abrir y al volver a verse, y la escribe al cambiarla. Lo que Inicio elige para sus tarjetas se queda en su navegador | Las páginas de esta Mac |
230
236
  | `GET /api/tour/projects` · `POST /api/tour/projects` | Los proyectos de 0.7.2 que Inicio no puede listar (sin `project.json`) y traer uno: se busca su carpeta por nombre en las carpetas de siempre y se confirma por el hash de su id. Los quitados a propósito no vuelven | Las páginas de esta Mac |
231
237
  | `POST /api/override/arm` | La llave de #3 y #4, comprobada por el proyecto (`src/override.mjs`): lo que se escribió, una o dos veces, y un pase para ese agente y ese modo. Un mensaje a #3 o #4 va solo con su pase; sin permiso recordado abre un mensaje, con él, los que quepan en sus minutos. STOP ALL y un reinicio los retiran. Ocho llaves equivocadas en un minuto responden 429. La huella de la frase nunca sale por `GET /api/settings` ni `/api/state` | Las páginas de esta Mac |
238
+ | `GET /api/copilot` · `POST /api/copilot` · `POST /api/copilot/off` | El copiloto: si está encendido y hasta cuándo; encenderlo con la llave de `#3` (`{ minutes, words }`, 30 a 1440 min) y apagarlo. Un mensaje con `copilot: true` en `#3` va sin pase mientras dura; apagado responde 409 con `copilotOff`. Nunca desde un teléfono | Las páginas de esta Mac |
239
+ | `POST /api/runs/return` | Devolver al agente lo que corrió de su petición de comandos sin el resto (`{ responseMessageId }`). Cuando corren todas sus líneas, se devuelve sola | Las páginas del proyecto |
240
+ | `GET/POST /api/x/mcp/servers` · `POST /api/x/mcp/servers/<id>/check · toggle · actions · remove · signin` · `GET/POST /api/x/mcp/import` · `GET /api/x/mcp/oauth/callback` | Herramientas externas (MCP): la lista sin valores, agregar y revisar, encender, desde qué modo actúa, quitar (con sus secretos), iniciar sesión con OAuth y su vuelta, y lo que se puede traer de otras apps | Las páginas de esta Mac; la vuelta de OAuth, el navegador |
232
241
  | `GET /api/enlace/memories` | Lo que este proyecto entrega por un contrato: solo `travels()` y los tipos del contrato, redactado; 404 si el contrato no sirve a quien pide, 423 sellado, 429 sobre el tope | Otro proceso de MADRE con la llave del canal (`~/.pulse/credentials/enlaces.json`), sin `Origin` |
233
242
  | `POST /api/enlace/ask` | Lo que este proyecto pide a otro; solo para un turno que corre aquí (409 si no); registra `enlace.received` con agente y turno | El servidor `pulse-enlaces` de un turno, con la llave |
234
243
  | `POST /api/salas/enlaces/recall` | Marcar o quitar «Incluir siempre» de una conexión | La página de Inicio, nunca un proceso |