Skip to main content

Noah Code

PyPI CI Python

Noah Code (noah-code) is a terminal coding agent for understanding repositories, planning changes, editing files, running commands, and carrying work across persistent sessions. It is built on the NVIDIA OO Agents (NOOA) runtime.

Install

Install Noah Code and its managed Python runtime with one command. No existing Python, Homebrew, or system package setup is required.

curl -LsSf https://raw.githubusercontent.com/skundu42/noah-code/main/install.sh | sh

Open a new terminal, move into a repository, and run:

noah .

Noah Code supports macOS on Apple Silicon and Intel, plus Linux on arm64 and x86_64 with Landlock and seccomp support. You also need an LLM provider account such as OpenAI, Anthropic, OpenRouter or NVIDIA.

Features

  • Read files, search with ripgrep, and inspect Git status, diffs, and history.
  • Navigate definitions, implementations, references, symbols, hover types, and diagnostics through lazily launched language servers plus an mtime-cached repository map.
  • Edit files with anchored replacements or atomic multi-file patches with exact preimages, rollback, immediate diagnostics, and concurrent-change detection.
  • Run permission-gated shell commands with timeouts and streamed output, or own long-running servers and watchers as bounded background jobs with cursor-based logs.
  • Follow repository instructions from AGENTS.md, CLAUDE.md, and .noah-code/instructions.md.
  • Switch between implementation-focused build mode and read-only plan mode.
  • Approve actions once or for a session with ordered allow, ask, and deny rules.
  • Undo and redo journaled file edits across process restarts.
  • Work in an adaptive Atom One Dark cockpit, a classic console, or one-shot non-interactive mode.
  • Type / for a live-filtering command and configuration reference; press Enter to send.
  • Follow batched live tool output, then inspect compact execution records with F2.
  • Review /diff in a keyboard-driven staged/worktree ledger with per-file patches, line deltas, validation state, changed symbols, explicit revert, and checkpoint undo.
  • Resume workspace-scoped sessions with todos and automatic context compaction.
  • Keep full oversized tool results privately while sending the model a focused, reopenable preview.
  • Inspect token, prompt-cache, model-wait, and tool-output usage with /tokens; switch live fast, balanced, and deep budgets with /efficiency.
  • Switch AI models between turns, with optional cross-repository defaults.
  • Extend workflows with slash commands, opt-in skills, MCP servers, model selection, and tracing.

Quick start

Start the TUI in the current repository and describe the desired end state in plain language:

noah .
Find the cause of the failing parser tests, implement the smallest safe fix, and run the
focused test file.

Common commands:

# Open another workspace
noah /path/to/repository

# Use the line-oriented console
noah --console .

# Run one task and exit
noah run "Explain how authentication is wired" .

# Allow actions that would normally ask; explicit deny rules still apply
noah run --auto "Fix the failing unit test" .

# Inspect and plan without editing
noah --mode plan .

# Resume work
noah --continue .
noah --session SESSION_ID .

Check the installation or inspect resolved configuration with:

noah --version
noah doctor .
noah config show .
noah update --check
noah benchmark .

Bring your own API key from inside the TUI by entering /model: choose the provider, paste the key into the masked field, choose the model, then select its reasoning effort. Noah saves the key to the operating system's credential store when one is available; otherwise it remains available only to that Noah process. API-key values are never written to Noah config, repository, or session files.

Environment variables and the CLI remain available for scripts and headless use:

export OPENAI_API_KEY="..."        # or ANTHROPIC_API_KEY / OPENROUTER_API_KEY
noah providers list
noah providers add openai --model MODEL_NAME
noah .

For reasoning models, choose default, none, minimal, low, medium, high, or xhigh. Provider and model support varies; default omits the parameter. You can set it in the guided /model flow, switch it live with /reasoning high, or launch with:

uv run noah --model openai/MODEL --reasoning-effort high .

Custom OpenAI-compatible gateways, vLLM, LM Studio, Ollama, Azure OpenAI, Bedrock, Gemini, Groq, Mistral, xAI, DeepSeek, Together AI, and Perplexity are also supported. See the provider configuration guide.

The package also installs noah-code and nc as equivalent entry points. Because nc commonly refers to netcat, noah or noah-code is recommended. Keep provider API keys in the OS credential store or environment, never in a repository or Noah Code session metadata.

Inside a session, bare /model opens guided provider, API-key, model, and reasoning setup. /model MODEL switches the active model immediately and remembers it when that session is resumed. It does not change other sessions. Use /model --global MODEL when the new model should also become the default for future sessions in every repository.

The TUI keeps the conversation central and adds a session-and-plan rail on terminals at least 110 columns wide. Tool output streams in a bounded activity panel and compacts after completion, keeping long runs responsive without deleting persisted session data. Press F2 for activity details or F3 for paginated conversation history.

The default fast profile uses compact NOOA trajectory rendering, bounded tool results, batched repository inspection, cache-friendly turn-boundary context refresh, and lazy MCP connections. A configured lightweight_model handles coding-session compaction; deterministic titles avoid an otherwise unnecessary model request. Run noah benchmark . for the deterministic offline fixture and /tokens for real provider-reported usage in the current run.

Documentation

Updates

Noah Code checks PyPI for new versions at most once every 24 hours and updates uv-managed installations automatically. To check or update immediately:

noah update --check
noah update

Development

uv sync --extra dev --extra mcp --extra tracing
uv run ruff check src tests
uv run pytest tests
uv build

See the development guide for platform checks and the release process.

License

Apache-2.0, as declared in the project metadata. NOOA remains separately licensed by its upstream project.

Credits

Built on NVIDIA OO Agents (NOOA). Thanks to the NVIDIA NeMo team and NOOA contributors for the agent runtime that powers Noah Code.

Release files for noah-code 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for noah-code 0.2.0
File Size Uploaded
noah_code-0.2.0.tar.gz 224.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for noah-code 0.2.0
File Interpreter ABI Platform
noah_code-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 342.3 kB

Release files / noah_code-0.2.0.tar.gz

Download URL noah_code-0.2.0.tar.gz
Size 224.3 kB
Tags Source
SHA-256 checksum
How to use checksums
6fbaa39542e40104787fb9ec93a2a34fee0933aed483a8875b0fd1528d914f71
BLAKE2b-256 checksum
How to use checksums
45452269876869da6f1c94f138aba987237a94e2adb63b5518b83dd39eaf1319
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 20, 2026.

Transparency log

Release files / noah_code-0.2.0-py3-none-any.whl

Download URL noah_code-0.2.0-py3-none-any.whl
Size 118.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7bf3da00c526c299e58d5de594e4d6e1af9cd8a9d3c6b9b33b69af85c720017e
BLAKE2b-256 checksum
How to use checksums
2ff1b9815c7e365545143413c0b5492a258a76ea85e826d69e57fd2d8b37561a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 20, 2026.

Transparency log

Release history Release notifications | RSS feed

1.0.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

This release

0.2.0 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page