Skip to main content

npcsh is a command-line toolkit for using AI agents in novel ways.

Project description

npcsh logo

npcsh

The agentic shell for building and running AI teams from the command line.

License PyPI Python Docs


npcsh makes the most of multi-modal LLMs and agents through slash commands and interactive modes, all from the command line. Build teams of agents, schedule them on jobs, engineer context, and design custom Jinja Execution templates (Jinxes) for you and your agents to invoke.

pip install 'npcsh[lite]'

Once installed, run npcsh to enter the NPC shell. Also provides the CLI tools npc, wander, spool, yap, and nql.

.npc and .jinx files are directly executable with shebangs (#!/usr/bin/env npc):

npc ./myagent.npc "summarize this repo"     # run an NPC with a prompt
npc ./script.jinx bash_command="ls -la"     # run a jinx directly
./myagent.npc "hello"                       # or just execute it (with shebang)

Benchmark Results

How well can a model drive npcsh as an agentic shell? 125 tasks across 15 categories — from basic shell commands to multi-step workflows, code debugging, and tool chaining — scored pass/fail. Comparisons with other agent coders coming soon. For a more comprehensive view of npcsh's capabilities and the advantages of the NPC Context-Agent-Tool data layer, check out ALARA for Agents: Least-Privilege Context Engineering Through Portable Composable Multi-Agent Teams

FamilyModelScore
Kimik2.5121/125 (97%)
Qwen3.50.8b31/125 (24%)
2b81/125 (65%)
4b77/125 (62%)
9b100/125 (80%)
35b111/125 (88%)
397b120/125 (96%)
Qwen30.6b
1.7b42/125 (34%)
4b94/125 (75%)
8b85/125 (68%)
30b103/125 (82%)
Gemma4e4b34/125 (27%)
31b105/125 (84%)
Gemma31b
4b37/125 (30%)
12b77/125 (62%)
27b73/125 (58%)
Llama3.2:1b
3.2:3b26/125 (20%)
3.1:8b60/125 (48%)
Mistralsmall3.272/125 (57%)
ministral-351/125 (40%)
large-359/125 (47%)
Devstral260/125 (48%)
MiniMaxM2.7120/125 (96%)
Phiphi458/125 (46%)
GPT-OSS20b94/125 (75%)
OLMo27b13/125 (10%)
13b47/125 (38%)
Cogito3b10/125 (8%)
GLM4.7-flash102/125 (82%)
5120/125 (96%)
Nemotron3-super49/125 (39%)
Gemini2.5-flash
3.1-flash
3.1-pro
Claude4.6-sonnet
4.5-haiku
GPT5-mini
DeepSeekchat
reasoner
Category breakdown (completed models)
Category Qwen3.5 Qwen3 Gemma4 Gemma3 Llama Mistral Phi GPT-OSS Cogito GLM Kimi Qwen3.5 MiniMax Devstral Nemotron
0.8b2b9b35b 1.7b4b8b30b0.6b e4b31b 4b12b27b 3.2:3b small3.2ministral-3large-3 phi4 20b 3b 4.75 k2.5 397b M2.7 2 3-super
shell (10)5610108899610669610789100101010101097
file-ops (10)891010810910586910261081010010910109105
python (10)03910056611003103664100101010101065
data (10)024624560915705954605999944
system (10)289107971061059729610690101010101086
text (10)17682106708398170048071010101000
debug (10)2610100421040030040209091010101003
git (10)08692998294694840680510109901
multi-step (10)067606370935523005405899920
scripting (10)158100726090210316370810991082
image-gen (5)555555555535355152555555555
audio-gen (5)545555555545545155555555555
web-search (5)154515450515504500305555502
delegation (5)023302240402000030003444423
tool-chain (5)154425250413300110005555511
Total (125)318110011142947610334105377773267251595894101021201211201206049
python -m npcsh.benchmark.local_runner --model qwen3:4b --provider ollama

Usage

  • Get help with a task:

    npcsh>can you help me identify what process is listening on port 5337?
    
  • Edit files:

    npcsh>please read through the markdown files in the docs folder and suggest changes
    
  • Search & Knowledge

    /web_search "cerulean city"            # Web search
    /db_search "query"                     # Database search
    /file_search "pattern"                 # File search
    /memories                              # Interactive memory browser TUI
    /kg                                    # Interactive knowledge graph TUI
    /nql                                   # Database query TUI
    

    Web search results

  • Computer Use

    /computer_use
    

    Plonk GUI automation TUI Plonk GUI automation — completed task

  • Generate Images

    /vixynt 'generate an image of a rabbit eating ham in the brink of dawn' model='gpt-image-1' provider='openai'
    

    a rabbit eating ham in the brink of dawn

  • Generate Videos

    /roll 'generate a video of a hat riding a dog' veo-3.1-fast-generate-preview  gemini
    

    video of a hat riding a dog

  • Multi-Agent Discussions

    /convene "Is the universe a simulation?" npcs=alicanto,corca,guac rounds=3
    

    Convene — multi-NPC discussion

  • Serve an NPC Team

    /serve --port 5337 --cors='http://localhost:5137/'
    

Agent Formats

npcsh supports multiple ways to define agents inside your npc_team/ directory. You can mix all three formats — .npc files take precedence if names collide.

.npc files — Full-featured YAML agent definitions with model, provider, jinxes, and more:

#!/usr/bin/env npc
name: analyst
primary_directive: You analyze data and provide insights.
model: qwen3:8b
provider: ollama
jinxes:
  - skills/data-analysis

agents.md — Define multiple agents in a single markdown file. Each ## heading = agent name, body = directive:

## summarizer
You summarize long documents into concise bullet points.

## fact_checker
You verify claims against reliable sources and flag inaccuracies.

agents/ directory — One .md file per agent. Filename (minus .md) = agent name. Supports YAML frontmatter:

---
model: gemini-2.5-flash
provider: gemini
---
You translate content between languages while preserving tone and idiom.

All three formats are supported by both the Python and Rust editions of npcsh. Agents from agents.md and agents/ inherit the team's default model/provider from team.ctx.

The full team structure:

npc_team/
├── team.ctx           # Team config (model, provider, forenpc, context)
├── coordinator.npc    # YAML agent definitions
├── analyst.npc
├── agents.md          # Markdown-defined agents
├── agents/            # One .md file per agent
│   └── translator.md
├── jinxes/            # Workflows and tools
│   ├── research.jinx
│   └── skills/        # Knowledge-content skills
└── tools/             # Custom tool functions

This means you can bring agents from other ecosystems — if you already have an agents.md or an agents/ directory from Claude Code, Codex, Amp, or any other tool, just drop them into your npc_team/ and npcsh will pick them up alongside your .npc files.


Launching AI Coding Tools with NPC Teams

Your npc_team/ works beyond npcsh — you can launch any major AI coding tool as an NPC from your team using the CLI launchers from npcpy. Each tool gets the NPC's persona injected and gains awareness of the other team members.

pip install npcpy   # if not already installed

# Launch Claude Code as an NPC (interactive picker)
npc-claude

# Launch as a specific NPC
npc-claude --npc corca

# Same for other coding tools
npc-codex --npc researcher
npc-gemini --npc analyst
npc-opencode --npc coder
npc-aider --npc reviewer
npc-amp --npc writer

# Point to a specific team directory
npc-claude --team ./my_project/npc_team

The launcher discovers your team from ./npc_team or ~/.npcsh/npc_team, lets you pick an NPC, and starts the tool with that NPC's directive. For Claude Code, it also passes the other NPCs as sub-agents via --agents.

For deeper integration (jinxes exposed as MCP tools, team switching mid-conversation), register the NPC plugin:

npc-plugin claude    # install MCP server + hooks
npc-plugin codex     # same for Codex
npc-plugin gemini    # same for Gemini CLI

Features

  • Agents (NPCs) — AI agents with personas, directives, and tool sets
  • Team Orchestration — Delegation, review loops, multi-NPC discussions
  • Jinxes — Jinja Execution templates — reusable tools for users and agents
  • Skills — Knowledge-content jinxes with progressive section disclosure
  • NQL — SQL models with embedded AI functions (Snowflake, BigQuery, Databricks, SQLite)
  • Knowledge Graphs — Build and evolve knowledge graphs from conversations
  • Deep Research — Multi-agent hypothesis generation, persona sub-agents, paper writing
  • Computer Use — GUI automation with vision
  • Image, Audio & Video — Generation via Ollama, diffusers, OpenAI, Gemini
  • MCP Integration — Full MCP server support with agentic shell TUI
  • API Server — Serve teams via OpenAI-compatible REST API

Works with all major LLM providers through LiteLLM: ollama, openai, anthropic, gemini, deepseek, openai-like, and more.


Installation

pip install 'npcsh[lite]'        # API providers (ollama, gemini, anthropic, openai, etc.)
pip install 'npcsh[local]'       # Local models (diffusers/transformers/torch)
pip install 'npcsh[yap]'         # Voice mode
pip install 'npcsh[all]'         # Everything
System dependencies

Linux:

sudo apt-get install espeak portaudio19-dev python3-pyaudio ffmpeg libcairo2-dev libgirepository1.0-dev
curl -fsSL https://ollama.com/install.sh | sh
ollama pull qwen3.5:2b

macOS:

brew install portaudio ffmpeg pygobject3 ollama
brew services start ollama
ollama pull qwen3.5:2b

Windows: Install Ollama and ffmpeg, then ollama pull qwen3.5:2b.

API keys go in a .env file:

export OPENAI_API_KEY="your_key"
export ANTHROPIC_API_KEY="your_key"
export GEMINI_API_KEY="your_key"

Rust Edition (experimental)

A native Rust build of npcsh is available — same shell, same DB, same team files, faster startup. Still experimental.

cd npcsh/rust && cargo build --release
cp target/release/npcsh ~/.local/bin/npc   # or wherever you want

Both editions share ~/npcsh_history.db and ~/.npcsh/npc_team/ and can be used interchangeably.

Read the Docs

Full documentation, guides, and API reference at npc-shell.readthedocs.io.

Links

Research

  • Quantum-like nature of natural language interpretation: arxiv, accepted at QNLP 2025
  • Simulating hormonal cycles for AI: arxiv

Community & Support

Discord | Monthly donation | Merch | Consulting: info@npcworldwi.de

Contributing

Contributions welcome! Submit issues and pull requests on the GitHub repository.

License

MIT License.

Star History

Star History Chart

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

npcsh-1.2.5.tar.gz (20.1 MB view details)

Uploaded Source

Built Distributions

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

npcsh-1.2.5-py3-none-win_amd64.whl (40.1 MB view details)

Uploaded Python 3Windows x86-64

npcsh-1.2.5-py3-none-manylinux_2_35_x86_64.whl (40.1 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

npcsh-1.2.5-py3-none-macosx_14_0_arm64.whl (40.1 MB view details)

Uploaded Python 3macOS 14.0+ ARM64

npcsh-1.2.5-py3-none-macosx_13_0_x86_64.whl (40.1 MB view details)

Uploaded Python 3macOS 13.0+ x86-64

File details

Details for the file npcsh-1.2.5.tar.gz.

File metadata

  • Download URL: npcsh-1.2.5.tar.gz
  • Upload date:
  • Size: 20.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for npcsh-1.2.5.tar.gz
Algorithm Hash digest
SHA256 2244feb7e056e49246df0a345e5de68a9bc02d20e218c4a9443558a16a097a14
MD5 5af614b0f1621c2641d303fa886aa1eb
BLAKE2b-256 fa7c487901f23ab635a99152c754eec7bfcb2fa72b1b9c483251d699e959e168

See more details on using hashes here.

File details

Details for the file npcsh-1.2.5-py3-none-win_amd64.whl.

File metadata

  • Download URL: npcsh-1.2.5-py3-none-win_amd64.whl
  • Upload date:
  • Size: 40.1 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for npcsh-1.2.5-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 6419b96ac3c81bde4d23b3894790e1f864543e1e4e78b7f9893363c8dd88083c
MD5 d9cf44dd7b05e2bcdb782e256af113d2
BLAKE2b-256 9545812b441219fef27471fa4c4eac49761a9027f9696115fb794e8d333614c4

See more details on using hashes here.

File details

Details for the file npcsh-1.2.5-py3-none-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for npcsh-1.2.5-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 da194beff90fc75a9eb36a25d4f67eeb1b43484f890e14a0615b58ea2ee0da32
MD5 13a575636e4bc99caf7ec31dc984ec56
BLAKE2b-256 9d5dfad98e5a0d183ed7e57daedac34c99643ce157dfe77e63291db1e8c02772

See more details on using hashes here.

File details

Details for the file npcsh-1.2.5-py3-none-macosx_14_0_arm64.whl.

File metadata

  • Download URL: npcsh-1.2.5-py3-none-macosx_14_0_arm64.whl
  • Upload date:
  • Size: 40.1 MB
  • Tags: Python 3, macOS 14.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for npcsh-1.2.5-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 76439d6fd69f31f1b20747927c304bb4ec94290e8b01eb2b490de907d8768c7c
MD5 5470db966362c84dcef3cffe134c0580
BLAKE2b-256 3a0018007ba98639b1ab21d0ee8990b99f51b52cd2e3d7ba96cdc07a17479a6e

See more details on using hashes here.

File details

Details for the file npcsh-1.2.5-py3-none-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for npcsh-1.2.5-py3-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 fc00988dc8ff6515e10fa6365ab680f28ec030a97322092a746f27053438f957
MD5 429d78dfc550c7b263330f150e76e113
BLAKE2b-256 b56817bf7c807b9b4543c9ffdd97d534b8d0f55c42db7a7c2337631ffc8e92ad

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page