@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.
- package/ADDITIONAL-TERMS.md +93 -0
- package/CHANGELOG.en.md +1945 -0
- package/CHANGELOG.md +34 -1
- package/CONTRIBUTING.md +1 -1
- package/LICENSE +661 -202
- package/NOTICE +26 -14
- package/README.en.md +245 -0
- package/README.md +19 -10
- package/TRADEMARKS.en.md +50 -0
- package/TRADEMARKS.md +33 -16
- package/bin/madre.mjs +2 -0
- package/docs/INTERNALS.md +6 -0
- package/docs/REFERENCE.md +11 -2
- package/docs/en/INTERNALS.md +103 -0
- package/docs/en/REFERENCE.md +339 -0
- package/docs/en/SDK.md +306 -0
- package/docs/en/training/README.md +59 -0
- package/docs/training/README.md +20 -8
- package/docs/training/train.sh +2 -1
- package/package.json +11 -3
- package/public/abduction.js +2 -0
- package/public/app.js +1549 -409
- package/public/attribution.js +71 -0
- package/public/brands.js +3 -1
- package/public/editor.js +2 -0
- package/public/es.js +620 -400
- package/public/i18n.js +25 -1
- package/public/index.html +13 -10
- package/public/inquiry.js +2 -0
- package/public/loader.js +2 -0
- package/public/macroverso.js +2 -0
- package/public/nostromo-engine.js +2 -0
- package/public/resay.js +6 -0
- package/public/review-ask.js +2 -0
- package/public/routing.js +23 -1
- package/public/salas-mac.css +21 -4
- package/public/salas-mac.html +5 -1
- package/public/salas-mac.js +53 -28
- package/public/salas.css +2 -0
- package/public/salas.html +1 -0
- package/public/salas.js +4 -2
- package/public/styles.css +957 -18
- package/public/syntax.js +2 -0
- package/public/touch.js +2 -0
- package/public/tour-chapters.js +2 -0
- package/public/tour.js +37 -0
- package/public/troubleshooting.js +18 -16
- package/src/adapters/claude.mjs +2 -0
- package/src/adapters/codex.mjs +2 -0
- package/src/adapters/gemini.mjs +3 -1
- package/src/adapters/madre.mjs +3 -1
- package/src/adapters/opencode.mjs +7 -3
- package/src/adapters/process.mjs +2 -0
- package/src/asking.mjs +2 -0
- package/src/auth-probe.mjs +3 -1
- package/src/bridge/devices.mjs +2 -0
- package/src/bridge/handoff.mjs +2 -0
- package/src/bridge/host.mjs +2 -0
- package/src/bridge/network.mjs +2 -0
- package/src/bridge/policy.mjs +3 -1
- package/src/bridge/qr.mjs +2 -0
- package/src/bridge/server.mjs +2 -0
- package/src/capabilities.mjs +2 -0
- package/src/chats.mjs +2 -0
- package/src/checkpoint.mjs +2 -0
- package/src/choices.mjs +2 -0
- package/src/cli-args.mjs +2 -0
- package/src/cold.mjs +2 -0
- package/src/commands.mjs +2 -0
- package/src/config.mjs +2 -0
- package/src/conversation-context.mjs +15 -1
- package/src/credentials.mjs +32 -3
- package/src/dataset.mjs +2 -0
- package/src/directives.mjs +2 -0
- package/src/distiller.mjs +2 -0
- package/src/embeddings.mjs +2 -0
- package/src/enlaces.mjs +6 -4
- package/src/event-store.mjs +2 -0
- package/src/exam.mjs +6 -4
- package/src/extensions.mjs +2 -0
- package/src/eyecat-watch.mjs +2 -0
- package/src/eyecat.mjs +2 -0
- package/src/file-ops.mjs +2 -0
- package/src/files.mjs +32 -0
- package/src/github.mjs +2 -0
- package/src/heartbeat.mjs +2 -0
- package/src/i18n.mjs +15 -1
- package/src/image-studio.mjs +2 -0
- package/src/json-file.mjs +2 -0
- package/src/launch.mjs +2 -0
- package/src/lease.mjs +5 -1
- package/src/lobby-work.mjs +2 -0
- package/src/local-ai.mjs +2 -0
- package/src/looks.mjs +2 -0
- package/src/maturity.mjs +3 -1
- package/src/mcp/connect.mjs +345 -0
- package/src/mcp/github-server.mjs +2 -0
- package/src/mcp/image-server.mjs +2 -0
- package/src/mcp/memory-server.mjs +2 -0
- package/src/mcp/proxy.mjs +153 -0
- package/src/mcp/smtp-server.mjs +2 -0
- package/src/memory-dashboard.mjs +2 -0
- package/src/memory-tools.mjs +2 -0
- package/src/memory.mjs +2 -0
- package/src/models.mjs +45 -3
- package/src/modules/ahp.mjs +2 -0
- package/src/modules/ash-policy.mjs +2 -0
- package/src/modules/ash.mjs +3 -1
- package/src/modules/bishop-plan.mjs +5 -3
- package/src/modules/bishop.mjs +13 -11
- package/src/modules/choices.mjs +2 -0
- package/src/modules/correo.mjs +2 -0
- package/src/modules/enlaces.mjs +2 -0
- package/src/modules/git-pulse.mjs +2 -0
- package/src/modules/github.mjs +2 -0
- package/src/modules/helpers.mjs +2 -0
- package/src/modules/image-studio.mjs +3 -1
- package/src/modules/index.mjs +4 -1
- package/src/modules/intents-calibration.mjs +2 -0
- package/src/modules/intents-desk.mjs +4 -2
- package/src/modules/intents-observe.mjs +2 -0
- package/src/modules/intents-policy.mjs +4 -1
- package/src/modules/intents-try.mjs +2 -0
- package/src/modules/intents.mjs +8 -6
- package/src/modules/mcp-connect.mjs +293 -0
- package/src/modules/ollama.mjs +3 -1
- package/src/modules/playwright.mjs +25 -10
- package/src/modules/ripley.mjs +2 -0
- package/src/modules/runs.mjs +5 -3
- package/src/modules/sdk.mjs +2 -0
- package/src/modules/updates.mjs +2 -0
- package/src/mother.mjs +2 -0
- package/src/ollama.mjs +2 -0
- package/src/outbound.mjs +7 -5
- package/src/override.mjs +2 -0
- package/src/ports.mjs +2 -0
- package/src/prices.mjs +2 -0
- package/src/privacy.mjs +2 -0
- package/src/quota-monitor.mjs +2 -0
- package/src/quota-sources.mjs +2 -0
- package/src/request-guard.mjs +2 -0
- package/src/review-ask.mjs +2 -0
- package/src/room/archivist.mjs +2 -0
- package/src/room/attachments.mjs +2 -0
- package/src/room/budget.mjs +2 -0
- package/src/room/context.mjs +2 -0
- package/src/room/control.mjs +7 -1
- package/src/room/copilot.mjs +76 -0
- package/src/room/economy.mjs +2 -0
- package/src/room/escalation.mjs +2 -0
- package/src/room/ghost.mjs +2 -0
- package/src/room/guard.mjs +2 -0
- package/src/room/prompt.mjs +13 -4
- package/src/room/returns.mjs +82 -0
- package/src/room/runs.mjs +4 -0
- package/src/room/vectors.mjs +2 -0
- package/src/room.mjs +209 -31
- package/src/router.mjs +2 -0
- package/src/runs.mjs +2 -0
- package/src/runtime-detection.mjs +2 -0
- package/src/salas.mjs +2 -0
- package/src/sentinel-errors.mjs +2 -0
- package/src/server-sentinel.mjs +2 -0
- package/src/server.mjs +141 -34
- package/src/setup.mjs +2 -0
- package/src/smtp.mjs +2 -0
- package/src/tour.mjs +2 -0
- package/src/updates.mjs +2 -0
- package/src/usage-sentinel.mjs +2 -0
- package/src/vault.mjs +2 -0
- package/src/verdict.mjs +3 -1
- package/src/whats-new.mjs +2 -0
package/NOTICE
CHANGED
|
@@ -1,24 +1,36 @@
|
|
|
1
1
|
MADRE
|
|
2
|
-
Copyright 2026 Jossue
|
|
2
|
+
Copyright © 2026 Jossue Alcalá — https://jossuealcala.com
|
|
3
3
|
|
|
4
|
-
This product is MADRE, created by Jossue
|
|
5
|
-
Licensed under the Apache License, Version 2.0. See LICENSE.
|
|
4
|
+
This product is MADRE, created by Jossue Alcalá.
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
|
16
|
-
|
|
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á.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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-
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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
|
-
|
|
233
|
+
AGPL-3.0 con términos adicionales · © 2026 [Jossue Alcalá](https://jossuealcala.com)
|
|
228
234
|
|
|
229
|
-
El código es libre
|
|
230
|
-
|
|
231
|
-
|
|
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>
|
package/TRADEMARKS.en.md
ADDED
|
@@ -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 [
|
|
6
|
-
|
|
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
|
-
|
|
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
|
-
- **
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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 [
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
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
|
|
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
|
|
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 |
|