샌드박스 워커에서 변경 사항을 실행하고 독립적인 테스트 재실행 및 시크릿 스캔을 수행하여 AI 코딩 어시스턴트의 작업 결과물을 검증합니다.
다른 이름 rayson-tech/nomarmy
- 스타
- 4
- Tools
- —
- 다운로드, 30일
- —
- 최신 버전
- 0.1.0-beta.19
- 마지막 커밋
- 2026년 11월 9일
- 라이선스
- Apache-2.0
nomArmy MCP란?
nomArmy은(는) MCP server입니다. 샌드박스 워커에서 변경 사항을 실행하고 독립적인 테스트 재실행 및 시크릿 스캔을 수행하여 AI 코딩 어시스턴트의 작업 결과물을 검증합니다.
프로젝트 README에서 생성된 요약
nomArmy MCP server 정보
nomArmy는 Claude Code, Codex 또는 Cursor와 같은 AI 코딩 어시스턴트를 위한 검증 레이어를 제공합니다. 에이전트가 작업을 완료했다는 주장만 믿는 대신, 이 시스템은 noms라고 불리는 샌드박스 워커를 사용하여 Podman 컨테이너 내에서 변경 사항을 실행합니다. 이러한 워커는 빌드 프로세스 중 보안을 보장하기 위해 네트워크 액세스와 호스트 자격 증명이 없는 제한된 환경에서 작동합니다.
nom이 작업을 완료하면 시스템은 실제 git diff를 읽고, 새로운 샌드박스에서 테스트를 실행하며, revert check를 수행하여 테스트가 의도한 변경 사항을 실제로 잡아내는지 확인함으로써 작업을 독립적으로 검증합니다. 또한 실수로 인한 정보 유출을 방지하기 위해 시크릿 스캔 기능도 포함되어 있습니다. 사용자는 API 키, 구독 또는 llama.cpp를 통한 로컬 모델을 사용하여 다양한 에이전트를 구성할 수 있습니다. 설정에는 Git, Node, Podman이 필요하며 macOS 사용자의 경우 특정 메모리 요구 사항이 있습니다.
활용 사례
- 1AI 생성 코드 변경 사항 검증AI 어시스턴트가 코딩 작업을 샌드박스 워커에 전달하여 변경 사항이 기존 테스트를 실제로 통과하는지 증명할 수 있습니다.
- 2엔드 투 엔드 기능 개발 자동화개발자는 초기 계획부터 빌드, 리뷰, 최종 승인에 이르는 전체 워크플로우를 트리거할 수 있습니다.
- 3커밋 시 시크릿 유출 방지변경 사항이 브랜치에 커밋되기 전에 시스템이 코드를 자동으로 스캔하여 민감한 정보를 찾아냅니다.
- 4독립적인 테스트 유효성 검사 수행이 도구는 변경 사항을 되돌린 후 새 코드 없이도 테스트가 여전히 통과하는지 확인하여 테스트가 유의미한지 보장합니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
nomArmy MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 nomArmy MCP 설치
$ claude mcp add nomarmy -- npx -y nomarmyCursor에 nomArmy MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"nomarmy": {
"command": "npx",
"args": [
"-y",
"nomarmy"
]
}
}
}VS Code에 nomArmy MCP 설치
.vscode/mcp.json
{
"servers": {
"nomarmy": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"nomarmy"
]
}
}
}VS Code CLI에 nomArmy MCP 설치
$ code --add-mcp '{"name":"nomarmy","type":"stdio","command":"npx","args":["-y","nomarmy"]}'Claude Desktop에 nomArmy MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"nomarmy": {
"command": "npx",
"args": [
"-y",
"nomarmy"
]
}
}
}Codex에 nomArmy MCP 설치
$ codex mcp add nomarmy -- npx -y nomarmyCodex config.toml에 nomArmy MCP 설치
~/.codex/config.toml
[mcp_servers.nomarmy] command = "npx" args = ["-y", "nomarmy"]
Gemini CLI에 nomArmy MCP 설치
$ gemini mcp add -s user nomarmy npx -- -y nomarmyGemini settings.json에 nomArmy MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"nomarmy": {
"command": "npx",
"args": [
"-y",
"nomarmy"
]
}
}
}자동 검사
2026년 11월 14일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식
- 소스 저장소 연결 및 접근 가능rayson-tech/nomarmy is public and reachablegithub.com/rayson-tech/nomarmy ↗통과
- 패키지가 이 저장소를 소스로 명시nomarmy names rayson-tech/nomarmy as sourcenpmjs.com/package/nomarmy ↗통과
- 빌드 출처(Sigstore 증명)No build attestation published for this release검사되지 않음
- 오픈 소스 라이선스 (OSI)Apache-2.0spdx.org/licenses/Apache-2.0.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-11-09github.com/rayson-tech/nomarmy ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음No popular package one edit away from nomarmy통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음150 resolved dependencies checked; no critical advisoryosv.dev ↗통과
- 모델에 대한 숨겨진 지침 없음0 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기Your coding assistant plans; sandboxed workers build; nothing counts until nomArmy has checked it.
AI coding workers are confident. Their "done, all tests pass" is a claim, not evidence. nomArmy lets your coding assistant (Claude Code, Codex or Cursor) hand work to workers called noms, then checks every change itself before anything is committed: the real diff, your tests run in a fresh sandbox, a check that those tests actually catch the change, and a secret scan.
TL;DR
- Have Git, Node 24.16+ (or 26.1+), Podman, and Claude Code, Codex or Cursor installed and signed in. On macOS, give Podman 8 GiB:
brew install podman && podman machine init --memory 8192 && podman machine start. Windows is supported with the engine in WSL2. Follow the Windows setup. - Install and set up:
npm install -g nomarmy cd your-project nomarmy setupnomarmy setupis a playbook. It shows a checklist and runs the next step each time you say yes:
Stop anytime;✓ Where models run: hosted ✓ Installed: OpenClaw 2026.10.3 → Agents: add a hosted agent Roles: add an agent first This repo: configure this project Check: verify the installation Run `nomarmy agents add` now? [Y/n]nomarmy setuppicks up where you left off. Want every step spelled out? Example setup: Claude Code, Codex and an API key goes command by command. - Use it: restart Claude Code in the project and ask it to use nomArmy for one small bug that has a test. When that works, try
/feature <what you want built>.
Prefer a plugin? After step 2, Claude Code users can run /plugin marketplace add rayson-tech/nomarmy and /plugin install nomarmy@nomarmy instead of using nomarmy connect; Codex works too (plugins).
Stuck? nomarmy doctor checks the machine and nomarmy health checks everything nomArmy runs on. Upgrading later? nomarmy update.
How every byte gets verified
- Your coding assistant, the General, briefs a job: a task, acceptance criteria, and the tests that prove it.
- nomArmy creates a git worktree from your branch and runs the nom in a Podman sandbox with no network and no host credentials. (One exception, the Claude subscription: see Security posture.)
- The nom edits, runs tests, and ends with a four-line report:
STATUS,TESTS,NOT_DONE,NOTE. - nomArmy treats that report as a claim and checks the evidence itself:
- reads the real diff from git, not the nom's description of it
- runs your verification profile in a fresh sandbox
- reverts the production change and reruns the tests: a test that still passes proves nothing, so the job goes to review instead of being committed
- blocks on secrets, and flags tests made to pass (new skips, stubbed imports) and code nothing calls
- Only then does it commit, on the nom's own branch. It never merges into yours: reviewing and integrating stay with the General, and with you.
Failing verification stays failed, unconditionally. A malformed report isn't automatically a failure: if the repository changed, nomArmy verifies independently and may recover the work. And the checks aren't the General's to waive: a repo's .nomarmy.yml policy (on by default for new repos) makes verification and the revert check mandatory for every job.
Showing what was checked. When a /feature run finishes, the General gets a "Verified by nomArmy" block for the pull request: how many "done, tests pass" claims held up, how many nomArmy caught and why, and the new tests shown to fail without their change. nomarmy stats --share prints the same for any period, and nomarmy stats --badge writes a README badge like nomArmy | 78 claims checked · 11 caught. Every number comes from the verified records.
Checking without building costs nothing: mode: verify runs a verification profile against any branch, with no worker and no model tokens.
Want deeper checks? Three optional validators go further, each only adding review flags: mutation testing (do the tests pin down the changed lines?), Jev (do a scout's citations support its findings, does a report match its diff?, on TypeSafe or a compatible server on your own machine) and a model judge (acceptance criteria, weakened tests).
Where the work runs
- Agents say where a job can run: an API key, your own Claude, ChatGPT, Muse Code or Grok subscription (or another OpenClaw provider), or a local model on llama.cpp.
- The army says which role runs on which agent: Sr and Jr devs build, a security analyst and a data architect review, a PM checks the plan, a PO accepts.
/featureruns a whole feature end to end, from plan through build, review and acceptance, and hands you a branch to merge.- Harnesses give each repo the right sandbox: Go, Rust, Python and Node (mixed repos too), Playwright browser tests, and fake services like a mock login server, all offline. Adding one never touches core code.
What you get is work you don't have to take on faith, not cheaper work. Delegating costs the General tokens too, for briefing and review: on small, already-diagnosed tickets we measured 4 to 8 times more of the General's tokens than fixing the bug directly, with break-even around 150 lines of context a fix needs to read (the measurements). It pays off on bigger tickets, parallel work, and anywhere you'd otherwise trust an agent's say-so.
Have a GPU or a Mac with plenty of memory? Choose "a local model" in nomarmy setup: no per-token bill and your code stays home, but you pay in hardware, power and speed. nomarmy sizing tells you what fits. A shared model server works too.
Developed and maintained by Rayson Technologies. This is a beta (0.1.0-beta): settings carry across upgrades (see config compatibility).
Docs
| Install | Every setup: hosted (API keys and subscriptions), a local model on macOS, Linux, Windows with the engine in WSL2 or DGX Spark, a shared model server, Bedrock |
| Example setup | Claude Code, Codex and an API key, command by command |
| Agents and the army | Where a job can run, who does what, usage limits, picking an agent |
/feature runs |
A feature end to end, and watching what nomArmy is doing |
| Your repository | .nomarmy.yml, verification, dependencies, private registries, what nomArmy checks |
| Validators | Optional deeper checks: mutation testing, Jev, a model judge |
| Harnesses | Ecosystem registry, detection, network levels, and requirements |
| Configuration | Settings, swapping the local model, sizing, admission |
| Reference | Every CLI command and MCP tool |
| Security posture | What the sandbox holds back, and the one exception |
| FAQ | Which model for which role, switching models, usage limits |
| Troubleshooting | Symptoms and fixes |
Security
A nom gets a writable git worktree inside a Podman sandbox and nothing else: no network, no host credentials, no Podman socket. Every model call is made by OpenClaw on your machine, never from inside the sandbox. Verification can climb a network ladder one rung at a time (fake services on a private network, then an allowlist you approve for a test tenant), but noms never leave network none. The exception is a Claude subscription, whose tools run on your machine, so nomArmy refuses build jobs on it unless you allow it. Never hand a nom production credentials, deployment access or SSH keys. Details: Security posture; to report a vulnerability, SECURITY.md.
Status
| Capability | Status |
|---|---|
| Verification core: worktrees, nomArmy-owned git, independent verification, the revert check, kept failed worktrees | Working, end-to-end tested |
mode: verify, secret scanning (secretlint, hard block), test-workaround and unwired-code checks |
Unit and live tested; the heuristics are review flags |
Scout and decompose modes, auto_union |
Unit and live tested |
| Agents: API keys | Live-verified with xAI; other providers built to OpenClaw's documented interface |
| Agents: subscriptions | ChatGPT (Codex) sandboxed and live-verified; Claude and Muse Code live-verified, but their tools run on the host (scout and review by default) |
| Local (llama.cpp) and Bedrock profiles | Working |
The army and /feature |
Used daily on nomArmy itself and our own products: 783 jobs from September 18 to October 10, 2026 (measured results) |
| Harnesses: Go, Rust, Python, Node and mixed repos; Playwright; fake services | Live-verified offline |
| Private registries and a verification-only network allowlist | Live-verified; each passed an independent security review |
| Validators: mutation testing, Jev, a model judge | Unit and live tested; Jev and the judge evaluated on real job records |
nomarmy stats |
Checked against a hand-built report on real job records |
What we've learned from real runs, including where delegating pays and where it doesn't, is in docs/findings.md.
Known limitations
- A Claude subscription isn't sandboxed. Its tools run on your machine, so implement jobs on it are refused unless you set
allow_host_tools: true. See Security posture. - Your own compose services aren't started yet. A verification profile that needs a real database from your compose file (
environment: basicor higher) reportsnot_runrather than running without it (and the compose parser doesn't resolve YAML anchors). Fake services from harnesses, like the mock login server, do run. - Private registries don't cover Poetry or Yarn Berry yet: Poetry can't guarantee a credentialed install runs no package code, and Yarn Berry doesn't read
.npmrc. uv, pip wheels, npm, pnpm, Yarn Classic and bun work. See Private registries. - A model a vendor lists but refuses is caught at dispatch, with a test call. The first job on a model that has never worked for its agent waits a few seconds for a one-token test call; a refusal (gpt-6-sol on a ChatGPT plan) is reported and remembered instead of costing the job. An inconclusive test call (a timeout) lets the job through.
- Claude subscription token counts come from the Claude CLI's own session log, since OpenClaw sees only the final reply; totals include cache reads and writes.
- Test-workaround detection is a flag, not a verdict: a legitimate new skip still gets flagged.
- Deploy-time failures need your own check. See Add a check for what unit tests can't see.
- Same-host sandboxes: the MCP server, OpenClaw and every job's sandbox run on the machine with the coordinator. Only the model can be elsewhere.
More
- docs/findings.md: what real runs taught us.
- docs/experiments: the measured write-ups behind them.
- policies: how scouts and reviewers are held to account.
- CONTRIBUTING.md, SECURITY.md, CODE_OF_CONDUCT.md.
Configuration variables are NOMARMY_*; a legacy RAYSON_* variable is translated once at load, with a deprecation warning.
Licensed under Apache 2.0.
nomArmy MCP 질문
nomArmy MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add nomarmy -- npx -y nomarmy를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
nomArmy MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
nomArmy는 코드 변경 사항을 어떻게 검증하나요?
git worktree를 생성하고 네트워크가 차단된 Podman 샌드박스에서 코드를 실행합니다. 또한 변경 사항을 되돌렸을 때 테스트가 반드시 실패해야 하는 revert check를 수행합니다.
코드 실행은 안전한가요?
네, 워커는 네트워크 액세스와 호스트 자격 증명이 없는 Podman 샌드박스에서 실행되므로 안전합니다.
모델을 로컬에서 실행할 수 있나요?
네, llama.cpp를 통해 로컬 모델을 실행하도록 선택하여 코드를 자신의 머신에 그대로 유지할 수 있습니다.