~ / rigs / merkur-sh / merkur

merkur-sh/merkur

A terminal for your remote machines that runs in the browser. Local echo gated by the shell, loss-tolerant QUIC display, post-quantum end-to-end keys, WebGPU rendering, nothing to install.

↗ GitHub ★ 0 AGPL-3.0 updated today project Claude CodeCodex
share on X
ARCHETYPE
Automator
Hooks on every lifecycle event: format, lint, notify, log.
CONTEXT TAX · EVERY TURN
~4.1k tokens
Moderate · median rig: 2.3k · breakdown
GUARDRAILS
3/5
Protects secrets · Pre-tool screening hook · No YOLO mode · details

Copy this rig

# review before running: this installs third-party code
$ npx degit merkur-sh/merkur/.claude ./rig-merkur  # inspect, then merge into .claude/

MCP servers are added to Claude Code at local scope; env vars are shown as YOUR_… placeholders — we never store values. Files are fetched with degit into a separate folder so you can review before merging.

$ npx degit merkur-sh/merkur/.claude/skills/close-the-loop .claude/skills/close-the-loop
$ npx degit merkur-sh/merkur/.claude/skills/release .claude/skills/release
$ npx degit merkur-sh/merkur/.claude/skills/verify .claude/skills/verify

Merge into .claude/settings.json (project) or ~/.claude/settings.json (user). Hook commands reference scripts in the source repo — copy those too.

{
  "permissions": {
    "deny": [
      "Read(./target/**)",
      "Read(./**/target/**)",
      "Read(./dist/**)",
      "Read(./**/dist/**)",
      "Read(./playwright-report/**)",
      "Read(./**/*.tar.gz)",
      "Read(./merkur-release.*)",
      "Read(./.claude/worktrees/**)",
      "Read(./.codegraph/**)",
      "Read(./data/**)",
      "Read(./.e2e-home*/**)",
      "Read(./.cloud-tester/**)",
      "Read(./**/.env)",
      "Read(./**/.env.local)"
    ]
  },
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash|Grep|Edit|Write|MultiEdit",
        "hooks": [
          {
            "type": "command",
            "command": "bun ${CLAUDE_PROJECT_DIR}/scripts/agent-hooks/pre-tool-use.ts"
          }
        ]
      }
    ]
  }
}

Skills (3)

Hooks (4)

eventmatcherruns
PreToolUseBash|Grep|Edit|Write|MultiEditbun ${CLAUDE_PROJECT_DIR}/scripts/agent-hooks/pre-tool-use.ts
PostToolUseEdit|Write|MultiEdit|ExitPlanModebun ${CLAUDE_PROJECT_DIR}/scripts/agent-hooks/post-tool-use.ts
SessionStart*bun ${CLAUDE_PROJECT_DIR}/scripts/agent-hooks/session-start.ts
Stop*bun ${CLAUDE_PROJECT_DIR}/scripts/agent-hooks/stop.ts

Plugins (2)

typescript-lsp@claude-plugins-officialrust-analyzer-lsp@claude-plugins-official

Permissions

deny (14)
Read(./target/**)
Read(./**/target/**)
Read(./dist/**)
Read(./**/dist/**)
Read(./playwright-report/**)
Read(./**/*.tar.gz)
Read(./merkur-release.*)
Read(./.claude/worktrees/**)
Read(./.codegraph/**)
Read(./data/**)
Read(./.e2e-home*/**)
Read(./.cloud-tester/**)
Read(./**/.env)
Read(./**/.env.local)
ask (0)
—
allow (26)
Bash(bun test:*)
Bash(bun run check:*)
Bash(bun run gates:*)
Bash(bun run rust:lint)
Bash(bun run sync:wasm)
Bash(bun run build:wasm)
Bash(bun run build:e2e-wasm)
Bash(bun run generate:docs)
Bash(bun run verify)
Bash(bun run test:unit)
Bash(bun install)
Bash(bunx biome check:*)
Bash(bunx biome format:*)
Bash(cargo test:*)
Bash(cargo clippy:*)
Bash(rustfmt:*)
Bash(git add:*)
Bash(git commit:*)
Bash(git status:*)
Bash(git diff:*)
Bash(git log:*)
Bash(git switch:*)
Bash(git rev-parse:*)
Bash(git worktree list:*)
Bash(codegraph:*)
mcp__codegraph__*

Similar rigs

copied ✓