MAMABLOCK
Local-first operating memory for AI coding agents - Claude Code, Codex, and any MCP client. Tracks decisions and their evolution. SQLite + on-device embeddings, no cloud.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](https://opensource.org/licenses/MIT) [](https://nodejs.org) [](https://jungjaehoon-lifegamez.github.io/MAMA/)
Documentation · Your first day · How it works · What you can connect · Security · Status
MAMA is a work agent that runs on your own computer. It follows the conversations, files and schedules in the tools you connect, keeps them as they were, and keeps a history of each piece of work: what changed, why, who did it and what the feedback was. You talk to it in your messenger. It answers from that history, sends you reports, and remembers how you want things done.
The same repository also gives Claude Code a development memory (decisions and checkpoints that survive a new session), and both are built on mama-core, a shared engine other products can use.
MAMA runs no hosted service. The record stays on your machine. Only the content a run needs leaves it, through the AI CLI you logged into and the services you connected.
Why
An assistant is only as useful as what it remembers, and memory kept on someone else's server disappears when the service changes. MAMA keeps the record of your work on your computer, in its original form, so today's model and a better one tomorrow can read the same history. You decide which sources to connect and what to hand over.
Principles
In order of importance.
- Never lose the record. Original text, time, source and every later change are kept, not
overwritten.
- Know why it changed. Each change to a piece of work names the message or file behind it.
- Act only where allowed. MAMA sends only to the owner destinations you configured, and its
fb7af086c446OBSERVED · 2026-10-12Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add mama-os-ui --env CODE_ACT_TEST_SECRET=${CODE_ACT_TEST_SECRET} --env MAMA_AUTH_TOKEN=${MAMA_AUTH_TOKEN} --env MAMA_DISCORD_TOKEN=${MAMA_DISCORD_TOKEN} --env MAMA_SESSION_CREDENTIAL_PATH=${MAMA_SESSION_CREDENTIAL_PATH} -- npx -y @jungjaehoon/mama-os-ui{
"mcpServers": {
"mama-os-ui": {
"command": "npx",
"args": [
"-y",
"@jungjaehoon/mama-os-ui"
],
"env": {
"CODE_ACT_TEST_SECRET": "${CODE_ACT_TEST_SECRET}",
"MAMA_AUTH_TOKEN": "${MAMA_AUTH_TOKEN}",
"MAMA_DISCORD_TOKEN": "${MAMA_DISCORD_TOKEN}",
"MAMA_SESSION_CREDENTIAL_PATH": "${MAMA_SESSION_CREDENTIAL_PATH}"
}
}
}
}Exposed tools (17)
12 read · 5 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
case_timeline_range | read | Return a bounded, chronological timeline for a case. Includes decision, event, observation, and artifact memberships resolved through canonical case chains. |
get_decision | read | Read one decision by id with every edge in and out: the relation, the other decision |
ingest_conversation | read | Ingest a conversation into MAMA |
late_tool | read | Must not enter the snapshot |
link | read | Link one decision to another after saving, with the reason you judged. Nothing is edited: a wrong link is corrected by linking to it (to = its edgeId from get_decision, relation contradicts), and both stay in the history. A decision that replaces another is saved with replaces. |
list_decisions | write | List recent decisions in chronological order. Returns formatted list showing time, type (user/assistant), topic, preview, confidence, and status. Use this to see recent activity or find decisions by browsing. Use scopes to filter by project/channel. |
load_checkpoint | read | Load the latest active session checkpoint with narrative and links. Use this at the start of a new session to resume work seamlessly. |
recall_decision | read | Recall exact-topic decision history without scopes, or semantic memory matches within supplied scopes. Explicit supersedes links are traversed; reusing a topic does not create a relationship. |
report.read | read | Read the board |
save | write | Save to MAMA memory. Use type parameter to choose what to save. **type= |
save_decision | write | Save your architectural decisions, lessons learned, or insights to MAMA |
search | read | Search MAMA memory. Returns results ranked by semantic similarity. **With query** — Semantic search across decisions and checkpoints. Cross-lingual (Korean + English). Triggers: |
search_decisions_and_contracts | read | Search decisions and contracts for PreToolUse hook injection. |
source.read | read | read one bounded source page |
suggest_decision | read | Auto-suggest relevant past decisions based on user |
synthetic_lookup | write | Run a synthetic lookup |
update | write | Update decision outcome after real-world validation. Triggers: |
Trust audit
BLOCKgrade F · trust 39/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | FAIL |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | FAIL |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (5 observation(s))
- Network
- declared (4 observation(s))
- Shell
- declared (6 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (25)
087-mailbox-payload.sql
stimulus-payload.ts
parsed = yaml.load(readFileSync(path, 'utf8'));
exec(sql: string): void;
exec(sql: string): void {exec(sql: string): void {exec(sql: string): void {- **Workflow Failure Feedback**: Conductor receives `[SYSTEM]` error message when plan validation or execution fails, enabling plan adjustment
export MAMA_DATABASE_URL="postgresql://postgres:mama123@localhost:5432/mama_db"
const secret = 'generated-header-secret';
Object.assign(options.telegram, { token: 'fixture-obsolete-token' });result.xlsx
.coderabbit.yaml
.git-blame-ignore-revs
.gitleaks.toml
.gitmodules
.prettierignore
mailbox-payload.test.ts
exec(sql: string): void;
const md5 = createHash('md5');const digest = createHash('sha1').update(`${sourceConnector}\0${sourceId}`, 'utf8').digest('hex');return createHash('sha1')const md5 = createHash('md5').update(content).digest('hex');return crypto.createHash('md5').update(content).digest('hex');'/.aws/credentials',
Gates applied: no_behavioural_pass.
fb7af086c446full audit observations/trust-audit/mcp-server/jungjaehoon-lifegamez__mama.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | fb7af086c446 | BLOCK | F | 39 | first audit |
Questions
What is the @jungjaehoon/mama-os MCP server?
Local-first operating memory for AI coding agents - Claude Code, Codex, and any MCP client. Tracks decisions and their evolution. SQLite + on-device embeddings, no cloud.
What tools does @jungjaehoon/mama-os expose?
17 in total: 12 read-only, 5 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is @jungjaehoon/mama-os safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (39/100) and found 8 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What credentials does @jungjaehoon/mama-os need?
It reads CODE_ACT_TEST_SECRET, MAMA_AUTH_TOKEN, MAMA_DISCORD_TOKEN, MAMA_SESSION_CREDENTIAL_PATH, MAMA_SLACK_APP_TOKEN, MAMA_SLACK_TOKEN, MAMA_TELEGRAM_TOKEN, MAMA_TRELLO_KEY, TEST_SECRET, TRELLO_API_KEY and TRELLO_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does @jungjaehoon/mama-os run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as @jungjaehoon/mama-os-ui.
How current is this page?
The grade is for one exact copy of the source (fb7af086c446), read on 2026-10-12. The repository is watched and re-audited when it changes.