no_human
This server exposes a local AI coding agent that can take a task from description to a reviewed pull request, and lets you monitor its progress.
Create tasks – File a new coding task with a title, description, and repository path; the agent plans, implements, tests, and reviews the change (opening a PR on approval).
Track status – Look up a task's full state using its ID or external ID, including status, attempt count, and the PR link once available.
Integrate with existing tools – Work with tickets from Jira, Linear, Monday.com, GitHub/GitLab issues, and notify via Slack/Teams.
Enforce quality gates – Requires a plan before coding, runs your tests locally or via CI, performs an adversarial review with a different model, and blocks tampering or weak evidence.
Automate from MCP clients – Let Claude Code or any MCP client file and check on work without leaving your current environment.
Runs test layers through CircleCI to verify changes, with optional CI gating to enforce test success before proceeding.
Imports GitHub issues as tasks by URL, and opens pull requests automatically for completed changes, with the ability to approve and land them via the no_human workflow.
Imports GitLab issues as tasks by URL and opens merge requests for completed changes, similar to GitHub support.
Runs test layers through Jenkins as part of the no_human loop, enabling CI gating to verify changes before a pull request is opened.
Integrates with Jira Cloud to pull tickets onto the no_human board via a configurable JQL filter, sync task progress back to the ticket, and comment on tickets when human input is needed.
Integrates with Linear to import issues as tasks via the GraphQL API based on team key, state types, and label filters, with optional write-back to update issue status and add pull request links.
Sends messages to Slack when a task requires human attention or feedback, keeping team members informed of blockers.
no_human
From ticket to reviewed pull request.Free and open-source, on your machine.
getnohuman.com · Quickstart · Docs · Watch it work a sprint
▶ Watch the loop — a ticket in, a reviewed pull request out; the whole loop in 57 seconds.
The AI coding factory you can trust:
A plan before any code, from the ticket plus what it finds in your repo. When planning fails, the coder is told it is working without one; when the change is judged trivial the plan is skipped without telling the coder, by design — the skip is still stated in the run's event stream.
An adversarial review. A different model, in a session that never saw the coder's transcript, told to refute "done". You get a pass/fail checklist citing file and line — never a numeric self-score.
A tamper guard. Deleted tests, new skips, an assertion turned into a tautology — counted mechanically before the review gate runs, then justified against your acceptance criteria or the attempt stops.
Proof the fix fixed the bug. The tests offered as evidence must fail at the merge base and pass on the new tree — the reproduction gate runs both. Out of the box that binds a Python bug fix;
repro_gate.mode: requiredbinds every kind and every change.Your tests run, locally and optionally through your CI — and a PR that found no test command says NOT RUN on its face.
An honest stop. When it cannot finish it stops and says why — a specific question when your answer would unblock it, a structured record when it has simply run out of budget — never an invented plausible diff.
Install
One line (CLI + board)
uv tool install no-human # or: pipx install no-human — the wheel ships the board
nh init && nh doctor # token, config, first repo; then prove the install is realDesktop app
Each release ships a SHA-256 alongside the artifact. Platform notes and the first-run walk-through: docs/quickstart.md.
From source
git clone https://github.com/no-human-ai/no_human.git && cd no_human
uv sync # installs the `nh` entry point into .venv
(cd web && npm install && npm run build) # builds the board (cold first install can take minutes)
uv run nh init # token, config, first repo (about 2 minutes)
uv run nh doctor # verify the install is real before relying on itThe web build is not optional if you want the board: a source checkout ships
no web/dist, so without it nh start serves the API only and renders no UI.
Needs Python 3.12+, uv, git, and Node with
npm for the board build.
Related MCP server: github-mcp
Product highlights
Stills: the real board on a demo workload.
Run one task
Run nh with no arguments for the shell: your lanes, a live event tail, and an
intake you describe a task to in plain English. Every command below still works.
nh # the shell
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> # the reviewer's evidence checklist
nh diff <id> # the diff it wants to ship
nh approve <id> # your approval squash-lands the PR (git.approve_identity)
nh reject <id> --reason "..." # send it back with feedbackIntegrations
Point no_human at the tracker you already use and it pulls the tickets to your board — a tracker's filter lives in your config, never in a task's own text, and a transport error logs and retries on the next tick instead of crashing the pool.
Tracker | How tickets arrive | Filter you configure |
Jira Cloud | Polled via REST |
|
Linear | Polled via the GraphQL API |
|
monday.com | Polled via GraphQL v2 |
|
With write-back on (write_back, off by default), the ticket moves with the
task — matched by status category, type, or the label you name, never a
hard-coded transition id — and gets the PR link; a task that needs a human is commented on, never
transitioned. GitHub and
GitLab issues import as tasks by URL, and PRs or MRs open on your own host;
Slack and Teams get a message when a task needs you; Jenkins and CircleCI can
run your test layers and gate the loop. Setup for each:
docs/adapters.md.
Watch the Jira flow end to end — tickets synced from a Jira board, scoped, implemented, and delivered as a review-passed pull request (click for the full video with every step):

MCP server — hand it work from the agent you are already in
no_human ships an MCP (Model Context Protocol) server: a stdio bridge, built on the official Python MCP SDK, that lets Claude Code, Cursor or any MCP client file work with your local no_human and check on it.
nh mcp-serve # the MCP server, over stdioTwo tools, and no more:
Tool | What it does |
| Files a task. no_human then plans it, writes the change, runs your tests, has a second model review it, and opens the pull request. |
| Returns that task's current state — status, attempts, the PR link once there is one. |
It talks to your own no_human at http://127.0.0.1:8420 and nothing else: no
auth, because that address is localhost, and no service of ours in between. For
Claude Code, the same server ships as a plugin — this repository is its own
plugin marketplace, so the two tools appear in your session after:
/plugin marketplace add no-human-ai/no_human
/plugin install no-human@no-human-aiAny other MCP client takes the usual stdio entry:
// .mcp.json
{ "mcpServers": { "no_human": { "command": "nh", "args": ["mcp-serve"] } } }Docs
Zero to first task, per platform | |
Every setting and default | |
The gates, the bounded loop, the limits | |
Auth boundary, the never-merge rule, guards | |
Escalation, wake watcher, | |
Intake, context, VCS and CI backends | |
Golden set, replay scoring, shadow mode | |
What changed, per release |
Development
uv sync
uv run pytest -q
uv run nh --helpIssues and pull requests welcome; run uv run pytest -q before submitting.
If no_human saved you a review cycle, a star helps other people find it:
License
MIT — see LICENSE. The licence covers the code, not the name: TRADEMARK.md is the policy on using "no_human" and the logo. Packaging a binary carries obligations the source tree does not, listed in THIRD-PARTY-NOTICES.md.
Available Tools
2 toolstask_addA
Create a no_human task via POST /api/tasks (source="mcp"). Returns compact JSON {"task_id": str, "source": str} — source is whatever the server actually stored (the "mcp" source is first-class, see module docstring).
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| repo_path | Yes | ||
| description | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It does so by specifying the return format (compact JSON) and noting that the source is whatever the server actually stored, which informs the agent of potential variability. It also mentions the source is first-class, referencing module docstring, which adds context. However, it does not discuss side effects, error states, or idempotency, but given it's a creation endpoint, the info is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, two sentences, and front-loaded with the core purpose. Every sentence adds value: the first states the action and endpoint, the second clarifies the response format and a behavioral nuance. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is simple (3 required params, no nested objects), and there is an output schema (though not provided in the input), the description is fairly complete. It covers the endpoint, source handling, and return format. It could mention potential errors or idempotency, but for a POST creation endpoint, it covers the essentials. The absent annotation makes it carry more weight, but it handles that well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It explains that the 'source' parameter (implied by the endpoint) is set to 'mcp' and describes the response, but it does not provide specific details on 'title', 'description', or 'repo_path' beyond what's in the schema. However, it adds value by clarifying the 'source' semantics and response structure, which is useful for the agent. Since all parameters are required and self-explanatory from their names, the description's addition is reasonably helpful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: creating a no_human task via a specific endpoint and source. It clearly distinguishes from the sibling tool 'task_status' which presumably handles status queries, by focusing on task creation. It uses a specific verb ('Create') and specifies the resource ('task'), making it clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (to create a no_human task) but does not explicitly contrast with alternatives. Since there is only one sibling and no elaboration on when not to use it, it only provides moderate guidance. It does not mention any prerequisites or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_statusA
Fetch a task's full current state via GET /api/tasks. Resolves by task id (or unique id prefix) first; if that 404s, falls back to matching external_id across the task list (GET /api/tasks does not index by external_id, so this is a client-side scan). Returns the complete task object as compact JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id_or_external_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the burden and discloses important non-obvious behavior: resolution by task id or unique prefix, fallback to a client-side external_id scan, and the reason for that fallback. This gives the agent accurate expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no filler. Each sentence adds functional value: the endpoint, the lookup strategy, and the return format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter, presence of an output schema, and absence of annotations, the description is sufficiently complete. It covers the lookup method, fallback behavior, and return representation without needing to describe output schema fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides only the parameter name and type with no description, and schema description coverage is 0%. The description compensates fully by explaining that the parameter accepts a task id, unique id prefix, or external_id and by detailing the resolution order.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches a task's full current state via a specific endpoint. It uses a precise verb and resource, and the read-oriented purpose distinguishes it from the sibling task_add.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for when to use the tool: whenever a task's current state is needed. It does not explicitly name alternatives or exclusions, but the intended use is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
2 tool updates
v0.1.0- First observed
task_add - First observed
task_status
TDQS
Scored across 2 tools
task_add creates a task while task_status retrieves the current state of a task; their purposes are entirely distinct with no overlap. An agent would not confuse which tool to call.
Both tools share a consistent task_ prefix and use snake_case, so they form an obvious family. The minor deviation is that one second token is a verb (add) while the other is a noun (status), but at only two tools this is easy to parse.
Two tools is on the thin side for a task-management server, though the narrow create-and-check scope keeps it acceptable. It falls in the borderline range rather than feeling egregiously over- or under-built.
The domain appears to be task management, and the server supports creation plus status lookup, which covers the core add-and-monitor workflow. Missing operations include list, update, cancel/delete, and resubmission, which are notable but work-around-able for a minimal no_human API.
Maintenance
Related MCP Connectors
Turn described changes into reviewed pull requests: propose, triage, review, dependency audits.
Autonomous dev team steered from chat: plain-English requests in, tested merged PRs out.
AI-native git hosting — repos, PRs, issues, CI gates, and AI code review over MCP (60 tools).
Pull change requests from your Amendor board into your coding agent to build and open PRs.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables end-to-end automation of developer workflows from Jira issue tracking to GitHub pull requests through natural language, allowing developers to search issues, create branches, commit changes, and manage PRs directly from their IDE.2MIT
- AlicenseAqualityDmaintenanceLocal MCP server for safe GitHub developer workflows. Enables pulling main, creating feature branches, pushing them, and opening ready-for-review pull requests via tools like github_create_feature_branch and github_create_pull_request.630MIT
- FlicenseNot gradedqualityDmaintenanceAutonomous AI software development pipeline that transforms tickets into production-ready code through planning, coding, testing, reviewing, and delivery stages.-
- FlicenseNot gradedqualityBmaintenanceA review handoff tool for agent-driven coding sessions that captures worktree diffs, creates shareable review URLs, and streams reviewer feedback back to the agent.1-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/no-human-ai/no_human'
If you have feedback or need assistance with the MCP directory API, please join our Discord server