๐Ÿง murGitHub stars

A local-first fleet of specialized AI agents

Agents that run as long-lived local processes on the Mac you already own โ€” each with its own model, skills and permissions. What they learn is stored as plain YAML, matures over time, and reaches 16+ AI tools. Not static rules. Not someone else's datacenter.

$brew tap mur-run/tap && brew install mur

Also available via cargo install ยท macOS, Linux, Windows

MUR Demo

The Problem MUR Solves

๐Ÿ˜ซ

Without MUR

Day 1:

"Use Swift Testing instead of XCTest"

Day 3:

"Use Swift Testing instead of XCTest"

Day 7:

"Use Swift Testing instead of XCTest"

๐Ÿ”„ Endless repetition. AI never learns.

๐ŸŽ‰

With MUR

Day 1:

"Use Swift Testing instead of XCTest"

โœ“ Skill saved automatically

Day 3:

"Write tests for this function"

โ†’ AI already uses Swift Testing

Day 7:

"Add more test coverage"

โ†’ AI knows all your conventions

โœจ Zero repetition. Continuous learning.

Works with 16+ AI tools

One knowledge base, every AI assistant

๐ŸŸ Claude Code
๐Ÿ’ŽGemini CLI
๐Ÿ”ฎAuggie
โฌ›Cursor
๐Ÿ™Copilot CLI
๐ŸฆžOpenClaw
๐Ÿ”“OpenCode
โšกAmp
๐ŸŸขCodex
๐Ÿค–Aider
๐ŸŒŠWindsurf
โšกZed
๐Ÿง Junie
๐Ÿ”ทTrae
๐Ÿ“ŸCline / Roo
๐Ÿ“ฆAmazon Q

How it works

1

Install & Setup

One command to install. mur init sets up your config. mur sync connects to your AI tools.

2

Use AI Normally

Work with Claude, Cursor, or any supported tool. MUR watches and learns in the background.

3

AI Gets Smarter

Your skills are injected automatically. Your AI remembers your preferences forever.

What makes MUR different

Rules sync tools write static config files. Memory frameworks store generic data. MUR is the only closed-loop system that learns, evolves, and syncs.

๐Ÿ‘๏ธ Work That Outlives The Turn

A CI run, a fleet run, a subprocess โ€” MUR keeps checking until the source gives a real answer, across daemon restarts, and says something once when it matters. Being unable to read a source is reported as unknown, never as a failure: when MUR says your build failed, it failed. It can act on what it finds, and anything reaching outside MUR stops and asks first โ€” approvals wait as long as you need rather than timing out into acting alone. When the rules run out it can ask a model what to do, off by default and narrow when on: the model picks from three verbs or its answer is discarded, and it never decides what counts as risky.

๐Ÿงญ Code Navigation, One Repo Per Entry

mur code-nav setup gives an agent structural search with ast-grep and, on request, serena's definition, reference and hover lookup. Every binary lives under MUR's own tools directory and the sandbox is granted exec only there. Each repository gets its own serena entry with its own home, so two repos never race on one registry. MUR refuses an entry name that would share a tool prefix with another server, before it writes anything, so a call can't silently land on the wrong repository.

๐Ÿง A Second Agent That Reviews The First

mur fleet review --main coder --reviewer critic "task" runs them round after round until the reviewer approves, blocks, or a limit trips. A finding rejected twice waits for your ruling: /rule drop closes it, /rule fix makes it binding on both agents. Finding IDs come from MUR, not the model, and you see every message before it is sent. A crash leaves the session paused; mur fleet review-resume picks it up after the last finished round, and the channel stays as the audit record.

๐Ÿ”Ž Research You Do Not Have To Sit Through

mur deep-research "question" puts a squad of workers on it under a budget you set, and saves a report. Reaching the web needs consent you gave once, in the setup wizard โ€” asking a question never grants it. From a chat it is /deep-research, rendered on your screen without spending the agent a turn; from an agent it returns a handle in under a second, so a twenty-minute run never sits inside a call waiting to time out.

โณ A Slow Model Is Not A Hung One

Nothing cuts a reply off by elapsed time. A local model that spends a minute loading weights before its first token finishes its answer. What is bounded is silence, not work โ€” and a stream that stops sending keeps whatever arrived and marks it [output truncated] instead of failing the turn, because a truncated reply that looks complete is worse than an error.

๐ŸŽš๏ธ One Reasoning Dial, Every Vendor

Every provider spells โ€œthink harderโ€ differently. One takes a level name, one a token budget, one only an on/off switch, and one rejects the parameter outright. MUR keeps a single scale and a table of what each model really accepts, so low through max means the same thing everywhere. Ask for a level a model has no step for and it degrades to the nearest one it has โ€” and says so, rather than letting you believe a setting that never applied. Thinking hard needs room, so each registry entry can set its own output ceiling with max_tokensโ€” a truncated answer says so instead of stopping silently.

๐ŸŽฏ A Router That Knows Its Limits

MUR can run background work on a cheaper model. It will never hand that work to a model that can't do it. Price orders the candidates; it doesn't decide who is eligible โ€” a request carrying an image only goes to something that declares it can see. The two silences are read differently, because the failures are: a blind model answers confidently and wrongly, while a tool-incapable one is refused out loud and the chain just moves on. Your own picks are never second-guessed, cost-saving routing is off until you ask for it (mur model smart on), and per agent it is genuinely three-state โ€” follow, on, off. And you can audit every call it made: mur agent routing lists each decision and marks the ones MUR chose for you.

โธ๏ธ Approvals Wait For You

An unattended run that hits a step needing your say-so doesn't spend five minutes finding out you're asleep and then fail. The request parks, the step is blocked rather than broken, and everything that doesn't depend on it still finishes. Approve in the morning โ€” the next run continues from there, because approvals match the action's content hash, not a throwaway id. Change the action and the old approval stops covering it. Your explicit โ€œnoโ€ outranks any standing policy, and every auto-approval is written to the signed channel. When you are watching, the same pinning stops the nagging: the tool calls in one model response arrive as a single card instead of a prompt each, and an answer you already gave is not asked twice. There is no approve-all โ€” the batch groups the question, never the answers. And if the kernel sandbox failed to seal, nothing is asked at all: an unsealed agent could forge its own approval, so tools that need one are refused on that boot โ€” even ones you approved before. Session auto-approve has a ceiling too: it answers reads and writes, never spend, destructive, privileged or network-egress calls โ€” and a browser tool that clicks, types or navigates in your logged-in session counts as egress, so it still asks. The Hub'sDon't ask again this session uses that same ceiling and remembers the answer only for the conversation you're in.

๐Ÿ“‚ Delegation Checks The Grant First

Hand work to a fleet and each member is told exactly which directory to work in โ€” the repo root of the target โ€” and checked for write access there before anything is sent. A missing grant is one approval that adds it, reseals the sandbox, and restarts the member, not an agent that finds out halfway through by building in the wrong tree. Ten jobs to one member ask once. A guessed directory is always confirmed, and nothing is dispatched until every member passes. Same check for mur fleet run, parallel_jobs, and a workflow's delegate_to steps.

๐Ÿ”‘ An Expired Token Doesn't End Your Session

OAuth tokens age out every few hours. Your turn used to die on a bare 401 that named neither the credential nor where it lived./loginfixes it in place, and stops at the cheapest step that works โ€” usually just asking the CLI that owns the credential to refresh it, with no browser and no interruption. MUR never holds your token: it reads the owner CLI's own status and the credential store's timestamp, never its contents.

๐Ÿคซ A Credential the Model Never Sees

Your agent needs a deploy token, so you paste it into the chat โ€” and it lands in the model's context, in the agent's signed append-only log, and at your provider. Secret redaction catches the shapes it knows and misses a bare hex token entirely. /secret reads it through a hidden prompt instead: the value goes to your OS keychain and into the agent's shell as $KEY, while the model is told the name and nothing more โ€” and every tool result comes back with the value stripped out.

๐Ÿ’“ A Run Status That Can't Lie

Most tools answer โ€œis it running?โ€ from whatever the run last wrote down โ€” so a crashed job reports healthy until a timeout expires. MUR asks both questions: what the run last recorded, and whether the process behind it is still there. A dead orchestrator says DEAD the moment you ask, a long run is never falsely failed, and a record rebuilt after a crash admits what it cannot know instead of printing a stale pid as fact. Failed steps carry their reason, so a red run tells you what broke instead of sending you to the logs โ€” and a step that failed with nothing to say says that too.

๐Ÿ‘๏ธ Your Agent Can Actually See

Point an agent at a screenshot, a photo, a rendered chart โ€” read_file returns it as real vision input, and MCP servers that return images reach the model the same way. Ask any other agent runtime to read a JPEG and it decodes the bytes as text; the model, unable to say it never saw a picture, describes one anyway.

โฐ An Agent Asks For Time, It Doesnโ€™t Take It

An agent can want a schedule and cannot create one. It writes a proposal โ€” your words next to the cron, so you review the request rather than the expression โ€” and nothing fires until you grant it with mur agent schedule accept. One-off reminders stop when they are done: cron has no year field, so โ€œtomorrow at 10โ€ would otherwise repeat every year forever.

๐Ÿท๏ธ Provider Churn Is One Line

Anthropic, OpenAI and Google rename and retire model ids constantly. Your agents never name a model โ€” they name a registry key, so a rename is one edit and every agent pointing at that key follows. No per-agent migration.mur model doctoraudits it offline and reports what drifted โ€” and never rewrites an id for you, because which model you run is a cost decision, not a detail to silently upgrade.

๐Ÿ”‘ One Key, Many Models

mur model connect anthropictakes your API key once, puts it in the Keychain, and lists that provider's models for you to pick โ€” pricing and context windows filled in. Local runtimes (Ollama, MLX, LM Studio) are found by probing, no key at all. Setting up a second machine is copying one file and runningmur model import: it carries secret references, never keys, and tells you exactly which ones still need re-keying there.

๐Ÿ“ Agents That Remember & Say So

State a preference once โ€” the agent saves it, announces it in one line, and applies it next turn. Proven knowledge federates to the whole fleet over Ed25519-signed snapshots, gated on maturity. Undo is one/forget away.

โฑ๏ธ Bounded, Not Budgeted

Three knobs bound every run โ€” deadline, stuck, cost_usd โ€” one schema at every scope, inner replacing outer, nothing multiplied. A turn you are watching never stops on its own; unattended work stops on its deadline or after ten minutes with no real progress, and a delegated member inherits the fleet's remaining clock. Local models cost nothing, so nothing pretends to cap their spend. mur limits <name> shows every bound in force and which scope set it; every stop reaches the settlement with its remedy. Long work returns a handle โ€” dispatch a fleet, keep working, poll mur_job_status โ€” and a member missing a tool the fleet declared it needs fails at dispatch, not after its budget. A run whose process died without a result reads abandoned on every surface once its grace window passes, instead of claiming to be running forever.

๐Ÿ” Loops That Know When To Stop

A squad you feed with jobs ends when the queue drains โ€” checked before any model call, so a scheduled fleet that wakes to nothing costs nothing. Every other loop setting is checked too: a calendar date is not a deadline, zero iterations is not zero, and a cron expression that can never fire is not a schedule. mur fleet set-loopโ€” and you watch every run live: a per-member rail plus milestone lines streamed from the fleet's signed channel, right in the chat TUI. Know the plan already? A procedure: in fleet.yaml runs your exact step graph with no router in the loop โ€” and a typo in it fails the run instead of quietly broadcasting to everyone.

๐Ÿ”จ Agents That Can Check Their Own Work

An agent allowed to run cargo still couldn't compile: building means running binaries that don't exist yet, at paths no allowlist could name. Grant the build directory instead โ€”mur agent perm allow-spawn-dir โ€” and it compiles, tests, and reports what actually passed. Narrow by construction: a home directory or a bare mount point is refused, and filesystem and network limits still bound whatever runs.

๐Ÿ“„ Reads The AGENTS.md You Already Wrote

An agent picks up the project's ownAGENTS.md,AGENT.md orCLAUDE.md โ€” root first, so the deeper file is the more specific rule. It arrives as project context, not as operator rules, and it can't widen permissions: a file the agent couldn't read itself is left out. At most 32 KiB, and anything cut is named.

๐Ÿงญ Capability Routing

Your front-door agent holds no build keys โ€” and doesn't hand the job back to you. A sandbox-blocked command names the agents that can actually run it, ranked least-privileged first, derived from what the kernel enforces rather than a list anyone maintains. mur agent who

๐Ÿงพ Settlement

An agent that edits nine files and runs nothing will still tell you it's done. So the runtime closes each turn with its own accounting โ€” what was verified, what merely changed, what was blocked โ€” drawn from the tool record, not the model's summary. The verified row prints even when it's empty: nothing ran โ€” no evidence this works

โ†ฉ๏ธ Turn Undo

Each writing turn runs in a throwaway git worktree, and the original bytes are saved before its changes land. Put the project back with one command. It lists any file changed since and asks before overwriting it. And a turn that ran no tools but reports a commit, a PR, or a test tally gets an unverified row on its settlement card. mur agent turn undo <agent> <turn>

๐Ÿง  Agent Memory

Agents remember your preferences mid-chat โ€” as local, decaying notes with /forget as the undo. Private per agent until you approve sharing; every proposal Ed25519-signed and verified. Rules that must never lose a ranking go in as permanent instructions (/instruct, /pin): sent every turn, never truncated, inside a fixed 3,500-token budget that refuses an overflow instead of dropping something silently.

๐Ÿ”„ Closed-Loop Learning

Session recording โ†’ skill extraction โ†’ injection โ†’ feedback โ†’ evolution. The full loop, automated.

๐Ÿงฌ Knowledge With A Lifecycle

Skills mature Draft โ†’ Emerging โ†’ Stable โ†’ Canonical on real usage, and decay when they stop earning their place. A skill can even self-evolve from its own telemetry. What works gets stronger; stale knowledge fades instead of piling up.

๐Ÿ” Hybrid Semantic Search

Vector similarity (70%) + BM25 keywords (30%) + multi-factor scoring. More precise than pure vector search. In a chat, /search queries the project index without leaving the conversation โ€” a short preview per hit, then --lines N or --expand for a hit's full chunk.

๐Ÿ“ YAML + Git Friendly

Human-readable skills you can version control. No opaque database lock-in. Rebuild the index anytime with mur reindex.

๐Ÿ”’ 100% Local First

All data stays on your machine. Zero telemetry. Injection scanning + content hashing for security. Cloud sync is optional.

โš™๏ธ Workflow Engine

Multi-step workflows with variables and permissions โ€” extracted from sessions or defined manually.

๐Ÿ‘ฅ Team sharing

Share knowledge across your team, and hand a whole agent to someone as a signed file.

๐Ÿ”€ Model Gateway

One local endpoint for Anthropic, OpenAI & Gemini โ€” agents reuse the subscriptions you already pay for, credentials stay in your OS keychain.

๐Ÿ’ณ ChatGPT Subscription, No API Key

Sign in through Codex, pick the models on your plan, and agents run on your ChatGPT subscription โ€” never a metered key. Entries are provider: codex with no secret; the runtime only talks to the loopback gateway, and MUR never adds a usage-billed fallback behind a subscription model on its own.

๐Ÿ’ณ Claude Subscription, No API Key

Sign in through Claude Code and agents run on your Claude Pro/Max plan. Entries are provider: claude with no secret; the runtime only talks to the loopback gateway, and pointing one at api.anthropic.com is refused at startup rather than quietly billed.

โšก One Command Setup

mur init configures everything. Works invisibly in the background after that.

๐Ÿ–ฅ๏ธ MUR Hub 2.0

One masterโ€“detail shell for every page โ€” agents, fleets, chats, the four library pages, settings โ€” with a โŒ˜K palette, โŒ˜โ†ฉ to open any agent or fleet in its own window, a side-peek from Home, multi-select bulk Start / Stop, and a Permissions section that shows every sandbox entitlement and edits it in place. The Hub app stays fully local: your fleet, your Mac.

๐Ÿงฉ Model Library

Connect any provider โ€” cloud (Anthropic, OpenAI, OpenRouterโ€ฆ) or local (Ollama, MLX, LM Studio). Models are auto-discovered, pricing auto-fills from models.dev, and keys stay in your Keychain.

๐ŸŽš๏ธ Per-Stage Model Routing

Pin any conversation stage to its own model โ€” a cheap one for extraction, a strong one for answers, a local runtime for anything that should never leave the machine. Unpinned stages follow your default. mur chat doctor shows the exact endpoint each stage will dial and probes it, so you can verify routing before any data exists.

๐Ÿงฐ Agents & Capabilities

Real local agent processes โ€” and mur capability install wires a whole bundle (MCP server + skills + program requirements) onto one in a single command. The media capability adds VLC control and local-model video analysis.

๐Ÿ” Governed & Never-Shadow

Capabilities and imported plugins install with pinned provenance โ€” an add-on skill can never silently override a built-in. mur skill doctor flags drift and de-pins stale copies; a per-OS kernel sandbox and a protected launch chain โ€” the runtime binary, other agents' directories, the autostart entries โ€” keep every action governed, with an append-only audit ledger and mur agent runtime-doctor reporting what the chain blocks.

๐ŸŽ“ Dev-Discipline Skills

Seventeen built-in engineering-discipline skills โ€” design-before-code, test-first, root-cause debugging, evidence-before-done โ€” internalized from superpowers & mattpocock. One hub routes; sixteen leaves load on demand via mur skill show, so they cost nothing until used and never shadow a skill you wrote.

Simple Pricing

Free forever for individuals. Paid plans for teams.

Most Popular

Free

$0/forever

๐ŸŽ‰ Includes 90-day Pro trial

Full Pro features free for 90 days

  • โœ“ Unlimited skills
  • โœ“ All 10+ tool integrations
  • โœ“ LLM-powered extraction
  • โœ“ Semantic search
  • โœ“ Local dashboard

Pro

$9/month
  • โœ“ Everything in Free
  • โœ“ Cloud sync
  • โœ“ Up to 3 devices
  • โœ“ Priority support
  • โœ“ Early access features

or $90/year (save 17%)

Team

$49/month
  • โœ“ Everything in Pro
  • โœ“ 5 team members
  • โœ“ Shared team knowledge
  • โœ“ Team analytics
  • โœ“ +$10/extra member

or $468/year (save 20%)

๐ŸŽ

Invite friends, get rewarded

Share your referral link and both of you benefit.

1๏ธโƒฃ

Get your referral link via mur referral or app.mur.run

2๏ธโƒฃ

Share the link with a friend

3๏ธโƒฃ

Friend signs up via GitHub, GitLab, Bitbucket, or Gitee

4๏ธโƒฃ

After 7+ days active, both of you get rewarded

Free & Trial users

Get +30 days of Pro trial per qualified referral. Up to 3 referrals (= +90 days).

Pro & Team users

Get +1 device slot per qualified referral. Up to 3 bonus slots.

โš ๏ธ A referral is "qualified" when your friend has been active for 7+ days.

Your agents belong on your own machine

Install MUR in 30 seconds. Skills mature. Knowledge compounds. Your AI gets smarter every session.