Skip to main content

nrgrd

PyPI Python License Status

nrgrd is NeuroGrid's Terminal User Interface (TUI) for interacting with AI models from your terminal, Claude Code style. Built on rich and prompt-toolkit, it points at any OpenAI-compatible inference endpoint — including a NeuroGrid Marketplace deployment (the URL + API key of the host you rented) — to chat, manage sessions, and run MCP tools.

Features

  • Coding agent — An iterative tool-use loop (nrgrd.agent) that reads, searches, edits, and runs commands in your repository until the task is done.
  • Workspace aware — Detects git, language, package manager, and test framework at startup, so the agent doesn't waste turns rediscovering your project.
  • Interruptible — Ctrl+C stops generation or a running tool without corrupting the conversation, keeping whatever was produced.
  • Named sessions — Several conversations per project: list, resume, rename, delete.
  • CLI modenrgrd "fix the failing tests" runs headless on the same runtime, for scripts and CI.
  • Native toolslist_files, read_file, write_file, edit_file, search, shell, git_status, git_diff.
  • Permissions — Read-only tools run automatically; file writes, shell commands, and MCP tools ask for approval first (or "always allow" for the session).
  • Immersive TUI — Rich-rendered panels, streaming output, and slash-command completion.
  • Persistent sessions — Saves conversation context and history locally.
  • Any compatible endpoint — Behind a ModelProvider abstraction: a NeuroGrid deployment, vLLM, Ollama, LM Studio, or anything else speaking the same API. All nrgrd needs is a URL, a key, and a model name.
  • Keys kept out of the config file — The API key lives in your OS credential store, and never appears in errors or logs.
  • Errors you can act on — Failures name the endpoint and model involved and say what to change.
  • Built-in MCP — Run and connect MCP servers straight from the terminal; their tools go through the same permission system.
  • CLI + TUI — Use nrgrd for the interactive interface or nrgrd-mcp for the MCP server.

Installation

nrgrd runs on macOS, Linux and Windows, with Python 3.11 or newer.

uv tool install nrgrd
nrgrd

uv tool install puts nrgrd on your PATH in its own environment, and downloads a suitable Python if you don't have one. Update with uv tool upgrade nrgrd. If you prefer pipx: pipx install nrgrd.

Don't have uv? See installing uv.

From source

git clone https://github.com/NeuroGrid-AI-exchange/neurogrid-tui.git
cd neurogrid-tui
uv sync
uv run nrgrd

Usage

nrgrd                              # interactive TUI
nrgrd "explain this repository"    # one prompt, then exit
nrgrd --model qwen3-coder "fix the failing tests"
nrgrd --yes "run the tests"        # approve gated tools automatically (CI)

Commands

Command What it does
/help List every command
/config, /config edit Show or change the connection
/con, /models Check the endpoint, list its models
/tools, /permissions Show tools and how each is gated
/session list, /session new|resume|rename|delete <name> Manage sessions
/diff, /context, /compact Review changes, context usage, summarise
/mcp, /mcp edit, /mcp reload Manage MCP servers

Configuration

The first time you run nrgrd it opens a Connect to a model screen and asks for the three things a NeuroGrid deployment hands you:

Endpoint   https://<your-deployment>/v1
API key    ••••••••••••
Model      qwen3-coder

It then queries the endpoint and lets you pick from the models it actually serves. Run /config edit to change any of this later.

The endpoint and model are saved to config.json in the application's config directory. The API key is not — it goes to your operating system's credential store (Keychain, Windows Credential Manager, or a Secret Service keyring). On machines with no usable keyring it falls back to an owner-only (0600) file, and /config tells you which is in use. A key left over in an older plaintext config.json is migrated out automatically on startup.

No environment variables are involved.

Project structure

nrgrd/
├── src/nrgrd/
│   ├── app.py         # TUI entry point (rendering only)
│   ├── agent/         # Agent runtime: loop, events, permissions — no TUI dependency
│   ├── tools/         # Tool registry: filesystem, search, shell, git, MCP adapter
│   ├── api/           # ModelProvider abstraction + the OpenAI-compatible one
│   ├── config/        # Configuration and credential storage
│   ├── context/       # Application state, models, token estimates
│   ├── screens/       # The connect / onboarding screen
│   ├── sessions/      # Session handling and storage
│   ├── system/        # System prompts
│   ├── theme/         # Color palette and styles
│   ├── widgets/       # Custom visual components
│   └── workspace/     # Filesystem tools, project discovery, MCP client
├── docs/              # Reports and documentation
├── tests/             # Agent/tool/permission tests (no TUI, no live endpoint needed)
└── pyproject.toml     # Dependencies and project metadata

The agent runtime never imports Rich or Textual — the TUI drives it by iterating agent.run(messages) and rendering the events it yields. That keeps the agent testable headlessly and reusable from a future CLI mode.

Releasing

Push a version tag. CI runs the tests, builds, checks the built version matches the tag, and publishes to PyPI and GitHub Releases:

git tag v0.1.0
git push origin v0.1.0

The version comes from the tag; there is no version number to edit in pyproject.toml.

Development

# Install in editable mode, including dev dependencies
uv sync --dev

# Run the test suite
uv run pytest tests/

# Run linters / checks (if applicable)
uv run ruff check src/
uv run mypy src/

License

MIT © NeuroGrid

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nrgrd-0.1.0.tar.gz (58.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nrgrd-0.1.0-py3-none-any.whl (58.6 kB view details)

Uploaded Python 3

File details

Details for the file nrgrd-0.1.0.tar.gz.

File metadata

  • Download URL: nrgrd-0.1.0.tar.gz
  • Upload date:
  • Size: 58.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for nrgrd-0.1.0.tar.gz
Algorithm Hash digest
SHA256 69b4913d3e8cb6e96eda8d8d5d2768664db67a3d8bdc73486637ea5d1cca800f
MD5 df1d5e7ca9798b1249c01a079e2312b9
BLAKE2b-256 508c374ac17ecafff712544396de6257dbffc44a0787b34eae17f5412828618a

See more details on using hashes here.

Provenance

The following attestation bundles were made for nrgrd-0.1.0.tar.gz:

Publisher: release.yml on NeuroGrid-AI-exchange/neurogrid-tui

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nrgrd-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: nrgrd-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 58.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for nrgrd-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 86d111da02f9f518d89b969ed16ced0dace2de81f7845f914c5122e0be694e59
MD5 9cb74fdfe925182f8eaf1a469bcf71e8
BLAKE2b-256 fe8e47b90c862aef9f018d6052de7bf06870707e313dd108e333eb45bf870dd5

See more details on using hashes here.

Provenance

The following attestation bundles were made for nrgrd-0.1.0-py3-none-any.whl:

Publisher: release.yml on NeuroGrid-AI-exchange/neurogrid-tui

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 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