Skip to main content
Glama

no_human

티켓에서 리뷰된 풀 리퀘스트까지.무료이자 오픈소스, 당신의 머신에서.

latest release CI python 3.12+ license MIT

getnohuman.com · 빠른 시작 · 문서 · 스프린트가 돌아가는 모습 보기

Download for macOS Download for Windows Download for Linux

▶ 루프 보기 — 티켓이 들어오면 리뷰된 풀 리퀘스트가 나간다. 전체 루프가 57초.

당신이 신뢰할 수 있는 AI 코딩 팩토리:

  • 어떤 코드보다 먼저 계획. 티켓과 저장소에서 찾은 내용을 바탕으로 계획을 세웁니다.

  • 적대적 리뷰. 다른 모델, 새로운 컨텍스트, 읽기 전용 도구로 "완료"를 반박하도록 지시합니다. 파일과 줄을 인용하는 통과/실패 체크리스트를 받게 됩니다 — 숫자로 된 자체 점수는 절대 아닙니다.

  • 변조 방지. 삭제된 테스트, 새로 추가된 skip, 동어반복으로 바뀐 assertion — 리뷰어 토큰이 소비되기 전에 차단됩니다.

  • 버그가 고쳐졌다는 증거. 버그 수정의 경우, 증거로 제시된 테스트는 머지 베이스에서 실패하고 새 트리에서는 통과해야 합니다 — 재현 게이트가 이를 강제하며, 모든 변경에 대해 이를 요구할 수 있습니다.

  • 당신의 테스트가 실행됩니다. 로컬에서, 그리고 선택적으로 CI를 통해서도.

  • 정직한 중단. 완료할 수 없을 때, 그럴듯한 diff를 지어내는 대신 구체적인 질문 하나를 남기고 멈춥니다.

설치

어떤 방식으로 설치하든 Claude 자격 증명이 필요합니다: claude setup-token의 OAuth 토큰(개인 구독 또는 엔터프라이즈). 따라서 먼저 Claude Code CLI를 설치하세요 — npm install -g @anthropic-ai/claude-code, 또는 curl -fsSL https://claude.ai/install.sh | bash. 데스크톱 앱도 모든 태스크에서 그 CLI를 호출합니다. 대신 Anthropic에 직접 결제하려면 llm.auth_mode: "api_key"로 설정하고 ANTHROPIC_API_KEY를 ~/.no_human/.env에 넣으세요.

한 줄 설치 (CLI + 보드)

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 real

데스크톱 앱

Download for macOS Download for Windows Download for Linux

각 릴리스는 아티팩트와 함께 SHA-256을 제공합니다. 플랫폼별 참고 사항과 첫 실행 안내: docs/quickstart.md.

소스에서

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 it

보드를 원한다면 web 빌드는 선택 사항이 아닙니다: 소스 체크아웃에는 web/dist가 포함되어 있지 않으므로, 그것 없이 nh start를 실행하면 API만 제공되고 UI는 렌더링되지 않습니다. Python 3.12+, uv, git, 그리고 보드 빌드를 위한 Node와 npm이 필요합니다.

Related MCP server: letmediff

태스크 하나 실행하기

인자 없이 nh를 실행하면 셸이 열립니다: 당신의 레인, 실시간 이벤트 로그, 그리고 평범한 영어로 태스크를 설명하는 인테이크가 표시됩니다. 아래의 모든 명령도 여전히 작동합니다.

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 feedback

통합

no_human을 이미 사용 중인 트래커에 연결하면 티켓을 보드로 가져옵니다 — 트래커의 필터는 태스크 자체의 텍스트가 아닌 당신의 설정에 있으며, 전송 오류는 풀을 중단시키는 대신 로그를 남기고 다음 틱에서 재시도합니다.

트래커

티켓 도착 방식

설정하는 필터

Jira Cloud

REST search/jql로 폴링 (HTTP Basic email:token)

integrations.jira.jql

Linear

GraphQL API로 폴링

integrations.linear.team_key + state_types + label

monday.com

GraphQL v2로 폴링

integrations.monday.board_id + status_column + todo_labels

쓰기 저장이 켜져 있으면(write_back, 기본값은 꺼짐), 티켓은 태스크와 함께 이동합니다 — 하드코딩된 전환 ID가 아닌 상태 카테고리, 유형 또는 지정한 라벨로 매칭됩니다 — 그리고 PR 링크를 받습니다. 사람이 필요한 태스크는 전환되지 않고 댓글로 남겨집니다. GitHub과 GitLab 이슈는 URL로 태스크로 가져오며, PR 또는 MR은 당신의 호스트에서 열립니다. Slack과 Teams는 태스크가 당신을 필요로 할 때 메시지를 받고, Jenkins와 CircleCI는 테스트 레이어를 실행하고 루프를 게이트할 수 있습니다. 각각의 설정: docs/adapters.md.

Jira 흐름을 처음부터 끝까지 보기 — Jira 보드에서 동기화된 티켓이 범위가 정해지고, 구현되고, 리뷰를 통과한 풀 리퀘스트로 전달됩니다 (모든 단계가 담긴 전체 비디오를 보려면 클릭):

Jira flow demo

MCP 서버 — 이미 사용 중인 에이전트에서 작업을 맡기세요

no_human은 MCP (Model Context Protocol) 서버를 제공합니다: 공식 Python MCP SDK로 구축된 stdio 브리지로, Claude Code, Cursor 또는 모든 MCP 클라이언트가 로컬 no_human에 작업을 맡기고 상태를 확인할 수 있습니다.

nh mcp-serve        # the MCP server, over stdio

두 개의 도구, 그 이상은 없습니다:

도구

하는 일

task_add(title, description, repo_path)

태스크를 등록합니다. 그러면 no_human이 계획을 세우고, 변경을 작성하고, 테스트를 실행하고, 두 번째 모델이 리뷰한 뒤 풀 리퀘스트를 엽니다.

task_status(task_id_or_external_id)

해당 태스크의 현재 상태를 반환합니다 — 상태, 시도 횟수, PR 링크(생성된 경우).

당신의 no_human과 http://127.0.0.1:8420에서만 통신하며 그 외에는 아무것도 아닙니다: 인증이 없습니다. 그 주소는 localhost이기 때문이며, 그 사이에 우리의 서비스도 없습니다. Claude Code의 경우 동일한 서버가 플러그인으로 제공됩니다 — plugins/no-human/을 가리키면 두 도구가 세션에 나타납니다.

// .mcp.json
{ "mcpServers": { "no_human": { "command": "nh", "args": ["mcp-serve"] } } }

문서

quickstart.md

플랫폼별 첫 태스크까지

configuration.md

모든 설정과 기본값

verification.md

게이트, 제한된 루프, 한계

security.md

인증 경계, 절대 머지하지 않는 규칙, 가드

blockers.md

에스컬레이션, 웨이크 왓처, nh reply

adapters.md

인테이크, 컨텍스트, VCS 및 CI 백엔드

eval.md

골든 세트, 리플레이 스코어링, 섀도우 모드

CHANGELOG.md

릴리스별 변경 사항

개발

uv sync
uv run pytest -q
uv run nh --help

이슈와 풀 리퀘스트를 환영합니다. 제출 전에 uv run pytest -q를 실행하세요.

no_human이 리뷰 사이클을 절약해 주었다면, 스타 하나가 다른 사람들이 찾는 데 도움이 됩니다: GitHub stars

라이선스

MIT — LICENSE 참조. 라이선스는 코드를 다루며 이름은 다루지 않습니다: TRADEMARK.md는 "no_human"과 로고 사용에 대한 정책입니다. 바이너리 패키징은 소스 트리에는 없는 의무를 수반하며, THIRD-PARTY-NOTICES.md에 나열되어 있습니다.

Available Tools

2 tools
task_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).

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
repo_pathYes
descriptionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_id_or_external_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 2 tool updatesv0.1.0
    • First observedtask_add
    • First observedtask_status

TDQS

A4.1/5.0

Scored across 2 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count3/5

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.

Completeness3/5

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

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers