@jossuealcala/madre 1.0.1 → 1.0.3
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 +2013 -0
- package/CHANGELOG.md +102 -1
- package/CONTRIBUTING.md +1 -1
- package/LICENSE +661 -202
- package/NOTICE +26 -14
- package/README.en.md +241 -0
- package/README.md +21 -12
- package/TRADEMARKS.en.md +50 -0
- package/TRADEMARKS.md +33 -16
- package/bin/madre.cjs +40 -0
- package/bin/madre.mjs +7 -0
- package/docs/INTERNALS.md +6 -0
- package/docs/REFERENCE.md +40 -5
- package/docs/SDK.md +4 -2
- package/docs/en/INTERNALS.md +103 -0
- package/docs/en/REFERENCE.md +365 -0
- package/docs/en/SDK.md +308 -0
- package/docs/en/training/README.md +59 -0
- package/docs/training/README.md +48 -9
- package/docs/training/train.sh +7 -2
- package/package.json +13 -5
- package/public/abduction.js +2 -0
- package/public/app.js +3154 -539
- package/public/attribution.js +114 -0
- package/public/brands.js +23 -6
- package/public/code-tools.js +143 -0
- package/public/editor.js +22 -4
- package/public/es.js +1004 -416
- package/public/hardware.js +50 -0
- package/public/i18n.js +25 -1
- package/public/index.html +18 -11
- package/public/inquiry.js +2 -0
- package/public/loader.js +2 -0
- package/public/macroverso.js +189 -96
- package/public/market-art.js +161 -0
- package/public/market-view.js +529 -0
- package/public/market.js +189 -0
- package/public/neural.js +110 -0
- package/public/nostromo-engine.js +414 -47
- package/public/power.js +100 -0
- package/public/resay.js +11 -0
- package/public/review-ask.js +2 -0
- package/public/routing.js +23 -1
- package/public/salas-mac.css +119 -18
- package/public/salas-mac.html +14 -2
- package/public/salas-mac.js +358 -56
- package/public/salas.css +2 -0
- package/public/salas.html +1 -0
- package/public/salas.js +4 -2
- package/public/styles.css +1793 -77
- package/public/syntax.js +2 -0
- package/public/touch.js +2 -0
- package/public/tour-chapters.js +2 -0
- package/public/tour.js +84 -5
- package/public/troubleshooting.js +24 -17
- package/public/wallpaper.js +275 -0
- package/src/adapters/claude.mjs +2 -0
- package/src/adapters/codex.mjs +2 -0
- package/src/adapters/cursor.mjs +96 -0
- package/src/adapters/gemini.mjs +13 -4
- package/src/adapters/madre.mjs +5 -2
- 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 +145 -12
- 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 +11 -0
- package/src/chats.mjs +2 -0
- package/src/checkpoint.mjs +18 -1
- 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 +35 -3
- package/src/dataset.mjs +78 -4
- package/src/directives.mjs +2 -0
- package/src/distiller.mjs +2 -0
- package/src/embeddings.mjs +2 -0
- package/src/enlaces.mjs +214 -6
- package/src/event-store.mjs +2 -0
- package/src/exam.mjs +6 -4
- package/src/extensions.mjs +13 -3
- 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 +31 -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 +127 -2
- package/src/market-key.mjs +8 -0
- package/src/market-remote.mjs +239 -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 +49 -3
- package/src/module-scope.mjs +68 -0
- package/src/modules/ahp.mjs +104 -7
- package/src/modules/ash-policy.mjs +2 -0
- package/src/modules/ash.mjs +3 -1
- package/src/modules/bishop-exam.mjs +122 -0
- package/src/modules/bishop-plan.mjs +5 -3
- package/src/modules/bishop.mjs +84 -23
- package/src/modules/choices.mjs +2 -0
- package/src/modules/correo.mjs +2 -0
- package/src/modules/enlaces.mjs +89 -6
- 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 +13 -2
- 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 +11 -7
- package/src/modules/local-models.mjs +124 -0
- package/src/modules/mcp-connect.mjs +293 -0
- package/src/modules/ollama.mjs +15 -4
- package/src/modules/playwright.mjs +88 -15
- package/src/modules/ripley.mjs +2 -0
- package/src/modules/runs.mjs +5 -3
- package/src/modules/sdk.mjs +63 -9
- package/src/modules/updates.mjs +2 -0
- package/src/mother.mjs +2 -0
- package/src/npm-launch.mjs +18 -0
- package/src/ollama.mjs +8 -5
- package/src/outbound.mjs +16 -6
- package/src/override.mjs +2 -0
- package/src/ports.mjs +6 -2
- 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 +25 -5
- 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 +223 -35
- package/src/router.mjs +3 -1
- package/src/runs.mjs +6 -1
- package/src/runtime-detection.mjs +11 -0
- package/src/salas.mjs +28 -0
- package/src/sentinel-errors.mjs +2 -0
- package/src/server-sentinel.mjs +2 -0
- package/src/server.mjs +757 -81
- package/src/setup.mjs +3 -1
- 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,241 @@
|
|
|
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, OpenCode and Cursor 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
|
+
<img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/en/home.webp" alt="MADRE Home: the Coordinator with its recent summary, who is waiting for you, the connections and one card per project" width="100%">
|
|
32
|
+
</p>
|
|
33
|
+
|
|
34
|
+
<p align="center"><sub>Home, with all your projects. The 90-second tour is <a href="https://github.com/jossuealcacao-exe/madre/blob/main/docs/media/1.0/madre-1-0.mp4">in Spanish for now</a>. Also at <a href="https://madre.run/en/">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/en/one-chat.webp" alt="All your AIs in one chat: each answer with its agent, and the handoff line that says how many messages the next one 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
|
+
Today that's four windows, four contexts and you copying and pasting between them. MADRE turns it into one thread.
|
|
64
|
+
|
|
65
|
+
## All your projects, in one place
|
|
66
|
+
|
|
67
|
+
<p align="center">
|
|
68
|
+
<img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/en/connect-agents.webp" alt="The first time in Home: connect your agents, once for all your projects" width="100%">
|
|
69
|
+
</p>
|
|
70
|
+
|
|
71
|
+
`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.
|
|
72
|
+
|
|
73
|
+
## A Coordinator that sees all your projects
|
|
74
|
+
|
|
75
|
+
<p align="center">
|
|
76
|
+
<img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/en/coordinator.webp" alt="The Coordinator answers what was decided in two connected projects, saying which one each fact came from" width="100%">
|
|
77
|
+
</p>
|
|
78
|
+
|
|
79
|
+
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`.
|
|
80
|
+
|
|
81
|
+
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.
|
|
82
|
+
|
|
83
|
+
## A memory that outlives the session
|
|
84
|
+
|
|
85
|
+
<p align="center">
|
|
86
|
+
<img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/en/memory-map.webp" alt="The Memory map: colored memories around a magma core, joined by their links" width="100%">
|
|
87
|
+
</p>
|
|
88
|
+
|
|
89
|
+
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.
|
|
90
|
+
|
|
91
|
+
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.
|
|
92
|
+
|
|
93
|
+
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.
|
|
94
|
+
|
|
95
|
+
## They read by default. They write when you say so.
|
|
96
|
+
|
|
97
|
+
<p align="center">
|
|
98
|
+
<img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/en/modes.webp" alt="The mode menu, from #0 Incognito to #4 Full access" width="60%">
|
|
99
|
+
</p>
|
|
100
|
+
|
|
101
|
+
Every message goes out with a permission mode, and your mode is the ceiling for everything that message starts.
|
|
102
|
+
|
|
103
|
+
| | | |
|
|
104
|
+
|---|---|---|
|
|
105
|
+
| `#1` | **CHAT ONLY** | Read and coordinate. The default. |
|
|
106
|
+
| `#2` | **CREATE** | Add new files. Whatever already existed is restored when it's done. |
|
|
107
|
+
| `#3` | **EDIT** | Edit the project. A restore point before, a list of changes and `UNDO` after. |
|
|
108
|
+
| `#4` | **FULL ACCESS** | Commands, `git push`, deploys. Asks for the key twice. |
|
|
109
|
+
|
|
110
|
+
There's also `#0 INCOGNITO`, for what shouldn't be kept anywhere.
|
|
111
|
+
|
|
112
|
+
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.
|
|
113
|
+
|
|
114
|
+
<p align="center">
|
|
115
|
+
<img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/en/undo.webp" alt="Claude changed two files in #3 Edit and the Undo button takes the project back to the restore point" width="60%">
|
|
116
|
+
</p>
|
|
117
|
+
|
|
118
|
+
## Your space, your way
|
|
119
|
+
|
|
120
|
+
<p align="center">
|
|
121
|
+
<img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/en/workspace.webp" alt="The conversation on the left and the code editor beside it, in Edit mode" width="100%">
|
|
122
|
+
</p>
|
|
123
|
+
|
|
124
|
+
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.
|
|
125
|
+
|
|
126
|
+
<br>
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
<br>
|
|
131
|
+
|
|
132
|
+
## Make it yours
|
|
133
|
+
|
|
134
|
+
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.
|
|
135
|
+
|
|
136
|
+
**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.
|
|
137
|
+
|
|
138
|
+
**Or you don't write it.** In the text box:
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
/module a command that tells me what changed in the repo this week
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
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.
|
|
145
|
+
|
|
146
|
+
**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.
|
|
147
|
+
|
|
148
|
+
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.
|
|
149
|
+
|
|
150
|
+
**[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).
|
|
151
|
+
|
|
152
|
+
<br>
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
<br>
|
|
157
|
+
|
|
158
|
+
## What MADRE is not
|
|
159
|
+
|
|
160
|
+
This matters more than any feature.
|
|
161
|
+
|
|
162
|
+
**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.
|
|
163
|
+
|
|
164
|
+
**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.
|
|
165
|
+
|
|
166
|
+
**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.
|
|
167
|
+
|
|
168
|
+
**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.
|
|
169
|
+
|
|
170
|
+
**Zero dependencies.** Node and nothing else.
|
|
171
|
+
|
|
172
|
+
<br>
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
<br>
|
|
177
|
+
|
|
178
|
+
## Getting started
|
|
179
|
+
|
|
180
|
+
You need **Node 22.5** or later and at least one of these CLIs with a signed-in session: Codex, Claude Code, Gemini CLI, OpenCode or Cursor (`cursor-agent`). Cursor, for now, reads and answers; it does not write in your project yet.
|
|
181
|
+
|
|
182
|
+
```
|
|
183
|
+
npx @jossuealcala/madre
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
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.
|
|
187
|
+
|
|
188
|
+
If you'd rather go straight into a project, as before:
|
|
189
|
+
|
|
190
|
+
```
|
|
191
|
+
cd your-project
|
|
192
|
+
npx @jossuealcala/madre start
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
```
|
|
196
|
+
npx @jossuealcala/madre doctor # what's installed, who's signed in
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
**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`.
|
|
200
|
+
|
|
201
|
+
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.
|
|
202
|
+
|
|
203
|
+
<br>
|
|
204
|
+
|
|
205
|
+
**How each thing works, with the exact numbers:** [docs/en/REFERENCE.md](docs/en/REFERENCE.md)
|
|
206
|
+
**How it works inside:** [docs/en/INTERNALS.md](docs/en/INTERNALS.md) · **Write a module:** [docs/en/SDK.md](docs/en/SDK.md)
|
|
207
|
+
|
|
208
|
+
<br>
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
<br>
|
|
213
|
+
|
|
214
|
+
## Status
|
|
215
|
+
|
|
216
|
+
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).
|
|
217
|
+
|
|
218
|
+
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).
|
|
219
|
+
|
|
220
|
+
Problems: from any fix in Diagnostics ("Not fixed?") or in [issues](https://github.com/jossuealcacao-exe/madre/issues).
|
|
221
|
+
Security: [SECURITY.md](SECURITY.md) · Contributing: [CONTRIBUTING.md](CONTRIBUTING.md)
|
|
222
|
+
|
|
223
|
+
MADRE is free and will stay that way. If it saves you time and you want it to keep growing,
|
|
224
|
+
you can [sponsor it](https://github.com/sponsors/jossuealcacao-exe). Nothing in the product
|
|
225
|
+
changes based on what you do with that link.
|
|
226
|
+
|
|
227
|
+
AGPL-3.0 with additional terms · © 2026 [Jossue Alcalá](https://jossuealcala.com/en/)
|
|
228
|
+
|
|
229
|
+
The code is free software under the [GNU AGPL v3](LICENSE) with [additional terms](ADDITIONAL-TERMS.md):
|
|
230
|
+
use it, modify it and fork it, as long as your version stays open under the same license and keeps the
|
|
231
|
+
authorship visible —«MADRE ‹version› · © 2026 Jossue Alcalá» in the corner of every project and of Home,
|
|
232
|
+
linked to jossuealcala.com, or «Built with MADRE by Jossue Alcalá» under another name. The name
|
|
233
|
+
**MADRE**, its logo and madre.run are trademarks of Jossue Alcalá: a modified version goes by another
|
|
234
|
+
name. Up to 1.0.1, MADRE was published under the Apache License 2.0. What's allowed and what isn't:
|
|
235
|
+
[TRADEMARKS.en.md](TRADEMARKS.en.md).
|
|
236
|
+
|
|
237
|
+
<br>
|
|
238
|
+
|
|
239
|
+
```
|
|
240
|
+
NOBODY DELETES MOTHER'S MEMORY.
|
|
241
|
+
```
|
package/README.md
CHANGED
|
@@ -2,19 +2,23 @@
|
|
|
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, OpenCode and Cursor 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>
|
|
14
18
|
|
|
15
19
|
# Todas tus IAs en un mismo chat.
|
|
16
20
|
|
|
17
|
-
Codex, Claude Code, Gemini CLI y
|
|
21
|
+
Codex, Claude Code, Gemini CLI, OpenCode y Cursor trabajando sobre tus proyectos,
|
|
18
22
|
en la misma conversación, recordando lo mismo. Todos tus proyectos en un lugar,
|
|
19
23
|
y un Coordinador que los ve desde arriba.
|
|
20
24
|
|
|
@@ -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
|
|
|
@@ -179,13 +183,13 @@ Esto importa más que cualquier función.
|
|
|
179
183
|
|
|
180
184
|
## Empezar
|
|
181
185
|
|
|
182
|
-
Necesitas **Node 22.5** o superior y al menos una de estas CLIs con sesión iniciada: Codex, Claude Code, Gemini CLI
|
|
186
|
+
Necesitas **Node 22.5** o superior y al menos una de estas CLIs con sesión iniciada: Codex, Claude Code, Gemini CLI, OpenCode o Cursor (`cursor-agent`). Cursor, por ahora, lee y contesta; todavía no escribe en tu proyecto.
|
|
183
187
|
|
|
184
188
|
```
|
|
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.cjs
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
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
|
|
4
|
+
// The door `madre` and `npx @jossuealcala/madre` come in by (2026-10-18). It only asks which Node is
|
|
5
|
+
// running, in words any Node can read, and then hands over to bin/madre.mjs.
|
|
6
|
+
//
|
|
7
|
+
// madre.mjs is written for today's Node, and an old one (a server on Node 12, the first report)
|
|
8
|
+
// stops while reading it, before its own version check can speak: the person saw npm's
|
|
9
|
+
// EBADENGINE warnings and «madre: Permission denied», and nothing about what to do. Kept to the
|
|
10
|
+
// plainest JavaScript on purpose: no `??`, no `?.`, no `import` the reader would choke on.
|
|
11
|
+
'use strict';
|
|
12
|
+
|
|
13
|
+
var parts = String(process.versions.node).split('.');
|
|
14
|
+
var major = Number(parts[0]);
|
|
15
|
+
var minor = Number(parts[1]);
|
|
16
|
+
|
|
17
|
+
if (major < 22 || (major === 22 && minor < 5)) {
|
|
18
|
+
process.stderr.write([
|
|
19
|
+
'',
|
|
20
|
+
' MADRE necesita Node 22.5 o más nuevo, y esta computadora tiene ' + process.version + '.',
|
|
21
|
+
' Instala Node 22 (o más nuevo) desde https://nodejs.org, o con nvm: nvm install 22',
|
|
22
|
+
' y vuelve a correr el mismo comando.',
|
|
23
|
+
'',
|
|
24
|
+
' MADRE needs Node 22.5 or newer, and this computer has ' + process.version + '.',
|
|
25
|
+
' Install Node 22 (or newer) from https://nodejs.org, or with nvm: nvm install 22',
|
|
26
|
+
' and run the same command again.',
|
|
27
|
+
'',
|
|
28
|
+
'',
|
|
29
|
+
].join('\n'));
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Read only by a Node that can: an old one never parses this line, because it is a string.
|
|
34
|
+
var path = require('path');
|
|
35
|
+
var url = require('url');
|
|
36
|
+
new Function('target', 'return import(target)')(url.pathToFileURL(path.join(__dirname, 'madre.mjs')).href)
|
|
37
|
+
.catch(function (error) {
|
|
38
|
+
process.stderr.write('\n MADRE could not start: ' + (error && error.stack ? error.stack : error) + '\n\n');
|
|
39
|
+
process.exit(1);
|
|
40
|
+
});
|
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';
|
|
@@ -12,8 +14,13 @@ import { applyConfigToEnv, loadConfig } from '../src/config.mjs';
|
|
|
12
14
|
import { isOnline, runSetup } from '../src/setup.mjs';
|
|
13
15
|
import { parseArgs } from '../src/cli-args.mjs';
|
|
14
16
|
import { ensureSalasProject, isSalasRoom, projectRootFor } from '../src/salas.mjs';
|
|
17
|
+
import { forgetNpxLaunch } from '../src/npm-launch.mjs';
|
|
15
18
|
import { createServer } from 'node:net';
|
|
16
19
|
|
|
20
|
+
// Before anything is run: what npx left about the call that started MADRE is not passed on to the
|
|
21
|
+
// installers, agents and commands MADRE starts (src/npm-launch.mjs).
|
|
22
|
+
forgetNpxLaunch(process.env);
|
|
23
|
+
|
|
17
24
|
const cli = parseArgs(process.argv.slice(2));
|
|
18
25
|
const { command } = cli;
|
|
19
26
|
const option = (name, fallback) => cli.option(name.replace(/^--/, ''), fallback);
|
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.
|