no_human
From ticket to reviewed pull request: a free, open-source AI coding factory that runs on your machine, with verifiable gates at every step.
- Source repo
- no-human-ai/no_human
- Stars
- ★ 331
- Last updated
- 15d ago
- License
- MIT
- Primary language
- Python
- FA score
- 67/100 · Some gaps
At a glance
- How it runs
- Works with
- Universal · cross-platformClaude Code
- Cost
- Free software; you pay for model usage
- Setup effort
- Medium · a few setup steps
- You'll need
- Typical use
- Engineering teams maintaining several repos who want Jira or Linear tickets turned into review-ready PRs while keeping human merge control (nh approve).
- Not a fit if
- Users who won't build the web frontend themselves for the board
- Teams expecting complex tasks to finish with no human attention
- Source review
- 67/100 · Some gaps
What does this agent do, and when should you use it?
no_human is a locally-run, open-source AI coding system that takes tickets from Jira, Linear, monday.com, or GitHub/GitLab and delivers pull requests that have passed an independent adversarial review. It ships as an nh CLI, a local board (default 127.0.0.1:8420), and a worker, driven by a multi-stage agent loop covering planning, coding, and review. The reviewer is a second model that never saw the coder's transcript and is instructed to refute 'done', returning a pass/fail checklist that cites file and line. Built-in guards include a mechanical tamper check (counting deleted tests, new skips, and tautological assertions) and a reproduction gate requiring evidence tests to fail at the merge base and pass on the new tree. When it cannot finish, it stops honestly with a specific question rather than inventing a plausible diff. An MCP stdio server (nh mcp-serve) lets Claude Code, Cursor, and other clients file work, and the same server ships as a Claude Code plugin.
The loop starts from tickets: it polls Jira Cloud via REST search/jql, Linear via GraphQL, and monday.com via GraphQL v2, or imports GitHub/GitLab issues by URL. Each ticket is scoped with you before work begins; the agent then produces a plan with checkable acceptance criteria from the ticket and what it finds in your repo, writes the change, and runs your tests locally or through your CI (Jenkins/CircleCI supported). Before a PR opens, three gates run: an independent model review producing a pass/fail checklist citing file and line; a mechanical tamper check where deleted tests, new skips, or tautological assertions must be justified against acceptance criteria or the attempt stops; and a reproduction gate where evidence tests must fail at the merge base and pass on the new tree (bound to Python bug fixes out of the box; repro_gate.mode: required binds every change). Run nh start to serve the board and worker on 127.0.0.1:8420; nh task add creates tasks from issue URLs, nh status / nh review / nh diff show progress and evidence, nh approve squash-lands the PR, and nh reject --reason sends it back with feedback. Blocked tasks park in the board's Needs answer lane with one specific question; with write_back enabled, tracker tickets move with the task and get the PR link.
- Engineering teams maintaining several repos who want Jira or Linear tickets turned into review-ready PRs while keeping human merge control (nh approve).
- Developers worried about AI coding tools silently deleting tests or faking passes, who want the tamper guard and reproduction gate enforcing evidence.
- Existing Claude Code or Cursor users who want to hand off tasks to a local no_human via MCP (nh mcp-serve or /plugin install).
- Python teams fixing bugs: the default configuration already requires the fix's tests to fail on the old code and pass on the new.
- PMs and engineers who want ticket status written back to the tracker (write_back) and Slack/Teams notifications when a task needs a human.
- Teams running parallel work: the board supports multiple tasks working concurrently, with a live event stream showing every gate verdict per attempt.
How do you install or deploy this agent?
Quickest (CLI + board): uv tool install no-human (or pipx install no-human), then nh init && nh doctor to set up your token, config, and first repo and verify the install. Desktop app: download from GitHub Releases (macOS) or getnohuman.com (Windows/Linux); each release ships a SHA-256. From source: git clone https://github.com/no-human-ai/no_human.git && cd no_human, then uv sync (installs the nh entry point), (cd web && npm install && npm run build) to build the board (source checkouts ship no web/dist — without it nh start serves only the API), then uv run nh init && uv run nh doctor. Requires Python 3.12+, uv, git, and Node with npm.
How do you use this agent?
Run nh with no arguments for the interactive shell (lanes, live event tail, plain-English task intake). Key commands: nh start (board + worker on 127.0.0.1:8420); nh task add https://github.com/org/repo/issues/42 --repo ~/git/repo; nh status (needs-you / working / waiting / done); nh review <id> for the reviewer's evidence checklist; nh diff <id> for the proposed change; nh approve <id> to squash-land the PR; nh reject <id> --reason "..." to send it back. Tracker filters live in config: integrations.jira.jql, integrations.linear.team_key + state_types + label, integrations.monday.board_id + status_column + todo_labels. MCP mode: nh mcp-serve exposes exactly two tools, task_add and task_status; Claude Code users can run /plugin marketplace add no-human-ai/no_human and /plugin install no-human@no-human-ai.
What are this agent's strengths and limitations?
- The review is adversarial and independent: a different model in a session that never saw the coder's transcript, required to refute 'done' with a pass/fail checklist citing file and line — never a numeric self-score.
- A mechanical tamper gate counts deleted tests, new skips, and tautological assertions before review; unjustified changes stop the attempt.
- The reproduction gate forces evidence tests to fail at the merge base and pass on the new tree, and PRs with no test command read NOT RUN, never blank.
- Runs locally on 127.0.0.1:8420 with no intermediary service; the MCP bridge talks only to localhost with no auth.
- Documented adapters for Jira, Linear, monday.com, GitHub/GitLab, Slack/Teams, and Jenkins/CircleCI.
- The reproduction gate binds only Python bug fixes out of the box; enforcing it on every change requires setting repro_gate.mode: required manually.
- Source installs require building the web frontend yourself (npm run build); skip it and nh start serves only the API with no UI, and cold installs can take minutes.
- Needs a local stack of Python 3.12+, uv, git, and Node/npm, plus a model API token configured during nh init — usage cost depends on the underlying model.
- Tracker write-back is off by default and, once enabled, requires configuring status-matching rules per tracker.
- The docs acknowledge limits: it stops when blocked or out of budget, so complex tasks still require human attention.
How does this agent compare with similar options?
Key facts side by side with the most closely related agents.
| Agent | Source review | Form / cost | Stars | Updated | Language | Full support on |
|---|---|---|---|---|---|---|
| no_human This agent | 67 · Some gaps | CLIFree + model costs | ★ 331 | 15d ago | Python | Claude Code |
| Vibe Kanban | 42 · Major gaps | CLIFree + model costs | ★ 28k | 1mo ago | Rust | Codex · Claude Code |
| Happier | 82 · Good | Desktop appFree + model costs | ★ 2k | today | TypeScript | Codex · Claude Code |
| Synara | 52 · Major gaps | Desktop appFree + model costs | ★ 2.1k | today | TypeScript | Codex · Claude Code |
How does FollowAgents rate this agent?
Why each dimension lost points
Evidence shows deliberate design: CI is contents:read only, MCP binds localhost with no auth and no middle service, write_back defaults off, never_push_to list, human approve required before merge, SECURITY.md defines credential and boundary rules, cla-nudge never executes fork code. Deductions: the unauthenticated local API is justified only by localhost binding — a pointable weakness for same-machine processes; rollback is limited to the reject loop, no post-merge rollback mechanism is evidenced.
Dependency availability is carefully handled: bounded mcp requirement with a regression test, uv.lock, CI installs the wheel with a fresh PyPI resolution and asserts the bridge imports. Deductions: much of this is asserted in comments and README; the sample omits the product's core source and tests, so runtime failure paths beyond doctor/NOT RUN/TAMPER cannot be statically confirmed.
Audience is clear (developers with a Claude subscription, Python repos), platforms macOS/Windows/Linux, prerequisites (Python 3.12+, uv, Node) explicit with nh doctor self-check, intake filters live in config rather than task text. Deductions: capability limits mostly live in referenced but unsupplied files (verification.md, security.md); scoping like 'repro gate applies to Python bug fixes by default' is README assertion only.
Install notes are exhaustive (three paths, source-build pitfalls, wheel content guarantees), LICENSE complete with PEP 639 SPDX in pyproject, stable naming (no-human/nh dual entry points), trademark policy, SECURITY.md states single-maintainer response targets, CHANGELOG linked. Deductions: CHANGELOG.md, docs/, KNOWN_ISSUES.md are referenced but absent from the sample; pre-1.0 with main-only support; continuity rests on one maintainer.
Output usability is designed-in (pass/fail checklist with file and line, explicit NOT RUN, event-stream log, nh diff/review/approve chain); marginal value is a differentiated ticket-to-PR loop with independent review, tamper guard and repro gate; CI cost comments show cost awareness. Deductions: all claims are declarations and screenshots with no execution evidence the gates actually work; end-product quality depends on Claude credential spend, not quantified.
Claim traceability is strong: comments cite specific issues (#15/#19/#120), dates, quantified re-measurements (300/300 serial runs, byte-scans, +486 KB), README separates facts (event-stream records) from design intent, and the Japanese README defers to English. Cross-source corroboration: README wheel/board claims match CI's artifact assertions. Deductions: the load-bearing claims (tamper guard, reviewer independence, repro gate) ship no product source or tests in this sample, so static review can only take them on the project's own word.
- Static review is based on a partial file set: core agent source, docs/, CHANGELOG and product tests were not supplied; all safety and quality claims are unverified by execution, confidence is low.
- The local API (127.0.0.1:8420) has no authentication, relying only on localhost binding; any same-machine process or malicious local code can call tools like task_add — exercise caution on multi-user machines.
- The tool requires Claude OAuth credentials / an API key stored in ~/.no_human/.env; audit its credential read/write paths before use in high-value environments.
- Pre-1.0, supports only latest main, single-maintainer project with no SLA and no bug bounty; publisher identity is unverified.
- The repro gate applies to Python bug fixes by default; other languages or change types need repro_gate.mode: required for equivalent guarantees.
Recent releases
Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.
-
v0.2.4 no_human 0.2.4
Release notes excerpt
no_human 0.2.4 — macOS, Linux and Windows. The desktop app can approve and merge pull requests again, onboarding now sends you a welcome, and Windows gets a run of fixes. Fixed Approve & merge works in the shipped app. In 0.2.1–0.2.3 the packaged app could open pull requests but not land them — the merge gate shelled out through the frozen binary as if it were a Python interpreter, so every nh approve and every board Approve failed at the test step. The gate now resolves a real interpreter and decodes command output as UTF‑8, end to end, on your machine and in the frozen build. …View on GitHub ↗ -
v0.2.3 no_human 0.2.3
Release notes excerpt
no_human 0.2.3 — macOS, Linux and Windows. Fixed The gate could be talked past with a capital letter. A capitalised binary, noun or verb inside a wrapped git or forge command escaped the merge guard, so spellings like NH APPROVE 7, nh MERGE-STACK run and GH pr merge 7 reached ALLOW while their lowercase twins were denied. This mattered most on Windows: on NTFS nh.exe and NH.EXE are the same file (measured by inode on the shipped binary), so the capitalised spelling resolved to a real executable rather than failing. 8 of 10 spellings were open before this fix. …View on GitHub ↗ -
metrics-2026-09 65 days of no_human building itself. What the gate caught.
Release notes excerpt
no_human develops no_human: every change starts as a ticket on our own board, an agent plans and writes it, and before the pull request reaches a human it passes a mechanical tamper guard, an independent review by a second model that never saw the coder's session, and, for bug fixes, a proof that the offered tests fail on the old code and pass on the new. Merging is a human click. These are the gate's numbers from that loop, 2026-07-10 to 2026-09-13, recounted from the task ledger on 2026-09-13. Scope: tickets on no_human's own checkouts only. What the gate caught …View on GitHub ↗