Repository files navigation

memcode

The coding agent that remembers your repo.

memcode.aiLatest releaseLicense: MIT

Memcode

Most coding agents start every session from zero. memcode keeps a persistent model of your repo in .memcode: the subsystems, what you worked on last week, which approaches failed and why, and the preferences you have corrected it on. The longer you use it, the less you have to explain.

One Go binary, two ways to run it. Code is the interactive agent in your terminal. Agents is the same binary as a self-hosted gateway, answering on the chat surfaces you already use — and running agents you have given a standing objective and permission to work on it unattended. Both run against whatever models you have: your own API keys, a local endpoint like Ollama, or a hosted memcode account.

Screenshots

memcode terminal UI: the matrix splash and the model picker, from Automatic to any specific model

memcode editing code while tracking a live task plan in the terminal

Code

Run memcode in a repo and you get a full terminal coding agent.

It remembers. Ask it to pick up where you left off last week and it can. It knows your repo's layout, what has been tried before, and the preferences you have corrected it on. Memory lives in .memcode, so it travels with the repo and your whole team benefits.

Pick a model or let it decide. Out of the box it uses cheap models for routine work and strong models when the task is hard or risky. Pin any model with /model when you want control.

Reads the room. When you are correcting it, it slows down, asks before acting, and stops cutting corners. When things are calm it stays out of your way.

Plan first when it matters./plan researches your codebase, drafts an approach, and gets a second model's review before you approve it. Execution then sticks to what you approved.

Work in parallel. Hand off side quests to sub-agents and background jobs, keep working, and check on them with /jobs and /tail.

A terminal UI that keeps up. Multiline editing, slash-command autocomplete, streaming output, interrupt and redirect mid-turn, themes, and a live context meter.

Everything you'd expect. MCP servers, Agent Skills, hooks, code navigation and diagnostics, vision and PDF input, instructions from MEMCODE.md, AGENTS.md, or CLAUDE.md, and automatic updates.

Agents

Message your agent from wherever you already are. It runs your task and replies in the same conversation. Fix a bug from Telegram on the train, ask for a status update over SMS, forward an email and get it handled.

Twelve channels. Telegram, Discord, Slack, GitHub, WhatsApp, Email, Signal, Matrix, Mattermost, Microsoft Teams, Google Chat, and SMS. memcode gateway setup walks you through connecting each one.

Voice. Send a voice note instead of typing. Replies can come back as voice too, per channel and off by default.

You decide who gets in. Unknown senders have to pair first: they get a code, you approve it. Allow-lists per channel on top of that.

Coming from Hermes or OpenClaw?memcode hermes migrate or memcode claw migrate brings over your channels, API keys, skills, and long-term memory in one command.

Agents that run on their own

An agent can be given a durable objective and permission to run autonomously — then it works on that objective on a schedule, with nobody watching. It is the same agent either way; autonomy is a setting, not a separate kind. You set it up by talking to memcode admin.

Objective and autonomy are separate grants on purpose: an agent may hold a goal you only ever work on together, and an agent may run unattended on a schedule with no standing objective at all. The second case is why this matters — an unattended run is policy-gated (authority approved in advance, by hash), journals every consequential action, confines file access to explicit grants, and can suspend durably to ask you something rather than guessing. Plain scheduled agents never had any of that.

It can also delegate real work to a scoped worker with browser, MCP, shell and filesystem access, and drive your own signed-in Chrome rather than a logged-out profile. See docs/autonomous-agents.md.

Install

curl -fsSL https://memcode.ai/install.sh | sh

Or with Go:

go install github.com/memcode-ai/memcode@latest

Or build from source:

git clone https://github.com/memcode-ai/memcode
cd memcode && go build -o memcode .

Then run memcode in a repo.

Use any model

MEMCODE_ENDPOINT_URL=http://localhost:11434/v1 memcode # Ollama, local
MEMCODE_ENDPOINT_URL=https://api.openai.com/v1 memcode # your OpenAI key (OPENAI_API_KEY)
MEMCODE_ENDPOINT_URL=https://api.anthropic.com memcode # your Anthropic key (ANTHROPIC_API_KEY)

Your provider API keys are picked up automatically from the standard environment variables.

With a memcode account you get one balance across every vendor, a key vault for BYOK, and hosted web search:

memcode login

Documentation

The user manual lives at memcode.ai/docs:

  • Code: commands, model routing, memory, plan mode, MCP, skills, custom instructions, configuration.
  • Agents: per-channel setup guides for every gateway channel, pairing, and voice.

Internals and reference docs live in this repo:

Architecture

The CLI is the agent: all model selection, escalation, and recovery run client-side; every backend is a plain serving surface speaking one OpenAI-compatible wire. Point memcode at your own API keys, a local endpoint like Ollama, or a hosted memcode.ai account.

License

MIT. See LICENSE.

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

memcode

The coding agent that remembers your repo.

memcode.aiLatest releaseLicense: MIT

Memcode

Most coding agents start every session from zero. memcode keeps a persistent model of your repo in .memcode: the subsystems, what you worked on last week, which approaches failed and why, and the preferences you have corrected it on. The longer you use it, the less you have to explain.

One Go binary, two ways to run it. Code is the interactive agent in your terminal. Agents is the same binary as a self-hosted gateway, answering on the chat surfaces you already use — and running agents you have given a standing objective and permission to work on it unattended. Both run against whatever models you have: your own API keys, a local endpoint like Ollama, or a hosted memcode account.

Screenshots

memcode terminal UI: the matrix splash and the model picker, from Automatic to any specific model

memcode editing code while tracking a live task plan in the terminal

Code

Run memcode in a repo and you get a full terminal coding agent.

It remembers. Ask it to pick up where you left off last week and it can. It knows your repo's layout, what has been tried before, and the preferences you have corrected it on. Memory lives in .memcode, so it travels with the repo and your whole team benefits.

Pick a model or let it decide. Out of the box it uses cheap models for routine work and strong models when the task is hard or risky. Pin any model with /model when you want control.

Reads the room. When you are correcting it, it slows down, asks before acting, and stops cutting corners. When things are calm it stays out of your way.

Plan first when it matters./plan researches your codebase, drafts an approach, and gets a second model's review before you approve it. Execution then sticks to what you approved.

Work in parallel. Hand off side quests to sub-agents and background jobs, keep working, and check on them with /jobs and /tail.

A terminal UI that keeps up. Multiline editing, slash-command autocomplete, streaming output, interrupt and redirect mid-turn, themes, and a live context meter.

Everything you'd expect. MCP servers, Agent Skills, hooks, code navigation and diagnostics, vision and PDF input, instructions from MEMCODE.md, AGENTS.md, or CLAUDE.md, and automatic updates.

Agents

Message your agent from wherever you already are. It runs your task and replies in the same conversation. Fix a bug from Telegram on the train, ask for a status update over SMS, forward an email and get it handled.

Twelve channels. Telegram, Discord, Slack, GitHub, WhatsApp, Email, Signal, Matrix, Mattermost, Microsoft Teams, Google Chat, and SMS. memcode gateway setup walks you through connecting each one.

Voice. Send a voice note instead of typing. Replies can come back as voice too, per channel and off by default.

You decide who gets in. Unknown senders have to pair first: they get a code, you approve it. Allow-lists per channel on top of that.

Coming from Hermes or OpenClaw?memcode hermes migrate or memcode claw migrate brings over your channels, API keys, skills, and long-term memory in one command.

Agents that run on their own

An agent can be given a durable objective and permission to run autonomously — then it works on that objective on a schedule, with nobody watching. It is the same agent either way; autonomy is a setting, not a separate kind. You set it up by talking to memcode admin.

Objective and autonomy are separate grants on purpose: an agent may hold a goal you only ever work on together, and an agent may run unattended on a schedule with no standing objective at all. The second case is why this matters — an unattended run is policy-gated (authority approved in advance, by hash), journals every consequential action, confines file access to explicit grants, and can suspend durably to ask you something rather than guessing. Plain scheduled agents never had any of that.

It can also delegate real work to a scoped worker with browser, MCP, shell and filesystem access, and drive your own signed-in Chrome rather than a logged-out profile. See docs/autonomous-agents.md.

Install

curl -fsSL https://memcode.ai/install.sh | sh

Or with Go:

go install github.com/memcode-ai/memcode@latest

Or build from source:

git clone https://github.com/memcode-ai/memcode
cd memcode && go build -o memcode .

Then run memcode in a repo.

Use any model

MEMCODE_ENDPOINT_URL=http://localhost:11434/v1 memcode # Ollama, local
MEMCODE_ENDPOINT_URL=https://api.openai.com/v1 memcode # your OpenAI key (OPENAI_API_KEY)
MEMCODE_ENDPOINT_URL=https://api.anthropic.com memcode # your Anthropic key (ANTHROPIC_API_KEY)

Your provider API keys are picked up automatically from the standard environment variables.

With a memcode account you get one balance across every vendor, a key vault for BYOK, and hosted web search:

memcode login

Documentation

The user manual lives at memcode.ai/docs:

  • Code: commands, model routing, memory, plan mode, MCP, skills, custom instructions, configuration.
  • Agents: per-channel setup guides for every gateway channel, pairing, and voice.

Internals and reference docs live in this repo:

Architecture

The CLI is the agent: all model selection, escalation, and recovery run client-side; every backend is a plain serving surface speaking one OpenAI-compatible wire. Point memcode at your own API keys, a local endpoint like Ollama, or a hosted memcode.ai account.

License

MIT. See LICENSE.

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

memcode

The coding agent that remembers your repo.

memcode.aiLatest releaseLicense: MIT

Memcode

Most coding agents start every session from zero. memcode keeps a persistent model of your repo in .memcode: the subsystems, what you worked on last week, which approaches failed and why, and the preferences you have corrected it on. The longer you use it, the less you have to explain.

One Go binary, two ways to run it. Code is the interactive agent in your terminal. Agents is the same binary as a self-hosted gateway, answering on the chat surfaces you already use — and running agents you have given a standing objective and permission to work on it unattended. Both run against whatever models you have: your own API keys, a local endpoint like Ollama, or a hosted memcode account.

Screenshots

memcode terminal UI: the matrix splash and the model picker, from Automatic to any specific model

memcode editing code while tracking a live task plan in the terminal

Code

Run memcode in a repo and you get a full terminal coding agent.

It remembers. Ask it to pick up where you left off last week and it can. It knows your repo's layout, what has been tried before, and the preferences you have corrected it on. Memory lives in .memcode, so it travels with the repo and your whole team benefits.

Pick a model or let it decide. Out of the box it uses cheap models for routine work and strong models when the task is hard or risky. Pin any model with /model when you want control.

Reads the room. When you are correcting it, it slows down, asks before acting, and stops cutting corners. When things are calm it stays out of your way.

Plan first when it matters./plan researches your codebase, drafts an approach, and gets a second model's review before you approve it. Execution then sticks to what you approved.

Work in parallel. Hand off side quests to sub-agents and background jobs, keep working, and check on them with /jobs and /tail.

A terminal UI that keeps up. Multiline editing, slash-command autocomplete, streaming output, interrupt and redirect mid-turn, themes, and a live context meter.

Everything you'd expect. MCP servers, Agent Skills, hooks, code navigation and diagnostics, vision and PDF input, instructions from MEMCODE.md, AGENTS.md, or CLAUDE.md, and automatic updates.

Agents

Message your agent from wherever you already are. It runs your task and replies in the same conversation. Fix a bug from Telegram on the train, ask for a status update over SMS, forward an email and get it handled.

Twelve channels. Telegram, Discord, Slack, GitHub, WhatsApp, Email, Signal, Matrix, Mattermost, Microsoft Teams, Google Chat, and SMS. memcode gateway setup walks you through connecting each one.

Voice. Send a voice note instead of typing. Replies can come back as voice too, per channel and off by default.

You decide who gets in. Unknown senders have to pair first: they get a code, you approve it. Allow-lists per channel on top of that.

Coming from Hermes or OpenClaw?memcode hermes migrate or memcode claw migrate brings over your channels, API keys, skills, and long-term memory in one command.

Agents that run on their own

An agent can be given a durable objective and permission to run autonomously — then it works on that objective on a schedule, with nobody watching. It is the same agent either way; autonomy is a setting, not a separate kind. You set it up by talking to memcode admin.

Objective and autonomy are separate grants on purpose: an agent may hold a goal you only ever work on together, and an agent may run unattended on a schedule with no standing objective at all. The second case is why this matters — an unattended run is policy-gated (authority approved in advance, by hash), journals every consequential action, confines file access to explicit grants, and can suspend durably to ask you something rather than guessing. Plain scheduled agents never had any of that.

It can also delegate real work to a scoped worker with browser, MCP, shell and filesystem access, and drive your own signed-in Chrome rather than a logged-out profile. See docs/autonomous-agents.md.

Install

curl -fsSL https://memcode.ai/install.sh | sh

Or with Go:

go install github.com/memcode-ai/memcode@latest

Or build from source:

git clone https://github.com/memcode-ai/memcode
cd memcode && go build -o memcode .

Then run memcode in a repo.

Use any model

MEMCODE_ENDPOINT_URL=http://localhost:11434/v1 memcode # Ollama, local
MEMCODE_ENDPOINT_URL=https://api.openai.com/v1 memcode # your OpenAI key (OPENAI_API_KEY)
MEMCODE_ENDPOINT_URL=https://api.anthropic.com memcode # your Anthropic key (ANTHROPIC_API_KEY)

Your provider API keys are picked up automatically from the standard environment variables.

With a memcode account you get one balance across every vendor, a key vault for BYOK, and hosted web search:

memcode login

Documentation

The user manual lives at memcode.ai/docs:

  • Code: commands, model routing, memory, plan mode, MCP, skills, custom instructions, configuration.
  • Agents: per-channel setup guides for every gateway channel, pairing, and voice.

Internals and reference docs live in this repo:

Architecture

The CLI is the agent: all model selection, escalation, and recovery run client-side; every backend is a plain serving surface speaking one OpenAI-compatible wire. Point memcode at your own API keys, a local endpoint like Ollama, or a hosted memcode.ai account.

License

MIT. See LICENSE.

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

memcode

The coding agent that remembers your repo.

memcode.aiLatest releaseLicense: MIT

Memcode

Most coding agents start every session from zero. memcode keeps a persistent model of your repo in .memcode: the subsystems, what you worked on last week, which approaches failed and why, and the preferences you have corrected it on. The longer you use it, the less you have to explain.

One Go binary, two ways to run it. Code is the interactive agent in your terminal. Agents is the same binary as a self-hosted gateway, answering on the chat surfaces you already use — and running agents you have given a standing objective and permission to work on it unattended. Both run against whatever models you have: your own API keys, a local endpoint like Ollama, or a hosted memcode account.

Screenshots

memcode terminal UI: the matrix splash and the model picker, from Automatic to any specific model

memcode editing code while tracking a live task plan in the terminal

Code

Run memcode in a repo and you get a full terminal coding agent.

It remembers. Ask it to pick up where you left off last week and it can. It knows your repo's layout, what has been tried before, and the preferences you have corrected it on. Memory lives in .memcode, so it travels with the repo and your whole team benefits.

Pick a model or let it decide. Out of the box it uses cheap models for routine work and strong models when the task is hard or risky. Pin any model with /model when you want control.

Reads the room. When you are correcting it, it slows down, asks before acting, and stops cutting corners. When things are calm it stays out of your way.

Plan first when it matters./plan researches your codebase, drafts an approach, and gets a second model's review before you approve it. Execution then sticks to what you approved.

Work in parallel. Hand off side quests to sub-agents and background jobs, keep working, and check on them with /jobs and /tail.

A terminal UI that keeps up. Multiline editing, slash-command autocomplete, streaming output, interrupt and redirect mid-turn, themes, and a live context meter.

Everything you'd expect. MCP servers, Agent Skills, hooks, code navigation and diagnostics, vision and PDF input, instructions from MEMCODE.md, AGENTS.md, or CLAUDE.md, and automatic updates.

Agents

Message your agent from wherever you already are. It runs your task and replies in the same conversation. Fix a bug from Telegram on the train, ask for a status update over SMS, forward an email and get it handled.

Twelve channels. Telegram, Discord, Slack, GitHub, WhatsApp, Email, Signal, Matrix, Mattermost, Microsoft Teams, Google Chat, and SMS. memcode gateway setup walks you through connecting each one.

Voice. Send a voice note instead of typing. Replies can come back as voice too, per channel and off by default.

You decide who gets in. Unknown senders have to pair first: they get a code, you approve it. Allow-lists per channel on top of that.

Coming from Hermes or OpenClaw?memcode hermes migrate or memcode claw migrate brings over your channels, API keys, skills, and long-term memory in one command.

Agents that run on their own

An agent can be given a durable objective and permission to run autonomously — then it works on that objective on a schedule, with nobody watching. It is the same agent either way; autonomy is a setting, not a separate kind. You set it up by talking to memcode admin.

Objective and autonomy are separate grants on purpose: an agent may hold a goal you only ever work on together, and an agent may run unattended on a schedule with no standing objective at all. The second case is why this matters — an unattended run is policy-gated (authority approved in advance, by hash), journals every consequential action, confines file access to explicit grants, and can suspend durably to ask you something rather than guessing. Plain scheduled agents never had any of that.

It can also delegate real work to a scoped worker with browser, MCP, shell and filesystem access, and drive your own signed-in Chrome rather than a logged-out profile. See docs/autonomous-agents.md.

Install

curl -fsSL https://memcode.ai/install.sh | sh

Or with Go:

go install github.com/memcode-ai/memcode@latest

Or build from source:

git clone https://github.com/memcode-ai/memcode
cd memcode && go build -o memcode .

Then run memcode in a repo.

Use any model

MEMCODE_ENDPOINT_URL=http://localhost:11434/v1 memcode # Ollama, local
MEMCODE_ENDPOINT_URL=https://api.openai.com/v1 memcode # your OpenAI key (OPENAI_API_KEY)
MEMCODE_ENDPOINT_URL=https://api.anthropic.com memcode # your Anthropic key (ANTHROPIC_API_KEY)

Your provider API keys are picked up automatically from the standard environment variables.

With a memcode account you get one balance across every vendor, a key vault for BYOK, and hosted web search:

memcode login

Documentation

The user manual lives at memcode.ai/docs:

  • Code: commands, model routing, memory, plan mode, MCP, skills, custom instructions, configuration.
  • Agents: per-channel setup guides for every gateway channel, pairing, and voice.

Internals and reference docs live in this repo:

Architecture

The CLI is the agent: all model selection, escalation, and recovery run client-side; every backend is a plain serving surface speaking one OpenAI-compatible wire. Point memcode at your own API keys, a local endpoint like Ollama, or a hosted memcode.ai account.

License

MIT. See LICENSE.

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

memcode

The coding agent that remembers your repo.

memcode.aiLatest releaseLicense: MIT

Memcode

Most coding agents start every session from zero. memcode keeps a persistent model of your repo in .memcode: the subsystems, what you worked on last week, which approaches failed and why, and the preferences you have corrected it on. The longer you use it, the less you have to explain.

One Go binary, two ways to run it. Code is the interactive agent in your terminal. Agents is the same binary as a self-hosted gateway, answering on the chat surfaces you already use — and running agents you have given a standing objective and permission to work on it unattended. Both run against whatever models you have: your own API keys, a local endpoint like Ollama, or a hosted memcode account.

Screenshots

memcode terminal UI: the matrix splash and the model picker, from Automatic to any specific model

memcode editing code while tracking a live task plan in the terminal

Code

Run memcode in a repo and you get a full terminal coding agent.

It remembers. Ask it to pick up where you left off last week and it can. It knows your repo's layout, what has been tried before, and the preferences you have corrected it on. Memory lives in .memcode, so it travels with the repo and your whole team benefits.

Pick a model or let it decide. Out of the box it uses cheap models for routine work and strong models when the task is hard or risky. Pin any model with /model when you want control.

Reads the room. When you are correcting it, it slows down, asks before acting, and stops cutting corners. When things are calm it stays out of your way.

Plan first when it matters./plan researches your codebase, drafts an approach, and gets a second model's review before you approve it. Execution then sticks to what you approved.

Work in parallel. Hand off side quests to sub-agents and background jobs, keep working, and check on them with /jobs and /tail.

A terminal UI that keeps up. Multiline editing, slash-command autocomplete, streaming output, interrupt and redirect mid-turn, themes, and a live context meter.

Everything you'd expect. MCP servers, Agent Skills, hooks, code navigation and diagnostics, vision and PDF input, instructions from MEMCODE.md, AGENTS.md, or CLAUDE.md, and automatic updates.

Agents

Message your agent from wherever you already are. It runs your task and replies in the same conversation. Fix a bug from Telegram on the train, ask for a status update over SMS, forward an email and get it handled.

Twelve channels. Telegram, Discord, Slack, GitHub, WhatsApp, Email, Signal, Matrix, Mattermost, Microsoft Teams, Google Chat, and SMS. memcode gateway setup walks you through connecting each one.

Voice. Send a voice note instead of typing. Replies can come back as voice too, per channel and off by default.

You decide who gets in. Unknown senders have to pair first: they get a code, you approve it. Allow-lists per channel on top of that.

Coming from Hermes or OpenClaw?memcode hermes migrate or memcode claw migrate brings over your channels, API keys, skills, and long-term memory in one command.

Agents that run on their own

An agent can be given a durable objective and permission to run autonomously — then it works on that objective on a schedule, with nobody watching. It is the same agent either way; autonomy is a setting, not a separate kind. You set it up by talking to memcode admin.

Objective and autonomy are separate grants on purpose: an agent may hold a goal you only ever work on together, and an agent may run unattended on a schedule with no standing objective at all. The second case is why this matters — an unattended run is policy-gated (authority approved in advance, by hash), journals every consequential action, confines file access to explicit grants, and can suspend durably to ask you something rather than guessing. Plain scheduled agents never had any of that.

It can also delegate real work to a scoped worker with browser, MCP, shell and filesystem access, and drive your own signed-in Chrome rather than a logged-out profile. See docs/autonomous-agents.md.

Install

curl -fsSL https://memcode.ai/install.sh | sh

Or with Go:

go install github.com/memcode-ai/memcode@latest

Or build from source:

git clone https://github.com/memcode-ai/memcode
cd memcode && go build -o memcode .

Then run memcode in a repo.

Use any model

MEMCODE_ENDPOINT_URL=http://localhost:11434/v1 memcode # Ollama, local
MEMCODE_ENDPOINT_URL=https://api.openai.com/v1 memcode # your OpenAI key (OPENAI_API_KEY)
MEMCODE_ENDPOINT_URL=https://api.anthropic.com memcode # your Anthropic key (ANTHROPIC_API_KEY)

Your provider API keys are picked up automatically from the standard environment variables.

With a memcode account you get one balance across every vendor, a key vault for BYOK, and hosted web search:

memcode login

Documentation

The user manual lives at memcode.ai/docs:

  • Code: commands, model routing, memory, plan mode, MCP, skills, custom instructions, configuration.
  • Agents: per-channel setup guides for every gateway channel, pairing, and voice.

Internals and reference docs live in this repo:

Architecture

The CLI is the agent: all model selection, escalation, and recovery run client-side; every backend is a plain serving surface speaking one OpenAI-compatible wire. Point memcode at your own API keys, a local endpoint like Ollama, or a hosted memcode.ai account.

License

MIT. See LICENSE.

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

memcode

The coding agent that remembers your repo.

memcode.aiLatest releaseLicense: MIT

Memcode

Most coding agents start every session from zero. memcode keeps a persistent model of your repo in .memcode: the subsystems, what you worked on last week, which approaches failed and why, and the preferences you have corrected it on. The longer you use it, the less you have to explain.

One Go binary, two ways to run it. Code is the interactive agent in your terminal. Agents is the same binary as a self-hosted gateway, answering on the chat surfaces you already use — and running agents you have given a standing objective and permission to work on it unattended. Both run against whatever models you have: your own API keys, a local endpoint like Ollama, or a hosted memcode account.

Screenshots

memcode terminal UI: the matrix splash and the model picker, from Automatic to any specific model

memcode editing code while tracking a live task plan in the terminal

Code

Run memcode in a repo and you get a full terminal coding agent.

It remembers. Ask it to pick up where you left off last week and it can. It knows your repo's layout, what has been tried before, and the preferences you have corrected it on. Memory lives in .memcode, so it travels with the repo and your whole team benefits.

Pick a model or let it decide. Out of the box it uses cheap models for routine work and strong models when the task is hard or risky. Pin any model with /model when you want control.

Reads the room. When you are correcting it, it slows down, asks before acting, and stops cutting corners. When things are calm it stays out of your way.

Plan first when it matters./plan researches your codebase, drafts an approach, and gets a second model's review before you approve it. Execution then sticks to what you approved.

Work in parallel. Hand off side quests to sub-agents and background jobs, keep working, and check on them with /jobs and /tail.

A terminal UI that keeps up. Multiline editing, slash-command autocomplete, streaming output, interrupt and redirect mid-turn, themes, and a live context meter.

Everything you'd expect. MCP servers, Agent Skills, hooks, code navigation and diagnostics, vision and PDF input, instructions from MEMCODE.md, AGENTS.md, or CLAUDE.md, and automatic updates.

Agents

Message your agent from wherever you already are. It runs your task and replies in the same conversation. Fix a bug from Telegram on the train, ask for a status update over SMS, forward an email and get it handled.

Twelve channels. Telegram, Discord, Slack, GitHub, WhatsApp, Email, Signal, Matrix, Mattermost, Microsoft Teams, Google Chat, and SMS. memcode gateway setup walks you through connecting each one.

Voice. Send a voice note instead of typing. Replies can come back as voice too, per channel and off by default.

You decide who gets in. Unknown senders have to pair first: they get a code, you approve it. Allow-lists per channel on top of that.

Coming from Hermes or OpenClaw?memcode hermes migrate or memcode claw migrate brings over your channels, API keys, skills, and long-term memory in one command.

Agents that run on their own

An agent can be given a durable objective and permission to run autonomously — then it works on that objective on a schedule, with nobody watching. It is the same agent either way; autonomy is a setting, not a separate kind. You set it up by talking to memcode admin.

Objective and autonomy are separate grants on purpose: an agent may hold a goal you only ever work on together, and an agent may run unattended on a schedule with no standing objective at all. The second case is why this matters — an unattended run is policy-gated (authority approved in advance, by hash), journals every consequential action, confines file access to explicit grants, and can suspend durably to ask you something rather than guessing. Plain scheduled agents never had any of that.

It can also delegate real work to a scoped worker with browser, MCP, shell and filesystem access, and drive your own signed-in Chrome rather than a logged-out profile. See docs/autonomous-agents.md.

Install

curl -fsSL https://memcode.ai/install.sh | sh

Or with Go:

go install github.com/memcode-ai/memcode@latest

Or build from source:

git clone https://github.com/memcode-ai/memcode
cd memcode && go build -o memcode .

Then run memcode in a repo.

Use any model

MEMCODE_ENDPOINT_URL=http://localhost:11434/v1 memcode # Ollama, local
MEMCODE_ENDPOINT_URL=https://api.openai.com/v1 memcode # your OpenAI key (OPENAI_API_KEY)
MEMCODE_ENDPOINT_URL=https://api.anthropic.com memcode # your Anthropic key (ANTHROPIC_API_KEY)

Your provider API keys are picked up automatically from the standard environment variables.

With a memcode account you get one balance across every vendor, a key vault for BYOK, and hosted web search:

memcode login

Documentation

The user manual lives at memcode.ai/docs:

  • Code: commands, model routing, memory, plan mode, MCP, skills, custom instructions, configuration.
  • Agents: per-channel setup guides for every gateway channel, pairing, and voice.

Internals and reference docs live in this repo:

Architecture

The CLI is the agent: all model selection, escalation, and recovery run client-side; every backend is a plain serving surface speaking one OpenAI-compatible wire. Point memcode at your own API keys, a local endpoint like Ollama, or a hosted memcode.ai account.

License

MIT. See LICENSE.

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

memcode

The coding agent that remembers your repo.

memcode.aiLatest releaseLicense: MIT

Memcode

Most coding agents start every session from zero. memcode keeps a persistent model of your repo in .memcode: the subsystems, what you worked on last week, which approaches failed and why, and the preferences you have corrected it on. The longer you use it, the less you have to explain.

One Go binary, two ways to run it. Code is the interactive agent in your terminal. Agents is the same binary as a self-hosted gateway, answering on the chat surfaces you already use — and running agents you have given a standing objective and permission to work on it unattended. Both run against whatever models you have: your own API keys, a local endpoint like Ollama, or a hosted memcode account.

Screenshots

memcode terminal UI: the matrix splash and the model picker, from Automatic to any specific model

memcode editing code while tracking a live task plan in the terminal

Code

Run memcode in a repo and you get a full terminal coding agent.

It remembers. Ask it to pick up where you left off last week and it can. It knows your repo's layout, what has been tried before, and the preferences you have corrected it on. Memory lives in .memcode, so it travels with the repo and your whole team benefits.

Pick a model or let it decide. Out of the box it uses cheap models for routine work and strong models when the task is hard or risky. Pin any model with /model when you want control.

Reads the room. When you are correcting it, it slows down, asks before acting, and stops cutting corners. When things are calm it stays out of your way.

Plan first when it matters./plan researches your codebase, drafts an approach, and gets a second model's review before you approve it. Execution then sticks to what you approved.

Work in parallel. Hand off side quests to sub-agents and background jobs, keep working, and check on them with /jobs and /tail.

A terminal UI that keeps up. Multiline editing, slash-command autocomplete, streaming output, interrupt and redirect mid-turn, themes, and a live context meter.

Everything you'd expect. MCP servers, Agent Skills, hooks, code navigation and diagnostics, vision and PDF input, instructions from MEMCODE.md, AGENTS.md, or CLAUDE.md, and automatic updates.

Agents

Message your agent from wherever you already are. It runs your task and replies in the same conversation. Fix a bug from Telegram on the train, ask for a status update over SMS, forward an email and get it handled.

Twelve channels. Telegram, Discord, Slack, GitHub, WhatsApp, Email, Signal, Matrix, Mattermost, Microsoft Teams, Google Chat, and SMS. memcode gateway setup walks you through connecting each one.

Voice. Send a voice note instead of typing. Replies can come back as voice too, per channel and off by default.

You decide who gets in. Unknown senders have to pair first: they get a code, you approve it. Allow-lists per channel on top of that.

Coming from Hermes or OpenClaw?memcode hermes migrate or memcode claw migrate brings over your channels, API keys, skills, and long-term memory in one command.

Agents that run on their own

An agent can be given a durable objective and permission to run autonomously — then it works on that objective on a schedule, with nobody watching. It is the same agent either way; autonomy is a setting, not a separate kind. You set it up by talking to memcode admin.

Objective and autonomy are separate grants on purpose: an agent may hold a goal you only ever work on together, and an agent may run unattended on a schedule with no standing objective at all. The second case is why this matters — an unattended run is policy-gated (authority approved in advance, by hash), journals every consequential action, confines file access to explicit grants, and can suspend durably to ask you something rather than guessing. Plain scheduled agents never had any of that.

It can also delegate real work to a scoped worker with browser, MCP, shell and filesystem access, and drive your own signed-in Chrome rather than a logged-out profile. See docs/autonomous-agents.md.

Install

curl -fsSL https://memcode.ai/install.sh | sh

Or with Go:

go install github.com/memcode-ai/memcode@latest

Or build from source:

git clone https://github.com/memcode-ai/memcode
cd memcode && go build -o memcode .

Then run memcode in a repo.

Use any model

MEMCODE_ENDPOINT_URL=http://localhost:11434/v1 memcode # Ollama, local
MEMCODE_ENDPOINT_URL=https://api.openai.com/v1 memcode # your OpenAI key (OPENAI_API_KEY)
MEMCODE_ENDPOINT_URL=https://api.anthropic.com memcode # your Anthropic key (ANTHROPIC_API_KEY)

Your provider API keys are picked up automatically from the standard environment variables.

With a memcode account you get one balance across every vendor, a key vault for BYOK, and hosted web search:

memcode login

Documentation

The user manual lives at memcode.ai/docs:

  • Code: commands, model routing, memory, plan mode, MCP, skills, custom instructions, configuration.
  • Agents: per-channel setup guides for every gateway channel, pairing, and voice.

Internals and reference docs live in this repo:

Architecture

The CLI is the agent: all model selection, escalation, and recovery run client-side; every backend is a plain serving surface speaking one OpenAI-compatible wire. Point memcode at your own API keys, a local endpoint like Ollama, or a hosted memcode.ai account.

License

MIT. See LICENSE.

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

memcode

The coding agent that remembers your repo.

memcode.aiLatest releaseLicense: MIT

Memcode

Most coding agents start every session from zero. memcode keeps a persistent model of your repo in .memcode: the subsystems, what you worked on last week, which approaches failed and why, and the preferences you have corrected it on. The longer you use it, the less you have to explain.

One Go binary, two ways to run it. Code is the interactive agent in your terminal. Agents is the same binary as a self-hosted gateway, answering on the chat surfaces you already use — and running agents you have given a standing objective and permission to work on it unattended. Both run against whatever models you have: your own API keys, a local endpoint like Ollama, or a hosted memcode account.

Screenshots

memcode terminal UI: the matrix splash and the model picker, from Automatic to any specific model

memcode editing code while tracking a live task plan in the terminal

Code

Run memcode in a repo and you get a full terminal coding agent.

It remembers. Ask it to pick up where you left off last week and it can. It knows your repo's layout, what has been tried before, and the preferences you have corrected it on. Memory lives in .memcode, so it travels with the repo and your whole team benefits.

Pick a model or let it decide. Out of the box it uses cheap models for routine work and strong models when the task is hard or risky. Pin any model with /model when you want control.

Reads the room. When you are correcting it, it slows down, asks before acting, and stops cutting corners. When things are calm it stays out of your way.

Plan first when it matters./plan researches your codebase, drafts an approach, and gets a second model's review before you approve it. Execution then sticks to what you approved.

Work in parallel. Hand off side quests to sub-agents and background jobs, keep working, and check on them with /jobs and /tail.

A terminal UI that keeps up. Multiline editing, slash-command autocomplete, streaming output, interrupt and redirect mid-turn, themes, and a live context meter.

Everything you'd expect. MCP servers, Agent Skills, hooks, code navigation and diagnostics, vision and PDF input, instructions from MEMCODE.md, AGENTS.md, or CLAUDE.md, and automatic updates.

Agents

Message your agent from wherever you already are. It runs your task and replies in the same conversation. Fix a bug from Telegram on the train, ask for a status update over SMS, forward an email and get it handled.

Twelve channels. Telegram, Discord, Slack, GitHub, WhatsApp, Email, Signal, Matrix, Mattermost, Microsoft Teams, Google Chat, and SMS. memcode gateway setup walks you through connecting each one.

Voice. Send a voice note instead of typing. Replies can come back as voice too, per channel and off by default.

You decide who gets in. Unknown senders have to pair first: they get a code, you approve it. Allow-lists per channel on top of that.

Coming from Hermes or OpenClaw?memcode hermes migrate or memcode claw migrate brings over your channels, API keys, skills, and long-term memory in one command.

Agents that run on their own

An agent can be given a durable objective and permission to run autonomously — then it works on that objective on a schedule, with nobody watching. It is the same agent either way; autonomy is a setting, not a separate kind. You set it up by talking to memcode admin.

Objective and autonomy are separate grants on purpose: an agent may hold a goal you only ever work on together, and an agent may run unattended on a schedule with no standing objective at all. The second case is why this matters — an unattended run is policy-gated (authority approved in advance, by hash), journals every consequential action, confines file access to explicit grants, and can suspend durably to ask you something rather than guessing. Plain scheduled agents never had any of that.

It can also delegate real work to a scoped worker with browser, MCP, shell and filesystem access, and drive your own signed-in Chrome rather than a logged-out profile. See docs/autonomous-agents.md.

Install

curl -fsSL https://memcode.ai/install.sh | sh

Or with Go:

go install github.com/memcode-ai/memcode@latest

Or build from source:

git clone https://github.com/memcode-ai/memcode
cd memcode && go build -o memcode .

Then run memcode in a repo.

Use any model

MEMCODE_ENDPOINT_URL=http://localhost:11434/v1 memcode # Ollama, local
MEMCODE_ENDPOINT_URL=https://api.openai.com/v1 memcode # your OpenAI key (OPENAI_API_KEY)
MEMCODE_ENDPOINT_URL=https://api.anthropic.com memcode # your Anthropic key (ANTHROPIC_API_KEY)

Your provider API keys are picked up automatically from the standard environment variables.

With a memcode account you get one balance across every vendor, a key vault for BYOK, and hosted web search:

memcode login

Documentation

The user manual lives at memcode.ai/docs:

  • Code: commands, model routing, memory, plan mode, MCP, skills, custom instructions, configuration.
  • Agents: per-channel setup guides for every gateway channel, pairing, and voice.

Internals and reference docs live in this repo:

Architecture

The CLI is the agent: all model selection, escalation, and recovery run client-side; every backend is a plain serving surface speaking one OpenAI-compatible wire. Point memcode at your own API keys, a local endpoint like Ollama, or a hosted memcode.ai account.

License

MIT. See LICENSE.