arcee-ai/nac
Rust
Captured source
source ↗arcee-ai/nac
Language: Rust
Stars: 13
Forks: 2
Open issues: 0
Created: 2026-03-28T04:02:01Z
Pushed: 2026-06-18T21:59:52Z
Default branch: main
Fork: no
Archived: no
README:
nac
Small coding agent. Heavily inspired by slate. Also takes inspiration from nanocode and pi.
Install the latest edge build:
curl -fsSL https://raw.githubusercontent.com/sapiosaturn/nac/main/scripts/install.sh | sh
Pinned version installs are not supported yet.
The installer places two binaries in $HOME/.local/bin by default:
nac-web: the web dashboard for managing multiple sessions.nac: the terminal UI and utility commands such ascodex-authandupgrade.
Set OPENAI_API_KEY, then run nac-web -C /path/to/project and open the printed local URL.
To use ChatGPT Codex auth instead of an OpenAI API key, run nac codex-auth login and complete the device-code flow in a browser. In nac-web, choose chatgpt-codex-responses in the launch modal, or configure backend = "chatgpt-codex-responses" under [model]. For the TUI, launch with nac --backend chatgpt-codex-responses.
Optional:
OPENAI_BASE_URLOPENAI_MODEL
Linux installs use the portable static build.
Upgrade to the latest edge build:
nac upgrade
nac upgrade reinstalls both nac and nac-web.
Run the web dashboard:
nac-web -C /path/to/project --bind 127.0.0.1:3210
Open http://127.0.0.1:3210/ for the dense session dashboard. nac-web exposes a central session manager for web clients. It resolves one server store at startup, then can create, resume, inspect, submit prompts to, and stream events from multiple sessions at once. Useful endpoints:
GET /healthGET /storeGET /sessionsPOST /sessionsGET /sessions/{session_id}POST /sessions/{session_id}/runsGET /sessions/{session_id}/events?after_sequence_id=0GET /sessions/{session_id}/events/stream?after_sequence_id=0POST /sessions/{session_id}/cancel-active-run
AGENTS.md is loaded hierarchically from the project and globally from NAC_HOME / ~/.config/nac. Skills are discovered from project and user skill directories; the orchestrator sees compact skill metadata and preloads selected skills for worker threads, while workers do not activate skills themselves. nac ignores disable-model-invocation; avoid interactive skills because nac is intended to run rather autonomously. Sessions are stored in the project store (.nac/store.db by default): use nac resume for the picker, nac resume --last for the newest session, or nac resume SESSION_ID for a specific session. Thread history does not auto-compact right now.
Uninstall:
curl -fsSL https://raw.githubusercontent.com/sapiosaturn/nac/main/scripts/uninstall.sh | sh
nac can run tools inside a Podman sandbox (requires Podman to be installed):
nac --sandbox
By default this mounts the current directory into the sandbox at /workspace.
For a custom setup:
--no-mount-cwddisables the default current-directory mount--mount HOST:GUESTadds a read-write mount--mount-ro HOST:GUESTadds a read-only mount--sandbox-image IMAGEoverrides the default image (python:3.13-bookworm)
On macOS, start Podman first:
podman machine init podman machine start
Recommended config
Optional config lives at ~/.config/nac/config.toml, or at $NAC_HOME/config.toml when NAC_HOME is set. Explicit CLI args and environment variables override TOML defaults. Resumed sessions continue using the model and sandbox settings stored in their session snapshot.
The api_key_env setting names the environment variable to read when OPENAI_API_KEY is not set. Store paths remain relative to the launch working directory.
[agents_md] fallback_filenames = [] max_bytes = 4194304 [storage] store_path = ".nac/store.db" [model] backend = "openai-responses" model = "gpt-5.5" base_url = "https://api.openai.com/v1" reasoning_effort = "xhigh" api_key_env = "OPENAI_API_KEY" [sandbox] image = "python:3.13-bookworm" [worker] thread_timeout_secs = 3600 [mcp_servers.exa_web_search] enabled = true transport = "streamable_http" url = "https://mcp.exa.ai/mcp" [mcp_servers.context7] enabled = true transport = "streamable_http" url = "https://mcp.context7.com/mcp" [mcp_servers.grep_app] enabled = true transport = "streamable_http" url = "https://mcp.grep.app"
Supported MCP transports right now are stdio and streamable_http. Stdio servers can provide command, args, and env; streamable HTTP servers provide url and optional headers. MCP string values support ${ENV_VAR} expansion.
For ChatGPT Codex auth, the default base URL is https://chatgpt.com/backend-api; NAC sends non-streaming Responses requests to /codex/responses. Use nac codex-auth status to inspect the saved account and nac codex-auth logout to remove local tokens.
Notability
notability 2.0/10Routine new repo with only 13 stars.