@jungjaehoon/mama-os 0.17.0 → 0.18.0
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/README.md +132 -825
- package/dist/agent/agent-loop.d.ts +30 -5
- package/dist/agent/agent-loop.d.ts.map +1 -1
- package/dist/agent/agent-loop.js +68 -13
- package/dist/agent/agent-loop.js.map +1 -1
- package/dist/agent/code-act/constants.d.ts.map +1 -1
- package/dist/agent/code-act/constants.js +5 -1
- package/dist/agent/code-act/constants.js.map +1 -1
- package/dist/agent/code-act/host-bridge.d.ts.map +1 -1
- package/dist/agent/code-act/host-bridge.js +167 -8
- package/dist/agent/code-act/host-bridge.js.map +1 -1
- package/dist/agent/code-act/types.d.ts +1 -1
- package/dist/agent/code-act/types.d.ts.map +1 -1
- package/dist/agent/codex-mcp-process.d.ts +1 -1
- package/dist/agent/codex-mcp-process.js +1 -1
- package/dist/agent/gateway-tool-executor.d.ts +43 -1
- package/dist/agent/gateway-tool-executor.d.ts.map +1 -1
- package/dist/agent/gateway-tool-executor.js +370 -101
- package/dist/agent/gateway-tool-executor.js.map +1 -1
- package/dist/agent/gateway-tools.md +18 -4
- package/dist/agent/tool-registry.d.ts +1 -1
- package/dist/agent/tool-registry.d.ts.map +1 -1
- package/dist/agent/tool-registry.js +60 -8
- package/dist/agent/tool-registry.js.map +1 -1
- package/dist/agent/types.d.ts +10 -2
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/api/auth-middleware.d.ts.map +1 -1
- package/dist/api/auth-middleware.js +7 -0
- package/dist/api/auth-middleware.js.map +1 -1
- package/dist/api/connector-feed-handler.d.ts +42 -0
- package/dist/api/connector-feed-handler.d.ts.map +1 -0
- package/dist/api/connector-feed-handler.js +180 -0
- package/dist/api/connector-feed-handler.js.map +1 -0
- package/dist/api/graph-api.d.ts.map +1 -1
- package/dist/api/graph-api.js +35 -1
- package/dist/api/graph-api.js.map +1 -1
- package/dist/api/heartbeat-handler.d.ts +1 -1
- package/dist/api/heartbeat-handler.d.ts.map +1 -1
- package/dist/api/heartbeat-handler.js +21 -6
- package/dist/api/heartbeat-handler.js.map +1 -1
- package/dist/api/index.d.ts +22 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +65 -6
- package/dist/api/index.js.map +1 -1
- package/dist/api/intelligence-handler.d.ts +110 -0
- package/dist/api/intelligence-handler.d.ts.map +1 -0
- package/dist/api/intelligence-handler.js +237 -0
- package/dist/api/intelligence-handler.js.map +1 -0
- package/dist/api/report-handler.d.ts +25 -0
- package/dist/api/report-handler.d.ts.map +1 -0
- package/dist/api/report-handler.js +93 -0
- package/dist/api/report-handler.js.map +1 -0
- package/dist/api/wiki-handler.d.ts +19 -0
- package/dist/api/wiki-handler.d.ts.map +1 -0
- package/dist/api/wiki-handler.js +136 -0
- package/dist/api/wiki-handler.js.map +1 -0
- package/dist/cli/commands/start.d.ts +22 -3
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +160 -2854
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/runtime/agent-loop-init.d.ts +41 -0
- package/dist/cli/runtime/agent-loop-init.d.ts.map +1 -0
- package/dist/cli/runtime/agent-loop-init.js +216 -0
- package/dist/cli/runtime/agent-loop-init.js.map +1 -0
- package/dist/cli/runtime/api-routes-init.d.ts +41 -0
- package/dist/cli/runtime/api-routes-init.d.ts.map +1 -0
- package/dist/cli/runtime/api-routes-init.js +941 -0
- package/dist/cli/runtime/api-routes-init.js.map +1 -0
- package/dist/cli/runtime/api-server-init.d.ts +39 -0
- package/dist/cli/runtime/api-server-init.d.ts.map +1 -0
- package/dist/cli/runtime/api-server-init.js +84 -0
- package/dist/cli/runtime/api-server-init.js.map +1 -0
- package/dist/cli/runtime/connector-init.d.ts +34 -0
- package/dist/cli/runtime/connector-init.d.ts.map +1 -0
- package/dist/cli/runtime/connector-init.js +176 -0
- package/dist/cli/runtime/connector-init.js.map +1 -0
- package/dist/cli/runtime/daemon.d.ts +38 -0
- package/dist/cli/runtime/daemon.d.ts.map +1 -0
- package/dist/cli/runtime/daemon.js +263 -0
- package/dist/cli/runtime/daemon.js.map +1 -0
- package/dist/cli/runtime/gateway-init.d.ts +49 -0
- package/dist/cli/runtime/gateway-init.d.ts.map +1 -0
- package/dist/cli/runtime/gateway-init.js +201 -0
- package/dist/cli/runtime/gateway-init.js.map +1 -0
- package/dist/cli/runtime/gateway-wiring.d.ts +51 -0
- package/dist/cli/runtime/gateway-wiring.d.ts.map +1 -0
- package/dist/cli/runtime/gateway-wiring.js +312 -0
- package/dist/cli/runtime/gateway-wiring.js.map +1 -0
- package/dist/cli/runtime/mama-core-init.d.ts +34 -0
- package/dist/cli/runtime/mama-core-init.d.ts.map +1 -0
- package/dist/cli/runtime/mama-core-init.js +208 -0
- package/dist/cli/runtime/mama-core-init.js.map +1 -0
- package/dist/cli/runtime/memory-agent-init.d.ts +36 -0
- package/dist/cli/runtime/memory-agent-init.d.ts.map +1 -0
- package/dist/cli/runtime/memory-agent-init.js +161 -0
- package/dist/cli/runtime/memory-agent-init.js.map +1 -0
- package/dist/cli/runtime/metrics-init.d.ts +28 -0
- package/dist/cli/runtime/metrics-init.d.ts.map +1 -0
- package/dist/cli/runtime/metrics-init.js +131 -0
- package/dist/cli/runtime/metrics-init.js.map +1 -0
- package/dist/cli/runtime/scheduler-init.d.ts +57 -0
- package/dist/cli/runtime/scheduler-init.d.ts.map +1 -0
- package/dist/cli/runtime/scheduler-init.js +162 -0
- package/dist/cli/runtime/scheduler-init.js.map +1 -0
- package/dist/cli/runtime/server-start.d.ts +23 -0
- package/dist/cli/runtime/server-start.d.ts.map +1 -0
- package/dist/cli/runtime/server-start.js +187 -0
- package/dist/cli/runtime/server-start.js.map +1 -0
- package/dist/cli/runtime/shutdown.d.ts +43 -0
- package/dist/cli/runtime/shutdown.d.ts.map +1 -0
- package/dist/cli/runtime/shutdown.js +216 -0
- package/dist/cli/runtime/shutdown.js.map +1 -0
- package/dist/cli/runtime/types.d.ts +154 -0
- package/dist/cli/runtime/types.d.ts.map +1 -0
- package/dist/cli/runtime/types.js +12 -0
- package/dist/cli/runtime/types.js.map +1 -0
- package/dist/cli/runtime/utilities.d.ts +71 -0
- package/dist/cli/runtime/utilities.d.ts.map +1 -0
- package/dist/cli/runtime/utilities.js +463 -0
- package/dist/cli/runtime/utilities.js.map +1 -0
- package/dist/connectors/claude-code/index.d.ts +29 -0
- package/dist/connectors/claude-code/index.d.ts.map +1 -0
- package/dist/connectors/claude-code/index.js +185 -0
- package/dist/connectors/claude-code/index.js.map +1 -0
- package/dist/connectors/drive/index.d.ts +10 -0
- package/dist/connectors/drive/index.d.ts.map +1 -1
- package/dist/connectors/drive/index.js +105 -47
- package/dist/connectors/drive/index.js.map +1 -1
- package/dist/connectors/framework/polling-scheduler.d.ts +7 -1
- package/dist/connectors/framework/polling-scheduler.d.ts.map +1 -1
- package/dist/connectors/framework/polling-scheduler.js +17 -2
- package/dist/connectors/framework/polling-scheduler.js.map +1 -1
- package/dist/connectors/framework/types.d.ts +2 -0
- package/dist/connectors/framework/types.d.ts.map +1 -1
- package/dist/connectors/index.d.ts +1 -1
- package/dist/connectors/index.d.ts.map +1 -1
- package/dist/connectors/index.js +1 -0
- package/dist/connectors/index.js.map +1 -1
- package/dist/connectors/kagemusha/history-compiler.d.ts +18 -0
- package/dist/connectors/kagemusha/history-compiler.d.ts.map +1 -0
- package/dist/connectors/kagemusha/history-compiler.js +35 -0
- package/dist/connectors/kagemusha/history-compiler.js.map +1 -0
- package/dist/connectors/kagemusha/index.d.ts +12 -0
- package/dist/connectors/kagemusha/index.d.ts.map +1 -1
- package/dist/connectors/kagemusha/index.js +125 -1
- package/dist/connectors/kagemusha/index.js.map +1 -1
- package/dist/connectors/kagemusha/query-tools.d.ts +89 -0
- package/dist/connectors/kagemusha/query-tools.d.ts.map +1 -0
- package/dist/connectors/kagemusha/query-tools.js +209 -0
- package/dist/connectors/kagemusha/query-tools.js.map +1 -0
- package/dist/connectors/sheets/index.d.ts +3 -0
- package/dist/connectors/sheets/index.d.ts.map +1 -1
- package/dist/connectors/sheets/index.js +29 -0
- package/dist/connectors/sheets/index.js.map +1 -1
- package/dist/gateways/discord.js +1 -1
- package/dist/gateways/discord.js.map +1 -1
- package/dist/gateways/message-router.js +4 -4
- package/dist/gateways/message-router.js.map +1 -1
- package/dist/memory/history-extractor.d.ts.map +1 -1
- package/dist/memory/history-extractor.js +40 -38
- package/dist/memory/history-extractor.js.map +1 -1
- package/dist/multi-agent/agent-event-bus.d.ts +40 -0
- package/dist/multi-agent/agent-event-bus.d.ts.map +1 -0
- package/dist/multi-agent/agent-event-bus.js +67 -0
- package/dist/multi-agent/agent-event-bus.js.map +1 -0
- package/dist/multi-agent/agent-process-manager.d.ts.map +1 -1
- package/dist/multi-agent/agent-process-manager.js +46 -5
- package/dist/multi-agent/agent-process-manager.js.map +1 -1
- package/dist/multi-agent/dashboard-agent-persona.d.ts +12 -0
- package/dist/multi-agent/dashboard-agent-persona.d.ts.map +1 -0
- package/dist/multi-agent/dashboard-agent-persona.js +75 -0
- package/dist/multi-agent/dashboard-agent-persona.js.map +1 -0
- package/dist/multi-agent/delegation-manager.d.ts +2 -1
- package/dist/multi-agent/delegation-manager.d.ts.map +1 -1
- package/dist/multi-agent/delegation-manager.js +3 -2
- package/dist/multi-agent/delegation-manager.js.map +1 -1
- package/dist/multi-agent/i18n-messages.d.ts +14 -30
- package/dist/multi-agent/i18n-messages.d.ts.map +1 -1
- package/dist/multi-agent/i18n-messages.js +35 -115
- package/dist/multi-agent/i18n-messages.js.map +1 -1
- package/dist/multi-agent/index.d.ts +0 -2
- package/dist/multi-agent/index.d.ts.map +1 -1
- package/dist/multi-agent/index.js +1 -4
- package/dist/multi-agent/index.js.map +1 -1
- package/dist/multi-agent/multi-agent-base.d.ts +0 -5
- package/dist/multi-agent/multi-agent-base.d.ts.map +1 -1
- package/dist/multi-agent/multi-agent-base.js +0 -23
- package/dist/multi-agent/multi-agent-base.js.map +1 -1
- package/dist/multi-agent/multi-agent-discord.d.ts +1 -2
- package/dist/multi-agent/multi-agent-discord.d.ts.map +1 -1
- package/dist/multi-agent/multi-agent-discord.js +14 -165
- package/dist/multi-agent/multi-agent-discord.js.map +1 -1
- package/dist/multi-agent/multi-agent-slack.d.ts.map +1 -1
- package/dist/multi-agent/multi-agent-slack.js +11 -138
- package/dist/multi-agent/multi-agent-slack.js.map +1 -1
- package/dist/multi-agent/system-reminder.d.ts.map +1 -1
- package/dist/multi-agent/system-reminder.js +20 -35
- package/dist/multi-agent/system-reminder.js.map +1 -1
- package/dist/multi-agent/task-continuation.d.ts +1 -1
- package/dist/multi-agent/task-continuation.js +2 -2
- package/dist/multi-agent/task-continuation.js.map +1 -1
- package/dist/multi-agent/wiki-agent-persona.d.ts +11 -0
- package/dist/multi-agent/wiki-agent-persona.d.ts.map +1 -0
- package/dist/multi-agent/wiki-agent-persona.js +107 -0
- package/dist/multi-agent/wiki-agent-persona.js.map +1 -0
- package/dist/multi-agent/workflow-types.d.ts +19 -19
- package/dist/multi-agent/workflow-types.d.ts.map +1 -1
- package/dist/multi-agent/workflow-types.js +2 -2
- package/dist/security/security-monitor.d.ts +3 -0
- package/dist/security/security-monitor.d.ts.map +1 -1
- package/dist/security/security-monitor.js +64 -2
- package/dist/security/security-monitor.js.map +1 -1
- package/dist/setup/setup-prompt.d.ts +1 -1
- package/dist/setup/setup-prompt.d.ts.map +1 -1
- package/dist/setup/setup-prompt.js +4 -4
- package/dist/sqlite.d.ts +5 -6
- package/dist/sqlite.d.ts.map +1 -1
- package/dist/sqlite.js +17 -96
- package/dist/sqlite.js.map +1 -1
- package/dist/wiki/obsidian-writer.d.ts +16 -0
- package/dist/wiki/obsidian-writer.d.ts.map +1 -0
- package/dist/wiki/obsidian-writer.js +161 -0
- package/dist/wiki/obsidian-writer.js.map +1 -0
- package/dist/wiki/types.d.ts +29 -0
- package/dist/wiki/types.d.ts.map +1 -0
- package/dist/wiki/types.js +9 -0
- package/dist/wiki/types.js.map +1 -0
- package/dist/wiki/wiki-compiler.d.ts +13 -0
- package/dist/wiki/wiki-compiler.d.ts.map +1 -0
- package/dist/wiki/wiki-compiler.js +82 -0
- package/dist/wiki/wiki-compiler.js.map +1 -0
- package/package.json +5 -3
- package/public/viewer/js/modules/chat.js +0 -29
- package/public/viewer/js/modules/connector-feed.js +317 -0
- package/public/viewer/js/modules/dashboard.js +368 -971
- package/public/viewer/js/modules/graph.js +140 -17
- package/public/viewer/js/modules/skills.js +3 -25
- package/public/viewer/js/modules/wiki.js +370 -0
- package/public/viewer/js/utils/api.js +63 -0
- package/public/viewer/js/utils/dom.js +109 -0
- package/public/viewer/log-viewer.html +1399 -0
- package/public/viewer/src/modules/chat.ts +0 -36
- package/public/viewer/src/modules/connector-feed.ts +356 -0
- package/public/viewer/src/modules/dashboard.ts +387 -1168
- package/public/viewer/src/modules/graph.ts +139 -17
- package/public/viewer/src/modules/skills.ts +3 -26
- package/public/viewer/src/modules/wiki.ts +402 -0
- package/public/viewer/src/types/global.d.ts +3 -0
- package/public/viewer/src/utils/api.ts +238 -0
- package/public/viewer/src/utils/dom.ts +152 -0
- package/public/viewer/viewer.css +17 -0
- package/public/viewer/viewer.html +434 -694
package/README.md
CHANGED
|
@@ -1,898 +1,205 @@
|
|
|
1
1
|
# @jungjaehoon/mama-os
|
|
2
2
|
|
|
3
|
-
>
|
|
4
|
-
> _Control + Visibility for AI-Powered Automation_
|
|
3
|
+
> Your scattered knowledge, organized by AI agents that never sleep.
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
## The Problem
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
Your knowledge is everywhere — Slack threads, email chains, code reviews, meeting notes, spreadsheets, Telegram messages. No human can track all of it. Important decisions get buried. Context gets lost between tools. When you need to make a decision, the information that would help is scattered across ten different apps and three months of history.
|
|
9
8
|
|
|
10
|
-
|
|
9
|
+
This isn't a memory problem. It's an intelligence problem. You don't just need to *store* information — you need something that reads everything, connects the dots, identifies what matters, and tells you what you're missing.
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
- **Autonomous Agent Loop** - Continuous conversation handling via official backend CLI
|
|
14
|
-
- **MAMA OS** - Built-in graph viewer and mobile chat interface
|
|
15
|
-
- **Skills System** - Pluggable skills for document analysis, image translation, and more
|
|
16
|
-
- **Cron Scheduler** - Scheduled task execution with heartbeat monitoring
|
|
11
|
+
## What MAMA OS Does
|
|
17
12
|
|
|
18
|
-
|
|
13
|
+
MAMA OS is a local AI runtime that connects to your apps, reads everything continuously, and turns scattered records into organized knowledge.
|
|
19
14
|
|
|
20
|
-
|
|
21
|
-
- Build custom workflows with the skills API
|
|
22
|
-
- Access your configured backend from anywhere via mobile chat
|
|
23
|
-
- Automate tasks with scheduled cron jobs
|
|
15
|
+
**What the agents actually do:**
|
|
24
16
|
|
|
25
|
-
|
|
17
|
+
- **Identify what matters** — Out of thousands of daily messages, surface the decisions, deadlines, and changes that affect your work
|
|
18
|
+
- **Connect across sources** — A Slack conversation + a Trello card + an email attachment about the same project are linked automatically
|
|
19
|
+
- **Track decision evolution** — Not just what was decided, but what it replaced, what it builds on, and what it contradicts
|
|
20
|
+
- **Compile actionable knowledge** — Raw conversations become structured wiki pages with priorities, gaps, and suggested next steps
|
|
21
|
+
- **Brief you proactively** — When you start working, relevant context from all sources is already there — you didn't ask for it
|
|
26
22
|
|
|
27
|
-
```bash
|
|
28
|
-
# Install globally
|
|
29
|
-
npm install -g @jungjaehoon/mama-os
|
|
30
|
-
|
|
31
|
-
# Or use with npx (no installation)
|
|
32
|
-
npx @jungjaehoon/mama-os init
|
|
33
23
|
```
|
|
24
|
+
Without MAMA: You read 5 Slack channels, 3 email threads, check Trello,
|
|
25
|
+
re-read old PRs, then try to piece together the full picture.
|
|
34
26
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
- **Node.js** >= 22.13.0 (required for unflagged `node:sqlite` support)
|
|
38
|
-
- **At least one authenticated backend CLI**
|
|
39
|
-
- Claude CLI: `npm install -g @anthropic-ai/claude-code` then `claude`
|
|
40
|
-
- Codex CLI: `npm install -g @openai/codex` then `codex login`
|
|
41
|
-
- **500MB disk space** - For embedding model cache
|
|
42
|
-
|
|
43
|
-
## Quick Start
|
|
44
|
-
|
|
45
|
-
Get MAMA running in 30 seconds:
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
# 1. Authenticate one backend CLI (one-time)
|
|
49
|
-
# Claude: claude
|
|
50
|
-
# Codex: codex login
|
|
51
|
-
|
|
52
|
-
# 2. Initialize workspace
|
|
53
|
-
mama init
|
|
54
|
-
|
|
55
|
-
# 3. Start the agent
|
|
56
|
-
mama start
|
|
57
|
-
|
|
58
|
-
# 4. Check status
|
|
59
|
-
mama status
|
|
27
|
+
With MAMA: Agents already read everything. You get a briefing with
|
|
28
|
+
what changed, what's at risk, and what needs your decision.
|
|
60
29
|
```
|
|
61
30
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
## CLI Commands
|
|
65
|
-
|
|
66
|
-
| Command | Description | Options |
|
|
67
|
-
| ------------------- | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
68
|
-
| `mama init` | Initialize MAMA workspace | `-f, --force` - Overwrite existing config<br>`--backend <auto\|claude\|codex>` - Preferred backend<br>`--skip-auth-check` - Skip auth validation |
|
|
69
|
-
| `mama setup` | Interactive setup wizard | `-p, --port <port>` - Port number (default: 3847)<br>`--no-browser` - Don't auto-open browser |
|
|
70
|
-
| `mama start` | Start MAMA agent | `-f, --foreground` - Run in foreground (not daemon) |
|
|
71
|
-
| `mama stop` | Stop MAMA agent | |
|
|
72
|
-
| `mama status` | Check agent status | |
|
|
73
|
-
| `mama run <prompt>` | Execute single prompt (testing) | `-v, --verbose` - Detailed output |
|
|
74
|
-
|
|
75
|
-
### Command Examples
|
|
76
|
-
|
|
77
|
-
```bash
|
|
78
|
-
# Initialize with force (overwrites existing config)
|
|
79
|
-
mama init --force
|
|
80
|
-
|
|
81
|
-
# Initialize with explicit backend
|
|
82
|
-
mama init --backend codex
|
|
83
|
-
|
|
84
|
-
# Run setup wizard on custom port
|
|
85
|
-
mama setup --port 8080
|
|
86
|
-
|
|
87
|
-
# Start in foreground (see logs in terminal)
|
|
88
|
-
mama start --foreground
|
|
89
|
-
|
|
90
|
-
# Test a single prompt
|
|
91
|
-
mama run "What's the weather today?" --verbose
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
## Gateway Integrations
|
|
95
|
-
|
|
96
|
-
MAMA Standalone supports multiple chat platforms. Configure them via the setup wizard or manually in `config.yaml`.
|
|
97
|
-
|
|
98
|
-
### Discord Bot
|
|
99
|
-
|
|
100
|
-
**Setup Steps:**
|
|
101
|
-
|
|
102
|
-
1. Create application at https://discord.com/developers/applications
|
|
103
|
-
2. Add bot and enable **MESSAGE CONTENT INTENT**
|
|
104
|
-
3. Copy bot token
|
|
105
|
-
4. Invite bot to your server with permissions:
|
|
106
|
-
- Read Messages/View Channels
|
|
107
|
-
- Send Messages
|
|
108
|
-
- Read Message History
|
|
109
|
-
- Add Reactions
|
|
110
|
-
|
|
111
|
-
**Configuration:**
|
|
112
|
-
|
|
113
|
-
```yaml
|
|
114
|
-
gateways:
|
|
115
|
-
discord:
|
|
116
|
-
enabled: true
|
|
117
|
-
token: 'YOUR_DISCORD_BOT_TOKEN'
|
|
118
|
-
default_channel_id: '123456789' # Optional
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
**Usage:**
|
|
122
|
-
|
|
123
|
-
```
|
|
124
|
-
# In Discord
|
|
125
|
-
@YourBot hello!
|
|
126
|
-
@YourBot analyze this image [attach image]
|
|
127
|
-
@YourBot /translate [image with text]
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
### Slack Bot
|
|
131
|
-
|
|
132
|
-
**Setup Steps:**
|
|
133
|
-
|
|
134
|
-
1. Create app at https://api.slack.com/apps
|
|
135
|
-
2. Add bot token scopes:
|
|
136
|
-
- `channels:history`
|
|
137
|
-
- `channels:read`
|
|
138
|
-
- `chat:write`
|
|
139
|
-
- `users:read`
|
|
140
|
-
3. Enable Socket Mode and create app-level token
|
|
141
|
-
4. Install to workspace
|
|
142
|
-
|
|
143
|
-
**Configuration:**
|
|
144
|
-
|
|
145
|
-
```yaml
|
|
146
|
-
gateways:
|
|
147
|
-
slack:
|
|
148
|
-
enabled: true
|
|
149
|
-
bot_token: 'xoxb-...'
|
|
150
|
-
app_token: 'xapp-...'
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
**Usage:**
|
|
154
|
-
|
|
155
|
-
```
|
|
156
|
-
# In Slack
|
|
157
|
-
@mama what's the status?
|
|
158
|
-
@mama /report
|
|
159
|
-
|
|
160
|
-
# File upload support
|
|
161
|
-
@mama [attach image] translate this
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
### Telegram Bot
|
|
165
|
-
|
|
166
|
-
**Setup Steps:**
|
|
167
|
-
|
|
168
|
-
1. Message @BotFather on Telegram
|
|
169
|
-
2. Send `/newbot` and follow prompts
|
|
170
|
-
3. Copy bot token
|
|
171
|
-
4. Get your chat ID from @userinfobot
|
|
172
|
-
|
|
173
|
-
**Configuration:**
|
|
174
|
-
|
|
175
|
-
```yaml
|
|
176
|
-
gateways:
|
|
177
|
-
telegram:
|
|
178
|
-
enabled: true
|
|
179
|
-
token: '123456789:ABCdefGHI...'
|
|
180
|
-
allowed_chat_ids:
|
|
181
|
-
- 987654321 # Your chat ID
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
**Usage:**
|
|
185
|
-
|
|
186
|
-
```
|
|
187
|
-
# In Telegram
|
|
188
|
-
/start
|
|
189
|
-
Hello MAMA!
|
|
190
|
-
/translate [send image]
|
|
191
|
-
```
|
|
31
|
+
**This is what AI agents can do that humans can't** — read every channel, every thread, every document, every day, and never miss a connection.
|
|
192
32
|
|
|
193
|
-
|
|
33
|
+
- **Private by design** — All data stays on your device. Nothing leaves your machine.
|
|
34
|
+
- **AI-independent** — Works with Claude, Codex, or any future backend. Your memory outlives any AI provider.
|
|
194
35
|
|
|
195
|
-
|
|
36
|
+
## How It Runs
|
|
196
37
|
|
|
197
|
-
**
|
|
38
|
+
MAMA OS runs AI agents as **official CLI subprocesses** — the same way you'd use `claude` or `codex` in your terminal. This is the provider-sanctioned execution method, fully compliant with Anthropic and OpenAI Terms of Service.
|
|
198
39
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
**📊 Dashboard Tab**
|
|
202
|
-
|
|
203
|
-
- Gateway status overview
|
|
204
|
-
- Memory statistics
|
|
205
|
-
- Agent configuration
|
|
206
|
-
- Top topics
|
|
207
|
-
|
|
208
|
-
**💬 Chat Tab**
|
|
209
|
-
|
|
210
|
-
- Real-time chat with backend CLI sessions
|
|
211
|
-
- Voice input (Web Speech API, Korean optimized)
|
|
212
|
-
- Text-to-speech with adjustable speed
|
|
213
|
-
- Hands-free mode (auto-listen after TTS)
|
|
214
|
-
- Long press to copy messages (750ms)
|
|
215
|
-
- Slash commands: `/save`, `/search`, `/checkpoint`, `/resume`, `/help`
|
|
216
|
-
- Auto-checkpoint (5-minute idle auto-save)
|
|
217
|
-
- Session resume with banner UI
|
|
218
|
-
- MCP tool display (see Read, Write, Bash execution)
|
|
219
|
-
|
|
220
|
-
**🧠 Memory Tab**
|
|
221
|
-
|
|
222
|
-
- Interactive reasoning graph visualization
|
|
223
|
-
- Checkpoint timeline sidebar
|
|
224
|
-
- Draggable detail panel
|
|
225
|
-
- Topic filtering and search
|
|
226
|
-
- Export decisions (JSON, Markdown, CSV)
|
|
227
|
-
|
|
228
|
-
**🧩 Skills Tab**
|
|
229
|
-
|
|
230
|
-
- Browse installed skills with status badges (published/draft/coworking)
|
|
231
|
-
- Click to open in Skill Lab Playground for editing
|
|
232
|
-
- Skill verification with 12-point checklist
|
|
233
|
-
|
|
234
|
-
**🧪 Playground Tab**
|
|
235
|
-
|
|
236
|
-
- **Skill Lab** — Step-by-step skill creation, modification, and verification
|
|
237
|
-
- **Cron Workflow Lab** — Node-based DAG editor for cron workflows (trigger → prompt → condition → action)
|
|
238
|
-
- **Wave Visualizer** — Multi-Agent task execution flow visualizer (Simulation + Live modes)
|
|
239
|
-
- Bidirectional sync with Skills Tab (select skill → opens in Skill Lab)
|
|
240
|
-
- "Open in new tab" for full-screen editing
|
|
241
|
-
|
|
242
|
-
**⚙️ Settings Tab**
|
|
243
|
-
|
|
244
|
-
- Configure gateway tokens
|
|
245
|
-
- Heartbeat scheduler settings
|
|
246
|
-
- Agent configuration (model, max turns, timeout)
|
|
247
|
-
|
|
248
|
-
### Mobile Access
|
|
249
|
-
|
|
250
|
-
MAMA OS is PWA-enabled and works great on mobile:
|
|
251
|
-
|
|
252
|
-
1. Open `http://localhost:3847` on your phone
|
|
253
|
-
2. Add to home screen
|
|
254
|
-
3. Use voice input for hands-free interaction
|
|
255
|
-
|
|
256
|
-
**For external access** (e.g., from phone on different network), see [Security](#security) section.
|
|
257
|
-
|
|
258
|
-
## Skills System
|
|
259
|
-
|
|
260
|
-
MAMA includes built-in skills and supports custom skill creation.
|
|
261
|
-
|
|
262
|
-
### Built-in Skills
|
|
263
|
-
|
|
264
|
-
**📸 Image Translation**
|
|
265
|
-
|
|
266
|
-
```
|
|
267
|
-
# Discord/Telegram
|
|
268
|
-
[Send image with text]
|
|
269
|
-
MAMA: [Translates text to Korean]
|
|
270
|
-
|
|
271
|
-
# Or explicitly
|
|
272
|
-
/translate [image]
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
**📄 Document Analysis**
|
|
276
|
-
|
|
277
|
-
```
|
|
278
|
-
# Send Excel, PDF, or Word file
|
|
279
|
-
MAMA: [Analyzes and summarizes content]
|
|
280
|
-
```
|
|
281
|
-
|
|
282
|
-
**📊 Heartbeat Report**
|
|
283
|
-
|
|
284
|
-
```
|
|
285
|
-
/report
|
|
286
|
-
MAMA: [Collects activity from all gateways and creates summary]
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
### Skill Forge
|
|
290
|
-
|
|
291
|
-
Create custom skills with AI assistance:
|
|
292
|
-
|
|
293
|
-
```
|
|
294
|
-
/forge weather-check - A skill that tells weather info
|
|
295
|
-
|
|
296
|
-
# 3 AI agents collaborate:
|
|
297
|
-
# 1. 🏗️ Architect - Designs structure
|
|
298
|
-
# 2. 💻 Developer - Writes code
|
|
299
|
-
# 3. 🔍 QA - Quality verification
|
|
300
|
-
|
|
301
|
-
# Each step has 5-second countdown for review
|
|
302
|
-
```
|
|
303
|
-
|
|
304
|
-
Skills are stored in `workspace/skills/` and auto-loaded on startup.
|
|
305
|
-
|
|
306
|
-
## Cron Jobs & Heartbeat
|
|
307
|
-
|
|
308
|
-
### Cron Jobs
|
|
309
|
-
|
|
310
|
-
Schedule automated tasks:
|
|
311
|
-
|
|
312
|
-
```
|
|
313
|
-
# Add cron job
|
|
314
|
-
/cron add "0 9 * * *" "Daily morning briefing"
|
|
315
|
-
|
|
316
|
-
# List cron jobs
|
|
317
|
-
/cron list
|
|
318
|
-
|
|
319
|
-
# Remove cron job
|
|
320
|
-
/cron remove [id]
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
**Cron syntax:**
|
|
324
|
-
|
|
325
|
-
```
|
|
326
|
-
* * * * *
|
|
327
|
-
│ │ │ │ │
|
|
328
|
-
│ │ │ │ └─ Day of week (0-7, 0 and 7 are Sunday)
|
|
329
|
-
│ │ │ └─── Month (1-12)
|
|
330
|
-
│ │ └───── Day of month (1-31)
|
|
331
|
-
│ └─────── Hour (0-23)
|
|
332
|
-
└───────── Minute (0-59)
|
|
333
|
-
```
|
|
334
|
-
|
|
335
|
-
**Examples:**
|
|
336
|
-
|
|
337
|
-
```
|
|
338
|
-
"0 9 * * *" # Every day at 9 AM
|
|
339
|
-
"0 18 * * 5" # Every Friday at 6 PM
|
|
340
|
-
"*/30 * * * *" # Every 30 minutes
|
|
341
|
-
"0 0 1 * *" # First day of every month at midnight
|
|
342
|
-
```
|
|
40
|
+
Some third-party agent frameworks (OpenClaw, etc.) use unofficial API access, token extraction, or header spoofing — approaches that violate provider policies and risk account suspension. MAMA OS doesn't do any of that. If you have Claude Code or Codex CLI installed and authenticated, MAMA OS just works. No API keys, no workarounds, no risk.
|
|
343
41
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
**Configuration:**
|
|
349
|
-
|
|
350
|
-
```yaml
|
|
351
|
-
heartbeat:
|
|
352
|
-
enabled: true
|
|
353
|
-
interval_minutes: 30
|
|
354
|
-
quiet_hours:
|
|
355
|
-
start: 23 # 11 PM
|
|
356
|
-
end: 8 # 8 AM
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
During quiet hours, heartbeat is paused to avoid notifications.
|
|
360
|
-
|
|
361
|
-
## Multi-Agent Swarm
|
|
362
|
-
|
|
363
|
-
Run multiple AI agents in Discord that collaborate, delegate tasks, and work autonomously.
|
|
364
|
-
|
|
365
|
-
> Developed independently, released the same day as Anthropic's [Agent Teams](https://docs.anthropic.com/en/docs/claude-code/agent-teams).
|
|
366
|
-
> Same vision — coordinated AI agents — but designed for **chat platforms** (Discord/Slack/Telegram), not CLI.
|
|
367
|
-
|
|
368
|
-
### Agent Tier System
|
|
369
|
-
|
|
370
|
-
| Tier | Role | Tool Access | Capabilities |
|
|
371
|
-
| ---------- | ------------ | ------------------------------------------------- | ---------------------------------------- |
|
|
372
|
-
| **Tier 1** | Orchestrator | All tools (Read, Write, Edit, Bash, ...) | Full access + delegation to other agents |
|
|
373
|
-
| **Tier 2** | Advisor | Read-only (Read, Grep, Glob, WebSearch, WebFetch) | Analysis and recommendations |
|
|
374
|
-
| **Tier 3** | Executor | Read-only (Read, Grep, Glob, WebSearch, WebFetch) | Scoped tasks, no delegation |
|
|
375
|
-
|
|
376
|
-
Tier defaults can be overridden per agent with explicit `tool_permissions.allowed/blocked`.
|
|
377
|
-
|
|
378
|
-
### 5-Stage Message Routing
|
|
379
|
-
|
|
380
|
-
Messages are routed through a priority pipeline:
|
|
381
|
-
|
|
382
|
-
```text
|
|
383
|
-
Message arrives
|
|
384
|
-
│
|
|
385
|
-
├─ 1. Free Chat? → All agents respond (when free_chat: true)
|
|
386
|
-
├─ 2. Explicit Trigger? → "!dev fix the bug" → Developer responds
|
|
387
|
-
├─ 3. Category Match? → "리뷰해줘" → Reviewer responds (regex patterns)
|
|
388
|
-
├─ 4. Keyword Match? → "bug" in auto_respond_keywords → Developer responds
|
|
389
|
-
└─ 5. Default Agent → Fallback agent responds
|
|
390
|
-
```
|
|
391
|
-
|
|
392
|
-
### Configuration
|
|
393
|
-
|
|
394
|
-
```yaml
|
|
395
|
-
multi_agent:
|
|
396
|
-
enabled: true
|
|
397
|
-
free_chat: false
|
|
398
|
-
|
|
399
|
-
agents:
|
|
400
|
-
sisyphus:
|
|
401
|
-
name: 'Sisyphus'
|
|
402
|
-
display_name: '🏔️ Sisyphus'
|
|
403
|
-
trigger_prefix: '!sis'
|
|
404
|
-
persona_file: '~/.mama/personas/sisyphus.md'
|
|
405
|
-
bot_token: 'DISCORD_BOT_TOKEN_1'
|
|
406
|
-
tier: 1
|
|
407
|
-
can_delegate: true
|
|
408
|
-
auto_continue: true
|
|
409
|
-
auto_respond_keywords: ['architect', 'plan', '설계']
|
|
410
|
-
cooldown_ms: 5000
|
|
411
|
-
|
|
412
|
-
developer:
|
|
413
|
-
name: 'Developer'
|
|
414
|
-
display_name: '🔧 Developer'
|
|
415
|
-
trigger_prefix: '!dev'
|
|
416
|
-
persona_file: '~/.mama/personas/developer.md'
|
|
417
|
-
bot_token: 'DISCORD_BOT_TOKEN_2'
|
|
418
|
-
tier: 1 # Full access for code changes
|
|
419
|
-
auto_continue: true
|
|
420
|
-
auto_respond_keywords: ['bug', 'code', 'implement', '구현']
|
|
421
|
-
|
|
422
|
-
reviewer:
|
|
423
|
-
name: 'Reviewer'
|
|
424
|
-
display_name: '📝 Reviewer'
|
|
425
|
-
trigger_prefix: '!review'
|
|
426
|
-
persona_file: '~/.mama/personas/reviewer.md'
|
|
427
|
-
bot_token: 'DISCORD_BOT_TOKEN_3'
|
|
428
|
-
tier: 1 # Full access for code changes
|
|
429
|
-
auto_respond_keywords: ['review', 'check', '리뷰', '검토']
|
|
430
|
-
|
|
431
|
-
# Regex-based category routing
|
|
432
|
-
categories:
|
|
433
|
-
- name: 'code_review'
|
|
434
|
-
patterns: ['리뷰해', "review\\s+(this|the)"]
|
|
435
|
-
agent_ids: ['reviewer']
|
|
436
|
-
priority: 10
|
|
437
|
-
- name: 'implementation'
|
|
438
|
-
patterns: ['구현해', 'implement', 'build']
|
|
439
|
-
agent_ids: ['developer']
|
|
440
|
-
priority: 5
|
|
441
|
-
|
|
442
|
-
# Autonomous work sessions
|
|
443
|
-
ultrawork:
|
|
444
|
-
enabled: true
|
|
445
|
-
max_steps: 20
|
|
446
|
-
max_duration: 1800000 # 30 minutes
|
|
447
|
-
|
|
448
|
-
# Auto-resume incomplete responses
|
|
449
|
-
task_continuation:
|
|
450
|
-
enabled: true
|
|
451
|
-
max_retries: 3
|
|
452
|
-
|
|
453
|
-
loop_prevention:
|
|
454
|
-
max_chain_length: 10
|
|
455
|
-
global_cooldown_ms: 2000
|
|
456
|
-
```
|
|
457
|
-
|
|
458
|
-
### Delegation
|
|
459
|
-
|
|
460
|
-
Tier 1 agents can delegate tasks to other agents:
|
|
461
|
-
|
|
462
|
-
```text
|
|
463
|
-
DELEGATE::{agent_id}::{task description}
|
|
42
|
+
```bash
|
|
43
|
+
# Already have Claude Code installed?
|
|
44
|
+
mama start # That's it. MAMA uses your existing CLI authentication.
|
|
464
45
|
```
|
|
465
46
|
|
|
466
|
-
|
|
47
|
+
## How It's Secured
|
|
467
48
|
|
|
468
|
-
|
|
469
|
-
When implementation is needed, delegate:
|
|
470
|
-
DELEGATE::developer::Implement the login endpoint with JWT
|
|
49
|
+
MAMA OS has full system access — so security is not optional, it's foundational.
|
|
471
50
|
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
**
|
|
51
|
+
- **Local-only by default** — Binds to localhost. External access requires explicit tunnel setup with authentication (Cloudflare Zero Trust).
|
|
52
|
+
- **5-layer prompt injection defense** — Output sanitization, channel trust boundaries, silent mode for unknown sources, bulk extraction limits. Built from a real incident, not theory.
|
|
53
|
+
- **Intrusion detection** — Honeypot traps for scanner probes (`.git`, `.env`, `wp-login.php`), per-IP suspicion scoring, automatic tarpit delays, and IP deny-listing when thresholds are exceeded.
|
|
54
|
+
- **Agent permission tiers** — Tier 1 (full access), Tier 2 (read-only), Tier 3 (scoped read-only). Each agent only gets the tools it needs.
|
|
55
|
+
- **Fail-safe shutdown** — When an intrusion cannot be contained, MAMA shuts itself down gracefully rather than operating in a compromised state.
|
|
477
56
|
|
|
478
|
-
|
|
479
|
-
- Maximum delegation depth: 1 (no re-delegation)
|
|
480
|
-
- Circular delegation automatically prevented
|
|
481
|
-
- Notifications appear in Discord
|
|
57
|
+
These aren't theoretical protections. The prompt injection defense was built after a real attack where an adversary injected a fake "server failure" message into a monitored channel, causing the AI agent to voluntarily expose system configuration. The IP banning system has blocked actual intrusion attempts in production.
|
|
482
58
|
|
|
483
|
-
|
|
59
|
+
See the full [Security Guide](../../docs/guides/security.md) for Cloudflare Zero Trust setup, token authentication, threat scenarios, agent isolation, and Code-Act sandbox security.
|
|
484
60
|
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
- **Completion markers:** `DONE`, `완료`, `TASK_COMPLETE`, `finished`
|
|
488
|
-
- **Incomplete signals:** "I'll continue", "계속하겠", truncation near 2000 chars
|
|
489
|
-
- **Max retries:** Configurable (default: 3)
|
|
490
|
-
- Supports Korean and English patterns
|
|
61
|
+
## Quick Start
|
|
491
62
|
|
|
492
|
-
|
|
63
|
+
```bash
|
|
64
|
+
# 1. Authenticate a backend CLI (one-time)
|
|
65
|
+
claude # or: codex login
|
|
493
66
|
|
|
494
|
-
|
|
67
|
+
# 2. Install and start
|
|
68
|
+
npx @jungjaehoon/mama-os init
|
|
69
|
+
mama start
|
|
495
70
|
|
|
71
|
+
# 3. Open the viewer
|
|
72
|
+
open http://localhost:3847
|
|
496
73
|
```
|
|
497
|
-
User: "Build the auth system ultrawork"
|
|
498
|
-
```
|
|
499
|
-
|
|
500
|
-
**3-Phase Loop:**
|
|
501
74
|
|
|
502
|
-
|
|
503
|
-
Phase 1: Planning
|
|
504
|
-
→ Lead agent creates implementation plan
|
|
505
|
-
→ Optional Council discussion for plan review
|
|
506
|
-
→ Plan persisted to disk (plan.md)
|
|
75
|
+
**Prerequisites:** Node.js >= 18, one authenticated backend CLI (Claude or Codex), 500MB disk space.
|
|
507
76
|
|
|
508
|
-
|
|
509
|
-
→ Executes plan via DELEGATE:: delegation
|
|
510
|
-
→ Each step recorded to progress.json
|
|
511
|
-
→ Council escalation on failures
|
|
77
|
+
## Connectors (15)
|
|
512
78
|
|
|
513
|
-
|
|
514
|
-
→ Reviews completed work against plan
|
|
515
|
-
→ Council discussion for quality check
|
|
516
|
-
→ RETRO_COMPLETE → session ends
|
|
517
|
-
→ RETRO_INCOMPLETE → re-enters Phase 2 (max 1 retry)
|
|
518
|
-
```
|
|
79
|
+
MAMA connects to your apps and extracts structured facts into the memory graph.
|
|
519
80
|
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
| ------------------ | -------------------------- |
|
|
524
|
-
| `session.json` | Session metadata and phase |
|
|
525
|
-
| `plan.md` | Phase 1 output |
|
|
526
|
-
| `progress.json` | Completed step records |
|
|
527
|
-
| `retrospective.md` | Phase 3 output |
|
|
528
|
-
|
|
529
|
-
**Config:**
|
|
530
|
-
|
|
531
|
-
```yaml
|
|
532
|
-
multi_agent:
|
|
533
|
-
ultrawork:
|
|
534
|
-
enabled: true
|
|
535
|
-
phased_loop: true # false = legacy freeform loop
|
|
536
|
-
persist_state: true # file-based state persistence
|
|
537
|
-
max_steps: 20
|
|
538
|
-
max_duration: 1800000 # 30 min
|
|
81
|
+
```bash
|
|
82
|
+
mama connector add slack # Activate + auth guide
|
|
83
|
+
mama connector list # Status of all connectors
|
|
539
84
|
```
|
|
540
85
|
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
86
|
+
| Connector | Prerequisites | Config |
|
|
87
|
+
|-----------|--------------|--------|
|
|
88
|
+
| **Slack** | Bot Token (api.slack.com → OAuth scopes) | `bot_token`, `app_token` |
|
|
89
|
+
| **Discord** | Bot Token (discord.com/developers → MESSAGE CONTENT INTENT) | `token`, `default_channel_id` |
|
|
90
|
+
| **Telegram** | Bot Token (@BotFather) | `token`, `allowed_chat_ids` |
|
|
91
|
+
| **Chatwork** | API Token (account settings) | `api_token`, `room_ids` |
|
|
92
|
+
| **iMessage** | macOS only (reads local chat.db) | No config needed |
|
|
93
|
+
| **Gmail** | [gws CLI](https://github.com/nicholasgasior/gws) installed + Google OAuth | `gws` in PATH |
|
|
94
|
+
| **Calendar** | gws CLI installed + Google OAuth | `gws` in PATH |
|
|
95
|
+
| **Drive** | gws CLI installed + Google OAuth | `gws` in PATH |
|
|
96
|
+
| **Sheets** | gws CLI installed + Google OAuth | `gws` in PATH, `spreadsheet_ids` |
|
|
97
|
+
| **Notion** | Integration Token (notion.so/my-integrations) | `api_token`, `database_ids` |
|
|
98
|
+
| **Obsidian** | [Obsidian](https://obsidian.md) installed + [Obsidian Terminal](https://github.com/polyipseity/obsidian-terminal) plugin enabled | `vault_path` in config.yaml |
|
|
99
|
+
| **Trello** | API Key + Token (trello.com/app-key) | `api_key`, `token`, `board_ids` |
|
|
100
|
+
| **Kagemusha** | Kagemusha running locally | Reads `kagemusha.db` directly |
|
|
101
|
+
| **Claude Code** | Claude Code plugin installed | Automatic via hooks |
|
|
548
102
|
|
|
549
|
-
|
|
550
|
-
# Sisyphus - Lead Architect
|
|
103
|
+
**Google Workspace connectors** (Gmail, Calendar, Drive, Sheets) require the [gws CLI](https://github.com/nicholasgasior/gws) — a Google Workspace command-line tool. Install it, run `gws auth` once for OAuth, then MAMA polls via CLI.
|
|
551
104
|
|
|
552
|
-
|
|
105
|
+
Each connector classifies its source (truth / hub / spoke / reference) for the 3-pass extraction pipeline. Config: `~/.mama/connectors.json`.
|
|
553
106
|
|
|
554
|
-
##
|
|
107
|
+
## Knowledge Agents
|
|
555
108
|
|
|
556
|
-
|
|
557
|
-
- Delegate specialized work to Developer and Reviewer agents
|
|
558
|
-
- Ensure quality and consistency
|
|
109
|
+
MAMA OS runs specialized agents for knowledge management — not coding (that's what Claude Code does natively).
|
|
559
110
|
|
|
560
|
-
|
|
111
|
+
| Agent | Role | Requires |
|
|
112
|
+
|-------|------|----------|
|
|
113
|
+
| **Conductor** | Orchestrates other agents, handles user chat | — |
|
|
114
|
+
| **Dashboard Agent** | Generates project briefings from connected sources | — |
|
|
115
|
+
| **Wiki Agent** | Compiles knowledge into Obsidian vault | [Obsidian](https://obsidian.md) + [Terminal plugin](https://github.com/polyipseity/obsidian-terminal) |
|
|
116
|
+
| **Memory Agent** | Extracts decisions from conversations automatically | — |
|
|
561
117
|
|
|
562
|
-
|
|
563
|
-
DELEGATE::developer::task description here
|
|
118
|
+
Agents delegate via `delegate()` with skill injection and automatic retry. Configure in `~/.mama/config.yaml`.
|
|
564
119
|
|
|
565
|
-
|
|
566
|
-
DELEGATE::reviewer::review description here
|
|
567
|
-
```
|
|
568
|
-
|
|
569
|
-
Place persona files in `~/.mama/personas/`.
|
|
120
|
+
## Viewer
|
|
570
121
|
|
|
571
|
-
|
|
122
|
+
Web UI at `http://localhost:3847`. PWA-enabled for mobile (add to home screen).
|
|
572
123
|
|
|
573
|
-
|
|
124
|
+
| Tab | What it shows |
|
|
125
|
+
|-----|--------------|
|
|
126
|
+
| **Dashboard** | Agent activity, memory stats, system health |
|
|
127
|
+
| **Feed** | Real-time stream from all connected sources |
|
|
128
|
+
| **Wiki** | Knowledge base (syncs with Obsidian vault) |
|
|
129
|
+
| **Memory** | Interactive reasoning graph (1000+ nodes), search, export |
|
|
130
|
+
| **Logs** | Daemon logs with filtering, pinning, stats, WebSocket mode |
|
|
131
|
+
| **Settings** | Connectors, gateways, agents, cron, token budget |
|
|
574
132
|
|
|
575
|
-
|
|
576
|
-
2. **Getting to Know You** 💬 - Natural conversation to understand your needs
|
|
577
|
-
3. **Personality Quest** 🎮 - Fun scenario-based quiz (customized to your role)
|
|
578
|
-
4. **The Naming Ceremony** 🏷️ - Give MAMA a unique name and emoji
|
|
579
|
-
5. **Checkpoint** ✅ - Confirm all settings before proceeding
|
|
580
|
-
6. **Security Talk** 🔒 - Understand capabilities and risks (mandatory)
|
|
581
|
-
7. **The Connections** 🔌 - Step-by-step Discord/Slack/Telegram setup
|
|
582
|
-
8. **The Demo** 🎪 - See MAMA's capabilities in action
|
|
583
|
-
9. **Grand Finale** 🎉 - Complete setup and start using MAMA
|
|
133
|
+
Floating chat panel on every tab — voice input, TTS, slash commands.
|
|
584
134
|
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
```bash
|
|
588
|
-
mama setup
|
|
589
|
-
```
|
|
135
|
+
## Gateway Integrations
|
|
590
136
|
|
|
591
|
-
|
|
137
|
+
Run MAMA as a bot in Discord, Slack, Telegram, or Chatwork. Configure via `mama setup` or edit `~/.mama/config.yaml` directly.
|
|
592
138
|
|
|
593
139
|
## Architecture
|
|
594
140
|
|
|
595
141
|
```
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
│ └─────────────────────┘ │
|
|
623
|
-
│ │ │
|
|
624
|
-
│ ┌──────────▼──────────┐ │
|
|
625
|
-
│ │ MAMA OS Viewer │ │
|
|
626
|
-
│ │ (Web UI) │ │
|
|
627
|
-
│ └─────────────────────┘ │
|
|
628
|
-
│ │
|
|
629
|
-
└─────────────────────────────────────────────────┘
|
|
630
|
-
```
|
|
631
|
-
|
|
632
|
-
**Key Components:**
|
|
633
|
-
|
|
634
|
-
- **Gateway Layer** - Handles Discord/Slack/Telegram message routing
|
|
635
|
-
- **Agent Loop** - Continuous conversation handling via configured backend CLI
|
|
636
|
-
- **Skills System** - Pluggable capabilities (image translation, document analysis)
|
|
637
|
-
- **MAMA Core** - Shared memory and database (from @jungjaehoon/mama-core)
|
|
638
|
-
- **MAMA OS** - Web-based management interface
|
|
142
|
+
Connectors (15) Gateways (4)
|
|
143
|
+
Slack, Gmail, Sheets... Discord, Slack, Telegram, Chatwork
|
|
144
|
+
| |
|
|
145
|
+
v v
|
|
146
|
+
3-Pass Extraction Multi-Agent System
|
|
147
|
+
| |
|
|
148
|
+
+--------+-------+------+
|
|
149
|
+
|
|
|
150
|
+
MAMA Core (mama-memory.db)
|
|
151
|
+
Local SQLite + 1024-dim embeddings
|
|
152
|
+
|
|
|
153
|
+
+------+------+
|
|
154
|
+
| |
|
|
155
|
+
Viewer UI Claude Code Plugin
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## CLI
|
|
159
|
+
|
|
160
|
+
| Command | Description |
|
|
161
|
+
|---------|-------------|
|
|
162
|
+
| `mama init` | Initialize workspace |
|
|
163
|
+
| `mama setup` | Interactive setup wizard |
|
|
164
|
+
| `mama start` | Start daemon |
|
|
165
|
+
| `mama stop` | Stop daemon |
|
|
166
|
+
| `mama status` | Check status |
|
|
167
|
+
| `mama connector <add\|remove\|list\|status>` | Manage connectors |
|
|
639
168
|
|
|
640
169
|
## Configuration
|
|
641
170
|
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
**Example configuration:**
|
|
645
|
-
|
|
646
|
-
```yaml
|
|
647
|
-
# Agent settings
|
|
648
|
-
agent:
|
|
649
|
-
model: 'claude-sonnet-4-20250514'
|
|
650
|
-
max_turns: 10
|
|
651
|
-
timeout_seconds: 300
|
|
652
|
-
|
|
653
|
-
# Gateway integrations
|
|
654
|
-
gateways:
|
|
655
|
-
discord:
|
|
656
|
-
enabled: true
|
|
657
|
-
token: 'YOUR_TOKEN'
|
|
658
|
-
default_channel_id: '123456789'
|
|
659
|
-
|
|
660
|
-
slack:
|
|
661
|
-
enabled: false
|
|
662
|
-
bot_token: 'xoxb-...'
|
|
663
|
-
app_token: 'xapp-...'
|
|
664
|
-
|
|
665
|
-
telegram:
|
|
666
|
-
enabled: false
|
|
667
|
-
token: '123456:ABC...'
|
|
668
|
-
allowed_chat_ids: []
|
|
669
|
-
|
|
670
|
-
# Heartbeat scheduler
|
|
671
|
-
heartbeat:
|
|
672
|
-
enabled: true
|
|
673
|
-
interval_minutes: 30
|
|
674
|
-
quiet_hours:
|
|
675
|
-
start: 23
|
|
676
|
-
end: 8
|
|
677
|
-
|
|
678
|
-
# Skills
|
|
679
|
-
skills:
|
|
680
|
-
enabled: true
|
|
681
|
-
auto_load: true
|
|
682
|
-
directory: './skills'
|
|
683
|
-
|
|
684
|
-
# MAMA OS
|
|
685
|
-
viewer:
|
|
686
|
-
enabled: true
|
|
687
|
-
port: 3847
|
|
688
|
-
```
|
|
689
|
-
|
|
690
|
-
## Security
|
|
691
|
-
|
|
692
|
-
**IMPORTANT:** MAMA Standalone has full access to your system via the configured backend CLI.
|
|
693
|
-
|
|
694
|
-
### Capabilities
|
|
695
|
-
|
|
696
|
-
MAMA can:
|
|
697
|
-
|
|
698
|
-
- 🗂️ **Read/write files** - Any file your user account can access
|
|
699
|
-
- ⚡ **Execute commands** - Run terminal commands (npm, git, etc.)
|
|
700
|
-
- 🌐 **Make network requests** - Fetch data, call APIs
|
|
701
|
-
- 🔌 **Send messages** - Via configured gateway integrations
|
|
702
|
-
|
|
703
|
-
### Recommendations
|
|
704
|
-
|
|
705
|
-
**For maximum safety:**
|
|
706
|
-
|
|
707
|
-
- Run MAMA in a Docker container
|
|
708
|
-
- Use a dedicated user account with limited permissions
|
|
709
|
-
- Don't give MAMA access to production systems
|
|
710
|
-
- Review gateway permissions carefully
|
|
711
|
-
|
|
712
|
-
**Gateway security:**
|
|
713
|
-
|
|
714
|
-
- Discord: Use role-based permissions to limit bot access
|
|
715
|
-
- Slack: Only install to test workspaces initially
|
|
716
|
-
- Telegram: Use `allowed_chat_ids` to restrict who can interact
|
|
717
|
-
|
|
718
|
-
**External access:**
|
|
171
|
+
Main config: `~/.mama/config.yaml`
|
|
719
172
|
|
|
720
|
-
|
|
173
|
+
| Variable | Default |
|
|
174
|
+
|----------|---------|
|
|
175
|
+
| `MAMA_DB_PATH` | `~/.mama/mama-memory.db` |
|
|
176
|
+
| `MAMA_HTTP_PORT` | `3847` |
|
|
177
|
+
| `MAMA_WORKSPACE` | `~/.mama/workspace` |
|
|
721
178
|
|
|
722
|
-
|
|
723
|
-
2. **Testing only:** Use `cloudflared tunnel --url http://localhost:3847`
|
|
724
|
-
3. **If using Cloudflare Zero Trust:** start MAMA with `MAMA_TRUST_CLOUDFLARE_ACCESS=true` so Access-authenticated `/api/*` requests are not blocked by a second auth layer
|
|
179
|
+
## Related Packages
|
|
725
180
|
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
MAMA OS operators are responsible for complying with their backend provider Terms/Usage policies.
|
|
733
|
-
|
|
734
|
-
### Account Usage Rules
|
|
735
|
-
|
|
736
|
-
- Do not share personal CLI accounts, sessions, or credentials.
|
|
737
|
-
- Do not run multi-user team bots on a personal account plan.
|
|
738
|
-
- For team channels, use organization-approved plans/accounts (Team/Enterprise or API org setup).
|
|
739
|
-
- Do not bypass provider safeguards (token extraction, header spoofing, rate-limit evasion).
|
|
740
|
-
|
|
741
|
-
### Why this matters for chat channels
|
|
742
|
-
|
|
743
|
-
- A single bot in a group channel can still represent multi-user usage.
|
|
744
|
-
- Even if credentials are not directly shared, providers may treat shared bot access as account sharing.
|
|
745
|
-
- Multi-agent channels can increase concurrency/pattern complexity, so keep audit logs and sane limits.
|
|
746
|
-
|
|
747
|
-
## Environment Variables
|
|
748
|
-
|
|
749
|
-
| Variable | Description | Default |
|
|
750
|
-
| ---------------- | ------------------------ | -------------------------- |
|
|
751
|
-
| `MAMA_DB_PATH` | SQLite database location | `~/.claude/mama-memory.db` |
|
|
752
|
-
| `MAMA_HTTP_PORT` | MAMA OS port | `3847` |
|
|
753
|
-
| `MAMA_WORKSPACE` | Workspace directory | `./mama-workspace` |
|
|
754
|
-
|
|
755
|
-
> **Note:** Authentication is handled by the selected backend CLI. Run `claude` or `codex login` first.
|
|
756
|
-
|
|
757
|
-
## Troubleshooting
|
|
758
|
-
|
|
759
|
-
### Agent won't start
|
|
760
|
-
|
|
761
|
-
```bash
|
|
762
|
-
# Check if already running
|
|
763
|
-
mama status
|
|
764
|
-
|
|
765
|
-
# Stop existing instance
|
|
766
|
-
mama stop
|
|
767
|
-
|
|
768
|
-
# Start in foreground to see logs
|
|
769
|
-
mama start --foreground
|
|
770
|
-
```
|
|
771
|
-
|
|
772
|
-
### Gateway not connecting
|
|
773
|
-
|
|
774
|
-
```bash
|
|
775
|
-
# Verify token in config.yaml
|
|
776
|
-
cat mama-workspace/config.yaml
|
|
777
|
-
|
|
778
|
-
# Check gateway status in MAMA OS
|
|
779
|
-
# Open http://localhost:3847 → Dashboard tab
|
|
780
|
-
```
|
|
781
|
-
|
|
782
|
-
### Backend CLI authentication errors
|
|
783
|
-
|
|
784
|
-
```bash
|
|
785
|
-
# Re-authenticate Claude CLI
|
|
786
|
-
claude
|
|
787
|
-
|
|
788
|
-
# Re-authenticate Codex CLI
|
|
789
|
-
codex login
|
|
790
|
-
|
|
791
|
-
# Check CLI status
|
|
792
|
-
claude --version
|
|
793
|
-
codex --version
|
|
794
|
-
|
|
795
|
-
# Test with verbose output
|
|
796
|
-
mama run "test" --verbose
|
|
797
|
-
```
|
|
798
|
-
|
|
799
|
-
### Port already in use
|
|
800
|
-
|
|
801
|
-
```bash
|
|
802
|
-
# Change port in config.yaml
|
|
803
|
-
vim mama-workspace/config.yaml
|
|
804
|
-
|
|
805
|
-
# Or use setup wizard
|
|
806
|
-
mama setup --port 8080
|
|
807
|
-
```
|
|
808
|
-
|
|
809
|
-
## Comparison with Other Packages
|
|
810
|
-
|
|
811
|
-
| Package | Purpose | Use When |
|
|
812
|
-
| ---------------------------- | ------------------------------------------- | ----------------------------------- |
|
|
813
|
-
| **@jungjaehoon/mama-os** | Your AI Operating System (agent + gateways) | You want Discord/Slack/Telegram bot |
|
|
814
|
-
| **@jungjaehoon/mama-server** | MCP server for Claude clients | You use Claude Code/Desktop |
|
|
815
|
-
| **@jungjaehoon/mama-core** | Shared core library | You're building custom integrations |
|
|
816
|
-
|
|
817
|
-
**Not what you're looking for?**
|
|
818
|
-
|
|
819
|
-
- **For Claude Code/Desktop:** Use [@jungjaehoon/mama-server](../mcp-server/README.md)
|
|
820
|
-
- **For custom integrations:** Use [@jungjaehoon/mama-core](../mama-core/README.md)
|
|
821
|
-
- **For the full project:** See [main README](../../README.md)
|
|
181
|
+
| Package | Purpose |
|
|
182
|
+
|---------|---------|
|
|
183
|
+
| **@jungjaehoon/mama-os** | Always-on AI runtime (this package) |
|
|
184
|
+
| **@jungjaehoon/mama-server** | MCP server for Claude Desktop |
|
|
185
|
+
| **@jungjaehoon/mama-core** | Shared memory engine |
|
|
822
186
|
|
|
823
187
|
## Development
|
|
824
188
|
|
|
825
|
-
### Project Structure
|
|
826
|
-
|
|
827
|
-
```
|
|
828
|
-
packages/standalone/
|
|
829
|
-
├── src/
|
|
830
|
-
│ ├── cli/ # CLI commands
|
|
831
|
-
│ ├── agent/ # Agent loop implementation
|
|
832
|
-
│ ├── gateways/ # Discord, Slack, Telegram
|
|
833
|
-
│ ├── skills/ # Built-in skills
|
|
834
|
-
│ ├── onboarding/ # Setup wizard
|
|
835
|
-
│ └── config/ # Configuration management
|
|
836
|
-
├── public/
|
|
837
|
-
│ └── viewer/ # MAMA OS web interface
|
|
838
|
-
├── templates/ # Workspace templates
|
|
839
|
-
└── tests/ # Test suite
|
|
840
|
-
```
|
|
841
|
-
|
|
842
|
-
### Building from Source
|
|
843
|
-
|
|
844
189
|
```bash
|
|
845
|
-
# Clone repository
|
|
846
190
|
git clone https://github.com/jungjaehoon-lifegamez/MAMA.git
|
|
847
|
-
cd MAMA
|
|
848
|
-
|
|
849
|
-
# Install dependencies
|
|
850
|
-
pnpm install
|
|
851
|
-
|
|
852
|
-
# Build standalone package
|
|
853
|
-
cd packages/standalone
|
|
854
|
-
pnpm build
|
|
855
|
-
|
|
856
|
-
# Link for local testing
|
|
857
|
-
npm link
|
|
858
|
-
|
|
859
|
-
# Test
|
|
860
|
-
mama init
|
|
861
|
-
mama start --foreground
|
|
862
|
-
```
|
|
863
|
-
|
|
864
|
-
### Running Tests
|
|
865
|
-
|
|
866
|
-
```bash
|
|
867
|
-
# All tests
|
|
868
|
-
pnpm test
|
|
869
|
-
|
|
870
|
-
# Watch mode
|
|
871
|
-
pnpm test:watch
|
|
872
|
-
|
|
873
|
-
# Type checking
|
|
874
|
-
pnpm typecheck
|
|
191
|
+
cd MAMA && pnpm install && pnpm build
|
|
192
|
+
pnpm test # 2800+ tests across all packages
|
|
875
193
|
```
|
|
876
194
|
|
|
877
195
|
## Links
|
|
878
196
|
|
|
879
|
-
- [
|
|
880
|
-
- [Documentation](https://github.com/jungjaehoon-lifegamez/MAMA/tree/main/docs)
|
|
881
|
-
- [Issues](https://github.com/jungjaehoon-lifegamez/MAMA/issues)
|
|
882
|
-
- [npm Package](https://www.npmjs.com/package/@jungjaehoon/mama-os)
|
|
883
|
-
- [MCP Server Package](https://www.npmjs.com/package/@jungjaehoon/mama-server)
|
|
197
|
+
[GitHub](https://github.com/jungjaehoon-lifegamez/MAMA) · [npm](https://www.npmjs.com/package/@jungjaehoon/mama-os) · [Docs](https://github.com/jungjaehoon-lifegamez/MAMA/tree/main/docs) · [Issues](https://github.com/jungjaehoon-lifegamez/MAMA/issues)
|
|
884
198
|
|
|
885
199
|
## License
|
|
886
200
|
|
|
887
|
-
MIT
|
|
888
|
-
|
|
889
|
-
## Acknowledgments
|
|
890
|
-
|
|
891
|
-
MAMA was inspired by [mem0](https://github.com/mem0ai/mem0) (Apache 2.0). While MAMA is a distinct implementation focused on local-first SQLite/MCP architecture, we appreciate their pioneering work in LLM memory management.
|
|
892
|
-
|
|
893
|
-
The multi-agent swarm architecture was inspired by [oh-my-opencode](https://github.com/nicepkg/oh-my-opencode). Their agent orchestration approach informed our design. The key difference is that MAMA's swarm is built for **chat platforms** (Discord, Slack, Telegram) — multiple bot accounts collaborating in real-time channels — rather than a local CLI environment.
|
|
201
|
+
MIT
|
|
894
202
|
|
|
895
203
|
---
|
|
896
204
|
|
|
897
|
-
**
|
|
898
|
-
**Last Updated:** 2026-02-20
|
|
205
|
+
**Last Updated:** 2026-04-10
|