惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
宝玉的分享
宝玉的分享
月光博客
月光博客
B
Blog
云风的 BLOG
云风的 BLOG
Google DeepMind News
Google DeepMind News
Engineering at Meta
Engineering at Meta
aimingoo的专栏
aimingoo的专栏
N
Netflix TechBlog - Medium
博客园_首页
GbyAI
GbyAI
人人都是产品经理
人人都是产品经理
A
About on SuperTechFans
Y
Y Combinator Blog
L
LangChain Blog
有赞技术团队
有赞技术团队
D
Docker
爱范儿
爱范儿
博客园 - 司徒正美
H
Hackread – Cybersecurity News, Data Breaches, AI and More
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
酷 壳 – CoolShell
酷 壳 – CoolShell
Microsoft Security Blog
Microsoft Security Blog
D
DataBreaches.Net

Hacker News - Newest: "AI"

AI can't read an investor deck AI as an attorney? Student uses ChatGPT, Gemini to sue UW over alleged racial discrimination Hacking MCP Servers in AI Systems – The Rug Pull: Tool Changes After Approval GitHub - MeepCastana/KubeezCut: Free Web based video editor Can AI judge journalism? A Thiel-backed startup says yes, even if it risks chilling whistleblowers Coming soon: 10 Things That Matter in AI Right Now DARPA built an AI to fact-check enemy weapons claims What explains heterogeneity in AI adoption? When AI Meets Muscle: Context-Aware Electrical Stimulation Promises a New Way to Guide Human Movements - Department of Computer Science AI Changed How We Build. It Did Not Change What Matters. Linux rules on using AI-generated code - Copilot is OK, but humans must take 'full responsibility for the… Meta spins up AI version of Mark Zuckerberg to engage with employees Code Mode: Let Your AI Write Programs, Not Just Call Tools | TanStack Blog GitHub - Delavalom/graft: Go framework for building AI agents. Type-safe tools, multi-provider (OpenAI, Anthropic, Gemini, Bedrock), zero vendor SDKs. India's TCS tops estimates, says new AI models did not dent services demand Gen Z's fading AI hype Strong feeling: we are in a folded AI reality GitHub - machinarii/total-recall-catalog: A reference catalog of latest knowledge retrieval, memory & RAG systems GitHub - mensfeld/code-on-incus: Give each AI agent its own isolated machine with root, Docker, and systemd. Active defense detects and stops threats automatically.. Quantization, LoRA, and the 8% Problem: Benchmarking Local LLMs for Production AI Iran war: We spoke to the man making Lego-style AI videos that experts say are powerful propaganda Powell, Bessent discussed Anthropic's Mythos AI cyber threat with major U.S. banks GitHub - immartian/bellamem: Persistent belief-graph memory for AI agents. Retrieves decisive context by importance — not recency, not RAG, not /compact. recursive-mode: The Repo-Native Operating System for AI Engineering After the attack on Sam Altman's home, will AI CEO's go on the offensive? The biggest advance in AI since the LLM Opus 4.6 vs GPT 5.4 One Prompt Unity World Generation Test “AI polls” are fake polls Client Challenge Can AI be a 'child of God'? Inside Anthropic's meeting with Christian leaders
GitHub - Keesan12/martin-loop: Martin Loop — The control ...
martinloop · 2026-04-23 · via Hacker News - Newest: "AI"

MartinLoop

A governed runtime for autonomous AI coding agents.

License: MIT TypeScript Node npm

AI coding agents are useful. Unbounded retry loops are not.

MartinLoop wraps agent runs with budgets, policy checks, verifier gates, rollback evidence, and inspectable run records.

MartinLoop CLI — governed agent run


The Problem

A typical autonomous coding loop keeps attempting work until tests pass. Without a governance layer, that loop can keep spending, mutate files outside the intended scope, lose track of why it failed, and leave teams without a clean audit trail.

MartinLoop calls that failure mode the Ralph Loop: attempt, check, retry, repeat, with no strong answer to:

  • What changed?
  • What did it cost?
  • Why was it allowed?
  • Why did it stop?
  • Can we inspect or resume it later?

What MartinLoop Does Today

Capability Current behavior
Budget governance Enforces maxUsd, softLimitUsd, maxIterations, and maxTokens; rejects attempts projected to exceed remaining budget and exits on budget or iteration exhaustion.
Verifier gate A run only reaches completed when the adapter result and verifier state pass. Unsafe verifier commands are blocked before agent execution.
Failure taxonomy Classifies failures across 11 current classes, including hallucination, test regression, scope creep, repo grounding failure, environment mismatch, and budget pressure.
Safety leash Evaluates verifier commands, file scope, dependency or migration changes that require approval, and secret-like values in task text.
Rollback evidence Captures rollback boundaries and restore outcomes for repo-backed attempts when a persistence store is configured.
Context distillation Carries a distilled summary of recent attempts and remaining constraints into subsequent attempts.
Run records The CLI appends JSONL loop records under ~/.martin/runs/<workspaceId>.jsonl; lower-level stores can also persist contracts, ledgers, and attempt artifacts.

The result is a runtime that can complete good work, refuse unsafe work, stop uneconomical work, and leave evidence behind.

How It Works — Five Layers

Layer What it does
1. Task Contract Objective, verifier plan, repo root, allowed/denied paths, acceptance criteria, workspace, project, and budget.
2. Policy & Budget Defaults from martin.config.yaml; CLI flags override. Budget preflight rejects attempts before execution.
3. Agent Adapters Claude CLI, Codex CLI, direct-provider, and stub adapters normalize execution results into the core runtime contract.
4. Safety & Verification Verifier commands, file scope, approval-boundary changes, secret-like values, and grounding determine whether work is kept.
5. Persistence CLI writes JSONL records under ~/.martin/runs/. Repo-backed runs can also persist contracts, ledgers, diffs, and rollback artifacts.

See It In Action

Same task, same starting state. MartinLoop completes in one verified attempt at $2.30. The uncontrolled loop retries four times, spends $5.20, and fails with no audit trail.

MartinLoop vs Ralph — side-by-side benchmark comparison

Martin vs Ralph — governed vs ungoverned agent loop

Reproducible locally:

pnpm --filter @martin/benchmarks test
pnpm --filter @martin/benchmarks eval
pnpm --filter @martin/benchmarks eval:phase12

Quick Start

npm install -g martin-loop

This installs both the martin-loop package and the martin command alias. The package is currently published on npm as version 0.1.2.

Run a governed task

martin run "fix the auth regression" \
  --budget 3.00 \
  --verify "pnpm test"

You can also pass the objective explicitly:

martin run --objective "fix the auth regression" --budget 3.00 --verify "pnpm test"

For a no-spend repo-local dry run, use the stub adapter:

$env:MARTIN_LIVE='false'
pnpm run:cli -- run --objective "Summarize the current runtime state" --verify "pnpm --filter @martin/core test"
Remove-Item Env:MARTIN_LIVE

Inspect or resume runs

martin inspect --file ~/.martin/runs/<workspaceId>.jsonl
martin resume <loopId>

inspect prints a portfolio summary for records in the file. resume looks up a persisted loop record by ID under ~/.martin/runs/.


CLI

martin run <objective> [options]

  --objective <text>      The task to accomplish, or pass it as the first positional arg
  --budget <n>            Hard cost cap in USD
  --budget-usd <n>        Alias for --budget
  --soft-limit-usd <n>    Soft budget threshold in USD
  --verify <cmd>          Verifier command after each attempt
  --max-iterations <n>    Maximum number of attempts
  --max-tokens <n>        Maximum total token budget
  --engine <name>         Adapter to use: claude (default) or codex
  --model <name>          Override the adapter model
  --cwd <path>            Repo root for the run
  --allow-path <glob>     Restrict agent writes to this path pattern; repeatable
  --deny-path <glob>      Block this path pattern; repeatable
  --accept <criterion>    Add an acceptance criterion; repeatable
  --config <path>         Path to a martin.config.yaml file
  --workspace <id>        Workspace ID for the run record
  --project <id>          Project ID for the run record
  --metadata <key=value>  Attach metadata to the run record; repeatable

The public CLI also includes inspect, resume, and a bench redirect that points reviewers to the workspace benchmark harness.

MartinLoop CLI terminal output


Policy File

Drop a martin.config.yaml in your repo root to set governance defaults:

budget:
  maxUsd: 5.00
  softLimitUsd: 3.75
  maxIterations: 5
  maxTokens: 40000

governance:
  destructiveActionPolicy: approval
  telemetryDestination: local-only
  verifierRules:
    - pnpm test

CLI flags override config values when provided.


TypeScript SDK

npm install martin-loop
import {
  MartinLoop,
  createClaudeCliAdapter,
  createCodexCliAdapter,
  runMartin
} from "martin-loop";

const loop = new MartinLoop({
  adapter: createClaudeCliAdapter({ workingDirectory: process.cwd() }),
  defaults: {
    workspaceId: "my-workspace",
    projectId: "my-project",
    budget: {
      maxUsd: 3.00,
      softLimitUsd: 2.25,
      maxIterations: 3,
      maxTokens: 20_000
    }
  }
});

const result = await loop.run({
  task: {
    title: "Fix auth regression",
    objective: "Fix the failing auth regression tests",
    verificationPlan: ["pnpm test"],
    repoRoot: process.cwd()
  }
});

console.log(result.decision.status);

Use Codex instead of Claude by swapping adapters:

const loop = new MartinLoop({
  adapter: createCodexCliAdapter({ workingDirectory: process.cwd() })
});

The lower-level runMartin function is also exported for callers that want to assemble the runtime input directly.


Workspace Map

Package or app Role
martin-loop Root public npm facade that vendors the runtime, CLI, adapters, and contracts into dist/.
@martin/contracts Shared types for loops, policy, governance, budget, telemetry, and rollback.
@martin/core Runtime controller, policy engine, safety leash, grounding, persistence, and rollback logic.
@martin/adapters Claude CLI, Codex CLI, direct-provider, and stub adapter surfaces.
@martin/cli Local CLI implementation for run, inspect, resume, and the benchmark redirect.
@martin/mcp MCP server tools: martin_run, martin_inspect, and martin_status.
benchmarks/ Workspace-only deterministic benchmark and RC validation harness.
apps/control-plane/ Hosted control-plane workstream, outside the initial npm package surface.
apps/local-dashboard/ Local dashboard/read-model viewer, not currently packaged as public npm API.

The @martin/core, @martin/adapters, and @martin/contracts package manifests are still private workspace packages; the public install target is the root martin-loop facade.


Development

Requirements: Node 20+ and pnpm 10.x.

git clone https://github.com/Keesan12/MartinLoop
cd MartinLoop/martin-loop
pnpm install

pnpm test
pnpm lint
pnpm build

Current RC gate commands:

pnpm oss:validate
pnpm public:smoke
pnpm repo:smoke
pnpm rc:validate
pnpm pilot:prep:validate
pnpm release:matrix:local

The repository is organized as a dual-track workspace: the OSS runtime and package facade are present and published, while the hosted control-plane, local dashboard, and benchmark harness remain repo/workspace surfaces rather than the primary npm package API.

Helpful docs:


Contributing

git checkout -b feat/your-feature
pnpm lint
pnpm test
git commit -m "feat: describe what you built"
git push -u origin feat/your-feature

Conventional commit prefixes: feat:, fix:, chore:, docs:, refactor:, and test:.


Give the repo a star if you think AI coding needs budgets, brakes, and receipts.

MIT Licensed · martinloop.com · keesan@martinloop.com

"AI coding accountability: completes good work, refuses unsafe work, stops uneconomical work."