npcsh 1.1.21__tar.gz → 1.1.23__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {npcsh-1.1.21/npcsh.egg-info → npcsh-1.1.23}/PKG-INFO +404 -278
- {npcsh-1.1.21 → npcsh-1.1.23}/README.md +402 -278
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/_state.py +282 -125
- npcsh-1.1.23/npcsh/benchmark/npcsh_agent.py +172 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/benchmark/templates/install-npcsh.sh.j2 +12 -4
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/config.py +5 -2
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/mcp_server.py +9 -1
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/alicanto.npc +8 -6
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/corca.npc +5 -12
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/frederic.npc +6 -9
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/guac.npc +4 -4
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/delegate.jinx +1 -1
- npcsh-1.1.23/npcsh/npc_team/jinxs/lib/core/edit_file.jinx +119 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/sh.jinx +1 -1
- npcsh-1.1.23/npcsh/npc_team/jinxs/lib/core/skill.jinx +59 -0
- npcsh-1.1.23/npcsh/npc_team/jinxs/lib/utils/help.jinx +236 -0
- npcsh-1.1.23/npcsh/npc_team/jinxs/lib/utils/init.jinx +532 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/jinxs.jinx +0 -1
- npcsh-1.1.23/npcsh/npc_team/jinxs/lib/utils/serve.jinx +943 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/alicanto.jinx +102 -41
- npcsh-1.1.23/npcsh/npc_team/jinxs/modes/build.jinx +378 -0
- npcsh-1.1.21/npcsh/npc_team/jinxs/modes/config_tui.jinx → npcsh-1.1.23/npcsh/npc_team/jinxs/modes/config.jinx +1 -1
- npcsh-1.1.23/npcsh/npc_team/jinxs/modes/convene.jinx +670 -0
- npcsh-1.1.23/npcsh/npc_team/jinxs/modes/corca.jinx +820 -0
- npcsh-1.1.23/npcsh/npc_team/jinxs/modes/crond.jinx +818 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/kg.jinx +69 -2
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/plonk.jinx +86 -15
- npcsh-1.1.23/npcsh/npc_team/jinxs/modes/roll.jinx +378 -0
- npcsh-1.1.23/npcsh/npc_team/jinxs/modes/skills.jinx +621 -0
- npcsh-1.1.23/npcsh/npc_team/jinxs/modes/yap.jinx +1190 -0
- npcsh-1.1.23/npcsh/npc_team/jinxs/skills/code-review/SKILL.md +45 -0
- npcsh-1.1.23/npcsh/npc_team/jinxs/skills/debugging/SKILL.md +44 -0
- npcsh-1.1.23/npcsh/npc_team/jinxs/skills/git-workflow.jinx +44 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/kadiefa.npc +6 -6
- npcsh-1.1.23/npcsh/npc_team/npcsh.ctx +34 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/plonk.npc +5 -9
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/sibiji.npc +15 -7
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npcsh.py +1 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/routes.py +0 -4
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/yap.py +22 -4
- {npcsh-1.1.21 → npcsh-1.1.23/npcsh.egg-info}/PKG-INFO +404 -278
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh.egg-info/SOURCES.txt +12 -25
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh.egg-info/requires.txt +2 -1
- {npcsh-1.1.21 → npcsh-1.1.23}/setup.py +2 -1
- npcsh-1.1.21/npcsh/benchmark/npcsh_agent.py +0 -327
- npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/add_tab.jinx +0 -11
- npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/close_pane.jinx +0 -9
- npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/close_tab.jinx +0 -10
- npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/confirm.jinx +0 -10
- npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/focus_pane.jinx +0 -9
- npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/list_panes.jinx +0 -8
- npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/navigate.jinx +0 -10
- npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/notify.jinx +0 -10
- npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/open_pane.jinx +0 -13
- npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/read_pane.jinx +0 -9
- npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/run_terminal.jinx +0 -10
- npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/send_message.jinx +0 -10
- npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/split_pane.jinx +0 -12
- npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/switch_npc.jinx +0 -10
- npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/switch_tab.jinx +0 -10
- npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/write_file.jinx +0 -11
- npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/zen_mode.jinx +0 -9
- npcsh-1.1.21/npcsh/npc_team/jinxs/lib/core/convene.jinx +0 -232
- npcsh-1.1.21/npcsh/npc_team/jinxs/lib/core/edit_file.jinx +0 -97
- npcsh-1.1.21/npcsh/npc_team/jinxs/lib/core/search/kg_search.jinx +0 -429
- npcsh-1.1.21/npcsh/npc_team/jinxs/lib/core/search.jinx +0 -54
- npcsh-1.1.21/npcsh/npc_team/jinxs/lib/utils/build.jinx +0 -65
- npcsh-1.1.21/npcsh/npc_team/jinxs/lib/utils/help.jinx +0 -52
- npcsh-1.1.21/npcsh/npc_team/jinxs/lib/utils/init.jinx +0 -41
- npcsh-1.1.21/npcsh/npc_team/jinxs/lib/utils/serve.jinx +0 -26
- npcsh-1.1.21/npcsh/npc_team/jinxs/modes/corca.jinx +0 -430
- npcsh-1.1.21/npcsh/npc_team/jinxs/modes/roll.jinx +0 -65
- npcsh-1.1.21/npcsh/npc_team/jinxs/modes/yap.jinx +0 -275
- npcsh-1.1.21/npcsh/npc_team/npcsh.ctx +0 -18
- {npcsh-1.1.21 → npcsh-1.1.23}/LICENSE +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/MANIFEST.in +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/__init__.py +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/alicanto.py +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/benchmark/__init__.py +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/benchmark/runner.py +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/build.py +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/completion.py +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/conversation_viewer.py +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/corca.py +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/diff_viewer.py +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/execution.py +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/guac.py +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/mcp_helpers.py +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc.py +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/alicanto.png +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/corca.png +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/corca_example.png +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/frederic4.png +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/guac.png +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/browser/browser_action.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/browser/browser_screenshot.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/browser/close_browser.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/browser/open_browser.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/computer_use/click.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/computer_use/key_press.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/computer_use/launch_app.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/computer_use/screenshot.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/computer_use/trigger.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/computer_use/type_text.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/computer_use/wait.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/compress.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/load_file.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/ots.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/paste.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/python.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/sample.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/search/db_search.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/search/file_search.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/search/web_search.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/sleep.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/sql.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/benchmark.jinx +0 -0
- {npcsh-1.1.21/npcsh/npc_team/jinxs/lib/core → npcsh-1.1.23/npcsh/npc_team/jinxs/lib/utils}/chat.jinx +0 -0
- {npcsh-1.1.21/npcsh/npc_team/jinxs/lib/core → npcsh-1.1.23/npcsh/npc_team/jinxs/lib/utils}/cmd.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/compile.jinx +0 -0
- {npcsh-1.1.21/npcsh/npc_team/jinxs/incognide → npcsh-1.1.23/npcsh/npc_team/jinxs/lib/utils}/incognide.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/models.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/set.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/setup.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/shh.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/switch.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/switches.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/sync.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/teamviz.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/usage.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/verbose.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/arxiv.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/git.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/guac.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/memories.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/nql.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/papers.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/pti.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/reattach.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/spool.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/team.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/vixynt.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/wander.jinx +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/kadiefa.png +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/npcsh_sibiji.png +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/plonk.png +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/plonkjr.png +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/sibiji.png +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/spool.png +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/yap.png +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/parsing.py +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/plonk.py +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/pti.py +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/salmon_simulation.py +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/spool.py +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/ui.py +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/wander.py +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh.egg-info/dependency_links.txt +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh.egg-info/entry_points.txt +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/npcsh.egg-info/top_level.txt +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/project/__init__.py +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/setup.cfg +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/tests/test_config.py +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/tests/test_jinxs.py +0 -0
- {npcsh-1.1.21 → npcsh-1.1.23}/tests/test_tool_routing.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: npcsh
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.23
|
|
4
4
|
Summary: npcsh is a command-line toolkit for using AI agents in novel ways.
|
|
5
5
|
Home-page: https://github.com/NPC-Worldwide/npcsh
|
|
6
6
|
Author: Christopher Agostino
|
|
@@ -47,6 +47,7 @@ Requires-Dist: mcp
|
|
|
47
47
|
Provides-Extra: lite
|
|
48
48
|
Requires-Dist: anthropic; extra == "lite"
|
|
49
49
|
Requires-Dist: openai; extra == "lite"
|
|
50
|
+
Requires-Dist: ollama; extra == "lite"
|
|
50
51
|
Requires-Dist: google-generativeai; extra == "lite"
|
|
51
52
|
Requires-Dist: google-genai; extra == "lite"
|
|
52
53
|
Provides-Extra: local
|
|
@@ -72,6 +73,7 @@ Requires-Dist: terminal-bench; extra == "bench"
|
|
|
72
73
|
Provides-Extra: all
|
|
73
74
|
Requires-Dist: anthropic; extra == "all"
|
|
74
75
|
Requires-Dist: openai; extra == "all"
|
|
76
|
+
Requires-Dist: ollama; extra == "all"
|
|
75
77
|
Requires-Dist: google-generativeai; extra == "all"
|
|
76
78
|
Requires-Dist: google-genai; extra == "all"
|
|
77
79
|
Requires-Dist: sentence_transformers; extra == "all"
|
|
@@ -108,46 +110,31 @@ Dynamic: summary
|
|
|
108
110
|
|
|
109
111
|
# npcsh
|
|
110
112
|
|
|
111
|
-
The NPC shell (`npcsh`) makes the most of multi-modal LLMs and agents through a powerful set of simple slash
|
|
113
|
+
The NPC shell (`npcsh`) makes the most of multi-modal LLMs and agents through a powerful set of simple slash commands and novel interactive modes, all from the comfort of the command line. Build teams of agents and schedule them on jobs, engineer context, and design custom interaction modes and Jinja Execution templates (Jinxs) for you and your agents to invoke, all managed scalably for organizations of any size through the NPC data layer.
|
|
112
114
|
|
|
113
115
|
To get started:
|
|
114
|
-
For users who want to mainly use models through APIs (`ollama`, `gemini`, `kimi`, `grok`, `deepseek`, `anthropic`, `openai`, `mistral`, or any others provided by litellm )
|
|
115
116
|
```bash
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
For users who want to use and fine-tune local models (this installs `diffusers`/`transformers`/`torch` stack so it is big):
|
|
117
|
+
# API providers (ollama, gemini, kimi, grok, deepseek, anthropic, openai, mistral, etc.)
|
|
118
|
+
pip install 'npcsh[lite]'
|
|
119
119
|
|
|
120
|
-
|
|
120
|
+
# Local models (diffusers/transformers/torch — large install)
|
|
121
121
|
pip install 'npcsh[local]'
|
|
122
|
-
```
|
|
123
|
-
|
|
124
122
|
|
|
125
|
-
|
|
126
|
-
```bash
|
|
123
|
+
# Voice mode (see OS-specific audio library instructions below)
|
|
127
124
|
pip install 'npcsh[yap]'
|
|
128
|
-
```
|
|
129
125
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
npcsh
|
|
126
|
+
# Everything
|
|
127
|
+
pip install 'npcsh[all]'
|
|
133
128
|
```
|
|
134
|
-
and you will enter the NPC shell.
|
|
135
129
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
Additionally, the pip installation includes the following CLI tools available in bash: `npc` cli, `wander`, `spool`, `yap`, and `nql`. Bin jinxs in `npc_team/jinxs/bin/` are automatically registered as CLI commands.
|
|
130
|
+
Once installed, run `npcsh` to enter the NPC shell. The pip installation also provides the CLI tools `npc`, `wander`, `spool`, `yap`, and `nql` in your shell. Bin jinxs in `npc_team/jinxs/bin/` are automatically registered as additional CLI commands.
|
|
141
131
|
|
|
142
132
|
|
|
143
133
|
# Usage
|
|
144
|
-
- Get help with a task:
|
|
134
|
+
- Get help with a task:
|
|
145
135
|
```bash
|
|
146
|
-
npcsh>can you help me identify what process is listening on port 5337?
|
|
136
|
+
npcsh>can you help me identify what process is listening on port 5337?
|
|
147
137
|
```
|
|
148
|
-
<p align="center">
|
|
149
|
-
<img src="https://raw.githubusercontent.com/npc-worldwide/npcsh/main/test_data/port5337.png" alt="example of running npcsh to check what processes are listening on port 5337", width=600>
|
|
150
|
-
</p>
|
|
151
138
|
|
|
152
139
|
- Edit files
|
|
153
140
|
```bash
|
|
@@ -155,68 +142,84 @@ Additionally, the pip installation includes the following CLI tools available in
|
|
|
155
142
|
```
|
|
156
143
|
|
|
157
144
|
|
|
158
|
-
- **Search**
|
|
159
|
-
- search the web
|
|
145
|
+
- **Search & Knowledge**
|
|
160
146
|
```bash
|
|
161
|
-
/
|
|
162
|
-
|
|
147
|
+
/web_search "cerulean city" # Web search
|
|
148
|
+
/db_search "query" # Database search
|
|
149
|
+
/file_search "pattern" # File search
|
|
150
|
+
/memories # Interactive memory browser TUI
|
|
151
|
+
/kg # Interactive knowledge graph TUI
|
|
152
|
+
/kg sleep # Evolve the knowledge graph
|
|
153
|
+
/kg dream # Creative synthesis across domains
|
|
154
|
+
/nql # Database query TUI
|
|
163
155
|
```
|
|
164
156
|
<p align="center">
|
|
165
|
-
<img src="
|
|
157
|
+
<img src="gh_images/Screenshot%20from%202026-01-29%2015-02-52.png" alt="Web search results", width=600>
|
|
158
|
+
</p>
|
|
159
|
+
<p align="center">
|
|
160
|
+
<img src="gh_images/kg_facts_viewer.png" alt="Knowledge Graph TUI", width=500>
|
|
161
|
+
</p>
|
|
162
|
+
<p align="center">
|
|
163
|
+
<img src="gh_images/nql_menu.png" alt="NQL data browser", width=500>
|
|
164
|
+
<img src="gh_images/nql_table.png" alt="NQL table viewer", width=500>
|
|
166
165
|
</p>
|
|
167
|
-
|
|
168
|
-
- search approved memories
|
|
169
|
-
```bash
|
|
170
|
-
/search query="how to deploy python apps" memory=true
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
- search the knowledge graph
|
|
174
|
-
|
|
175
|
-
```bash
|
|
176
|
-
/search query="user preferences for database" kg=true
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
- execute a RAG search across files
|
|
180
166
|
|
|
181
|
-
|
|
182
|
-
/search --rag -f ~/docs/api.md,~/docs/config.yaml "authentication setup"
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
- brainblast search (searches many keyword combinations)
|
|
167
|
+
- **Computer Use**
|
|
186
168
|
|
|
187
169
|
```bash
|
|
188
|
-
/
|
|
170
|
+
/plonk
|
|
189
171
|
```
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
/search query="family vacations" sprovider="perplexity"
|
|
195
|
-
```
|
|
172
|
+
<p align="center">
|
|
173
|
+
<img src="gh_images/plonk.png" alt="Plonk GUI automation TUI — task entry" width=500>
|
|
174
|
+
<img src="gh_images/plonk_task.png" alt="Plonk GUI automation — completed flight search task" width=500>
|
|
175
|
+
</p>
|
|
196
176
|
|
|
197
|
-
- **
|
|
177
|
+
- **Generate Images with Vixynt**
|
|
198
178
|
|
|
199
179
|
```bash
|
|
200
|
-
/
|
|
180
|
+
/vixynt
|
|
201
181
|
```
|
|
182
|
+
<p align="center">
|
|
183
|
+
<img src="gh_images/vixynt.png" alt="Vixynt Image Creation Studio", width=500>
|
|
184
|
+
</p>
|
|
202
185
|
|
|
203
|
-
-
|
|
186
|
+
- Generate images directly
|
|
204
187
|
```bash
|
|
205
188
|
/vixynt 'generate an image of a rabbit eating ham in the brink of dawn' model='gpt-image-1' provider='openai'
|
|
206
189
|
```
|
|
207
190
|
<p align="center">
|
|
208
|
-
<img src="https://raw.githubusercontent.com/npc-worldwide/npcsh/main/test_data/rabbit.PNG" alt="a rabbit eating ham in the bring of dawn", width=
|
|
191
|
+
<img src="https://raw.githubusercontent.com/npc-worldwide/npcsh/main/test_data/rabbit.PNG" alt="a rabbit eating ham in the bring of dawn", width=350>
|
|
209
192
|
</p>
|
|
210
|
-
- **Generate
|
|
193
|
+
- **Generate Videos with Roll**
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
/roll
|
|
197
|
+
```
|
|
198
|
+
<p align="center">
|
|
199
|
+
<img src="gh_images/roll.png" alt="Roll Video Creation Studio" width=500>
|
|
200
|
+
</p>
|
|
201
|
+
|
|
202
|
+
- Generate videos directly
|
|
203
|
+
|
|
211
204
|
```bash
|
|
212
205
|
/roll 'generate a video of a hat riding a dog' veo-3.1-fast-generate-preview gemini
|
|
213
206
|
```
|
|
214
207
|
|
|
215
208
|
<p align="center">
|
|
216
|
-
<img src="https://raw.githubusercontent.com/NPC-Worldwide/npcsh/main/test_data/hatridingdog.gif" alt="video of a hat riding a dog", width=
|
|
209
|
+
<img src="https://raw.githubusercontent.com/NPC-Worldwide/npcsh/main/test_data/hatridingdog.gif" alt="video of a hat riding a dog", width=350>
|
|
217
210
|
</p>
|
|
218
211
|
|
|
219
|
-
- **
|
|
212
|
+
- **Multi-Agent Discussions**
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
/convene "Is the universe a simulation?" npcs=alicanto,corca,guac rounds=3
|
|
216
|
+
```
|
|
217
|
+
<p align="center">
|
|
218
|
+
<img src="gh_images/convene.png" alt="Convene — multi-NPC structured discussion" width=500>
|
|
219
|
+
<img src="gh_images/convene_convene.png" alt="Convene — live discussion view" width=500>
|
|
220
|
+
</p>
|
|
221
|
+
|
|
222
|
+
- **Serve an NPC Team**
|
|
220
223
|
```bash
|
|
221
224
|
/serve --port 5337 --cors='http://localhost:5137/'
|
|
222
225
|
```
|
|
@@ -233,41 +236,19 @@ Additionally, the pip installation includes the following CLI tools available in
|
|
|
233
236
|
```bash
|
|
234
237
|
/ots
|
|
235
238
|
```
|
|
236
|
-
- **
|
|
239
|
+
- **MCP-powered agentic shell**: full tabbed TUI with chat, tool management, and server controls.
|
|
237
240
|
```bash
|
|
238
|
-
/corca
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
- **Build an NPC Team**:
|
|
242
|
-
|
|
243
|
-
``` bash
|
|
244
|
-
npc build flask --output ./dist --port 5337
|
|
245
|
-
npc build docker --output ./deploy
|
|
246
|
-
npc build cli --output ./bin
|
|
247
|
-
npc build static --api_url https://api.example.com
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
- **NQL - AI-Powered SQL Models**:
|
|
251
|
-
Run SQL models with embedded AI transformations using NPC agents:
|
|
252
|
-
```bash
|
|
253
|
-
# List available models
|
|
254
|
-
nql show=1
|
|
255
|
-
|
|
256
|
-
# Run all models in dependency order
|
|
257
|
-
nql
|
|
258
|
-
|
|
259
|
-
# Run a specific model
|
|
260
|
-
nql model=daily_summary
|
|
261
|
-
|
|
262
|
-
# Schedule with cron (runs daily at 6am)
|
|
263
|
-
nql install_cron="0 6 * * *"
|
|
241
|
+
/corca
|
|
242
|
+
/corca mcp_server_path=/path/to/server.py
|
|
264
243
|
```
|
|
265
244
|
|
|
266
|
-
- **
|
|
245
|
+
- **Build an NPC Team**: Generate deployment artifacts for your team.
|
|
267
246
|
```bash
|
|
268
|
-
|
|
247
|
+
/build target=flask outdir=./dist port=5337
|
|
248
|
+
/build target=docker outdir=./deploy
|
|
249
|
+
/build target=cli outdir=./bin
|
|
250
|
+
/build target=static outdir=./site
|
|
269
251
|
```
|
|
270
|
-
Generates network and ordered views showing NPCs, jinxs, and their relationships.
|
|
271
252
|
|
|
272
253
|
# NPC Data Layer
|
|
273
254
|
|
|
@@ -306,17 +287,123 @@ jinxs:
|
|
|
306
287
|
- lib/core/python
|
|
307
288
|
- lib/core/sh
|
|
308
289
|
- lib/core/edit_file
|
|
309
|
-
- lib/core/
|
|
290
|
+
- lib/core/load_file
|
|
310
291
|
```
|
|
311
292
|
|
|
312
293
|
When an NPC is invoked, they can only use the jinxs assigned to them. This creates **specialization**:
|
|
313
|
-
- `corca` has coding tools (python, sh, edit_file)
|
|
314
|
-
- `plonk` has browser automation (browser_action, screenshot)
|
|
315
|
-
- `alicanto` has research tools (
|
|
294
|
+
- `corca` has coding tools (python, sh, edit_file, load_file)
|
|
295
|
+
- `plonk` has browser automation (browser_action, screenshot, click)
|
|
296
|
+
- `alicanto` has research tools (python, sh, load_file)
|
|
316
297
|
- `frederic` has generation tools (vixynt, roll, sample)
|
|
317
298
|
|
|
299
|
+
<p align="center">
|
|
300
|
+
<img src="gh_images/team_npc.png" alt="NPC team browser", width=700>
|
|
301
|
+
</p>
|
|
302
|
+
|
|
318
303
|
The forenpc (orchestrator) can delegate to any team member based on their specialization.
|
|
319
304
|
|
|
305
|
+
## Skills — Knowledge Content for Agents
|
|
306
|
+
|
|
307
|
+
Skills are jinxs that serve instructional content instead of executing code. They use the `skill.jinx` sub-jinx (just like code jinxs use `python.jinx` or `sh.jinx`) and return sections of methodology on demand.
|
|
308
|
+
|
|
309
|
+
Because skills are jinxs, they're assigned to agents the same way — through the `jinxs:` list in `.npc` files:
|
|
310
|
+
|
|
311
|
+
```yaml
|
|
312
|
+
# reviewer.npc
|
|
313
|
+
name: reviewer
|
|
314
|
+
primary_directive: "You review code and provide feedback."
|
|
315
|
+
jinxs:
|
|
316
|
+
- lib/core/sh
|
|
317
|
+
- lib/core/python
|
|
318
|
+
- skills/code-review
|
|
319
|
+
- skills/debugging
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
The agent sees `code-review` and `debugging` in its tool catalog alongside `sh` and `python`. When it encounters a review task, it calls the skill to get methodology, then uses `sh` or `python` to do the actual work.
|
|
323
|
+
|
|
324
|
+
### Two Authoring Formats
|
|
325
|
+
|
|
326
|
+
**SKILL.md folder** — a folder with a `SKILL.md` file (folder name = skill name):
|
|
327
|
+
|
|
328
|
+
```
|
|
329
|
+
jinxs/skills/debugging/
|
|
330
|
+
SKILL.md # YAML frontmatter + ## sections
|
|
331
|
+
scripts/ # Optional
|
|
332
|
+
references/ # Optional
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
```markdown
|
|
336
|
+
---
|
|
337
|
+
description: Debugging methodology. Use when asked to debug or troubleshoot.
|
|
338
|
+
---
|
|
339
|
+
# Debugging
|
|
340
|
+
|
|
341
|
+
## reproduce
|
|
342
|
+
First, reproduce the bug consistently.
|
|
343
|
+
Find the minimal reproduction case.
|
|
344
|
+
|
|
345
|
+
## isolate
|
|
346
|
+
Binary search through the codebase (git bisect).
|
|
347
|
+
Comment out components to isolate the cause.
|
|
348
|
+
|
|
349
|
+
## fix
|
|
350
|
+
Fix the root cause, not the symptom.
|
|
351
|
+
Add a test that fails without the fix.
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
**`.jinx` file** — a regular jinx with `engine: skill` steps:
|
|
355
|
+
|
|
356
|
+
```yaml
|
|
357
|
+
jinx_name: git-workflow
|
|
358
|
+
description: "Git workflow best practices. [Sections: branching, commits, merging]"
|
|
359
|
+
inputs:
|
|
360
|
+
- section: all
|
|
361
|
+
steps:
|
|
362
|
+
- engine: skill
|
|
363
|
+
skill_name: git-workflow
|
|
364
|
+
skill_description: Git workflow best practices.
|
|
365
|
+
sections:
|
|
366
|
+
branching: |
|
|
367
|
+
Use feature branches off main/develop.
|
|
368
|
+
Name branches: feature/, fix/, chore/
|
|
369
|
+
commits: |
|
|
370
|
+
Imperative summary under 72 chars.
|
|
371
|
+
One logical change per commit.
|
|
372
|
+
merging: |
|
|
373
|
+
Prefer squash merges for feature branches.
|
|
374
|
+
Delete branches after merging.
|
|
375
|
+
scripts_json: '[]'
|
|
376
|
+
references_json: '[]'
|
|
377
|
+
assets_json: '[]'
|
|
378
|
+
section: '{{section}}'
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
### Using Skills
|
|
382
|
+
|
|
383
|
+
In npcsh, skills work as slash commands like any jinx:
|
|
384
|
+
|
|
385
|
+
```bash
|
|
386
|
+
/debugging # All sections
|
|
387
|
+
/debugging -s reproduce # Just the reproduce section
|
|
388
|
+
/debugging -s list # Available section names
|
|
389
|
+
/code-review -s correctness # Just the correctness section
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
In the agent loop, the agent calls skills automatically when relevant — requesting specific sections to minimize token usage (progressive disclosure).
|
|
393
|
+
|
|
394
|
+
### Importing External Skills
|
|
395
|
+
|
|
396
|
+
Add `SKILLS_DIRECTORY` to your `.ctx` file to load skills from an external directory:
|
|
397
|
+
|
|
398
|
+
```yaml
|
|
399
|
+
model: llama3.2
|
|
400
|
+
provider: ollama
|
|
401
|
+
forenpc: lead-dev
|
|
402
|
+
SKILLS_DIRECTORY: ~/shared-skills
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
All `SKILL.md` folders and `.jinx` skill files in that directory are loaded alongside the team's own jinxs. This lets you maintain a single skills library shared across multiple teams.
|
|
406
|
+
|
|
320
407
|
## Delegation with Review Loop
|
|
321
408
|
|
|
322
409
|
The `/delegate` jinx sends a task to another NPC with automatic review and feedback:
|
|
@@ -347,6 +434,15 @@ The `/delegate` jinx sends a task to another NPC with automatic review and feedb
|
|
|
347
434
|
task complete
|
|
348
435
|
```
|
|
349
436
|
|
|
437
|
+
## Deep Research with Alicanto
|
|
438
|
+
|
|
439
|
+
The `/alicanto` mode runs multi-agent deep research — generates hypotheses, assigns persona-based sub-agents, runs iterative tool-calling loops, and synthesizes findings.
|
|
440
|
+
|
|
441
|
+
<p align="center">
|
|
442
|
+
<img src="gh_images/alicanto.png" alt="Alicanto deep research mode", width=500>
|
|
443
|
+
<img src="gh_images/alicanto_2.png" alt="Alicanto execution phase", width=500>
|
|
444
|
+
</p>
|
|
445
|
+
|
|
350
446
|
## Convening Multi-NPC Discussions
|
|
351
447
|
|
|
352
448
|
The `/convene` jinx brings multiple NPCs together for a structured discussion:
|
|
@@ -391,6 +487,10 @@ This generates two views:
|
|
|
391
487
|
|
|
392
488
|
Shared jinxs (like `python` used by 7 NPCs) appear with thicker connection bundles, helping you identify common capabilities and potential consolidation opportunities.
|
|
393
489
|
|
|
490
|
+
<p align="center">
|
|
491
|
+
<img src="gh_images/teamviz.png" alt="Team structure visualization", width=700>
|
|
492
|
+
</p>
|
|
493
|
+
|
|
394
494
|
# NQL - SQL Models with AI Functions
|
|
395
495
|
|
|
396
496
|
NQL (NPC Query Language) enables AI-powered data transformations directly in SQL, similar to dbt but with embedded LLM calls. Create `.sql` files in `npc_team/models/` that combine standard SQL with `nql.*` AI function calls, then run them on a schedule to build analytical tables enriched with AI insights.
|
|
@@ -550,167 +650,213 @@ The NPC responds using their persona and available jinxs, then control returns t
|
|
|
550
650
|
|
|
551
651
|
| NPC | Specialty | Key Jinxs |
|
|
552
652
|
|-----|-----------|-----------|
|
|
553
|
-
| `sibiji` | Orchestrator/coordinator | delegate, convene,
|
|
554
|
-
| `corca` | Coding and development | python, sh, edit_file,
|
|
555
|
-
| `plonk` | Browser/GUI automation | browser_action, screenshot, click |
|
|
556
|
-
| `alicanto` | Research and analysis |
|
|
557
|
-
| `frederic` | Math, physics, music | python, vixynt, roll, sample
|
|
558
|
-
| `guac` | General assistant | python, sh,
|
|
559
|
-
| `kadiefa` | Creative generation | vixynt
|
|
653
|
+
| `sibiji` | Orchestrator/coordinator | delegate, convene, python, sh |
|
|
654
|
+
| `corca` | Coding and development | python, sh, edit_file, load_file |
|
|
655
|
+
| `plonk` | Browser/GUI automation | browser_action, screenshot, click, key_press |
|
|
656
|
+
| `alicanto` | Research and analysis | python, sh, load_file |
|
|
657
|
+
| `frederic` | Math, physics, music | python, vixynt, roll, sample |
|
|
658
|
+
| `guac` | General assistant | python, sh, edit_file, load_file |
|
|
659
|
+
| `kadiefa` | Creative generation | vixynt |
|
|
660
|
+
|
|
661
|
+
<p align="center">
|
|
662
|
+
<img src="gh_images/npc_menu.png" alt="NPC menu", width=700>
|
|
663
|
+
</p>
|
|
560
664
|
|
|
561
665
|
# Jinxs (Macros/Tools)
|
|
562
666
|
|
|
563
|
-
Jinxs are reusable tools that
|
|
667
|
+
Jinxs are reusable tools that users and agents can invoke. They're activated with `/<jinx_name> ...` in npcsh or via the `npc` CLI in bash. For converting any `/<command>` in npcsh to bash, replace `/` with `npc `:
|
|
564
668
|
|
|
565
669
|
```bash
|
|
566
670
|
# In npcsh:
|
|
567
|
-
/
|
|
671
|
+
/sample "tell me a story about a sunset over the mountains"
|
|
568
672
|
|
|
569
673
|
# In bash:
|
|
570
|
-
npc
|
|
674
|
+
npc sample "a sunset over mountains"
|
|
571
675
|
```
|
|
572
676
|
|
|
573
|
-
##
|
|
677
|
+
## All Commands
|
|
574
678
|
|
|
575
|
-
### Orchestration & Research
|
|
576
679
|
| Command | Description |
|
|
577
680
|
|---------|-------------|
|
|
578
|
-
| `/alicanto` |
|
|
579
|
-
| `/
|
|
580
|
-
| `/
|
|
581
|
-
| `/
|
|
681
|
+
| `/alicanto` | Multi-agent deep research — hypotheses, persona sub-agents, paper writing |
|
|
682
|
+
| `/corca` | MCP-powered agentic shell — chat, tool management, server controls |
|
|
683
|
+
| `/convene` | Multi-NPC structured discussion with live trains of thought |
|
|
684
|
+
| `/spool` | Chat session with fresh context, file attachments, and RAG |
|
|
685
|
+
| `/pti` | Pardon-the-interruption reasoning mode |
|
|
686
|
+
| `/plonk` | GUI automation with vision |
|
|
687
|
+
| `/wander` | Exploratory thinking with temperature shifts |
|
|
688
|
+
| `/yap` | Voice chat — continuous VAD listening, auto-transcribe, TTS |
|
|
689
|
+
| `/guac` | Interactive Python REPL with LLM code generation |
|
|
690
|
+
| `/kg` | Knowledge graph browser — facts, concepts, links, search, graph |
|
|
691
|
+
| `/kg sleep` | Evolve knowledge graph through consolidation |
|
|
692
|
+
| `/kg dream` | Creative synthesis across KG domains |
|
|
693
|
+
| `/memories` | Memory browser — browse, approve, reject, filter by status |
|
|
694
|
+
| `/nql` | Database browser and NQL SQL model runner |
|
|
695
|
+
| `/papers` | Multi-platform research paper browser |
|
|
696
|
+
| `/arxiv` | ArXiv paper browser |
|
|
697
|
+
| `/git` | Git integration TUI |
|
|
698
|
+
| `/build` | Build team to deployable format (flask, docker, cli, static) |
|
|
699
|
+
| `/team` | Team config browser — context, NPCs, jinxs |
|
|
700
|
+
| `/config` | Interactive config editor |
|
|
701
|
+
| `/reattach` | Resume previous conversation sessions |
|
|
702
|
+
| `/delegate` | Delegate task to NPC with review loop |
|
|
703
|
+
| `/web_search` | Web search |
|
|
704
|
+
| `/db_search` | Database search |
|
|
705
|
+
| `/file_search` | File search |
|
|
706
|
+
| `/vixynt` | Generate/edit images |
|
|
707
|
+
| `/roll` | Video creation studio |
|
|
708
|
+
| `/crond` | System task manager (cron, daemons, processes) |
|
|
709
|
+
| `/sample` | Context-free LLM prompt |
|
|
710
|
+
| `/serve` | Serve NPC team as API with OpenAI-compatible endpoints |
|
|
711
|
+
| `/compile` | Compile NPC profiles |
|
|
712
|
+
| `/set` | Set config values — `/set model gemma3:4b`, `/set provider ollama` |
|
|
713
|
+
| `/teamviz` | Visualize team structure |
|
|
714
|
+
| `/ots` | Screenshot analysis |
|
|
715
|
+
| `/models` | Browse available models |
|
|
716
|
+
| `/chat` | Switch to chat mode |
|
|
717
|
+
| `/cmd` | Switch to command mode |
|
|
718
|
+
| `/switch` | Switch NPC |
|
|
719
|
+
| `/sync` | Sync npc_team files from repo to home |
|
|
720
|
+
|
|
721
|
+
Most commands launch full-screen TUIs — just type and interact. For CLI usage with `npc`, common flags include `--model (-mo)`, `--provider (-pr)`, `--npc (-np)`, and `--temperature (-t)`. Run `npc --help` for the full list.
|
|
722
|
+
|
|
723
|
+
### `/wander` — Creative Exploration
|
|
724
|
+
Wander mode shifts the model's temperature up and down as it explores a problem, producing divergent ideas followed by convergent synthesis. The live TUI dashboard shows the current temperature, accumulated thoughts, and a running summary.
|
|
582
725
|
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
| `/vixynt` | Generate/edit images. Usage: `/vixynt 'description' --igmodel gpt-image-1 --igprovider openai` |
|
|
587
|
-
| `/roll` | Generate videos. Usage: `/roll 'description' --vgmodel veo-3.1-fast-generate-preview --vgprovider gemini` |
|
|
588
|
-
| `/sample` | Context-free LLM prompt. Usage: `/sample 'question' -m gpt-4o-mini --temp 0.7` |
|
|
726
|
+
<p align="center">
|
|
727
|
+
<img src="gh_images/wander.png" alt="Wander TUI", width=500>
|
|
728
|
+
</p>
|
|
589
729
|
|
|
590
|
-
###
|
|
591
|
-
|
|
592
|
-
|---------|-------------|
|
|
593
|
-
| `/spool` | Interactive chat with fresh context/RAG. Usage: `/spool --attachments 'file1,file2' -n corca` |
|
|
594
|
-
| `/yap` | Voice chat mode. Usage: `/yap -n frederic` |
|
|
595
|
-
| `/pti` | Pardon-the-interruption reasoning mode. Usage: `/pti` |
|
|
596
|
-
| `/plonk` | GUI automation with vision. Usage: `/plonk 'click the submit button'` |
|
|
597
|
-
| `/wander` | Exploratory thinking with temperature shifts. Usage: `/wander 'query' --model deepseek-r1:32b` |
|
|
730
|
+
### `/guac` — Interactive Python REPL
|
|
731
|
+
Guac is an LLM-powered Python REPL with a live variable inspector, DataFrame viewer, and inline code execution. Describe what you want in natural language and the model writes and runs the code. Variables persist across turns.
|
|
598
732
|
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
| `/nql` | Run NQL SQL models. Usage: `/nql show=1`, `/nql model=daily_summary` |
|
|
603
|
-
| `/teamviz` | Visualize team structure. Usage: `/teamviz save=output.png` |
|
|
604
|
-
| `/ots` | Screenshot analysis. Usage: `/ots` then select area |
|
|
605
|
-
| `/sleep` | Evolve knowledge graph. Usage: `/sleep --ops link_facts,deepen` |
|
|
606
|
-
| `/kg_search` | Search knowledge graph with multiple modes. Usage: `/kg_search query mode=hybrid depth=2` |
|
|
607
|
-
| `/mem_search` | Search approved memories. Usage: `/mem_search query status=approved top_k=10` |
|
|
608
|
-
| `/mem_review` | Review pending memories interactively. Usage: `/mem_review limit=50` |
|
|
609
|
-
|
|
610
|
-
### System & Config
|
|
611
|
-
| Command | Description |
|
|
612
|
-
|---------|-------------|
|
|
613
|
-
| `/build` | Build team to deployable format. Usage: `/build docker --output ./deploy` |
|
|
614
|
-
| `/serve` | Full agentic server with NPC management, jinx controls, and OpenAI-compatible endpoints. Usage: `/serve --port 5337` |
|
|
615
|
-
| `/compile` | Compile NPC profiles. Usage: `/compile path/to/npc` |
|
|
616
|
-
| `/init` | Initialize NPC project. Usage: `/init` |
|
|
617
|
-
| `/set` | Set config values. Usage: `/set model gemma3:4b`, `/set provider ollama` |
|
|
618
|
-
| `/help` | Show help. Usage: `/help` |
|
|
619
|
-
| `/jinxs` | List available jinxs. Usage: `/jinxs` |
|
|
620
|
-
| `/incognide` | Launch Incognide GUI. Usage: `/incognide` |
|
|
621
|
-
| `/trigger` | Set up system triggers. Usage: `/trigger 'description' -m gemma3:27b` |
|
|
622
|
-
|
|
623
|
-
## Common Command-Line Flags:
|
|
624
|
-
|
|
625
|
-
```
|
|
626
|
-
Flag Shorthand | Flag Shorthand | Flag Shorthand | Flag Shorthand
|
|
627
|
-
------------------------------ | ------------------------------ | ------------------------------ | ------------------------------
|
|
628
|
-
--attachments (-a) | --height (-h) | --num_npcs (-num_n) | --team (-tea)
|
|
629
|
-
--config_dir (-con) | --igmodel (-igm) | --output_file (-o) | --temperature (-t)
|
|
630
|
-
--cors (-cor) | --igprovider (-igp) | --plots_dir (-pl) | --top_k
|
|
631
|
-
--creativity (-cr) | --lang (-l) | --port (-po) | --top_p
|
|
632
|
-
--depth (-d) | --max_tokens (-ma) | --provider (-pr) | --vmodel (-vm)
|
|
633
|
-
--emodel (-em) | --messages (-me) | --refresh_period (-re) | --vprovider (-vp)
|
|
634
|
-
--eprovider (-ep) | --model (-mo) | --rmodel (-rm) | --width (-w)
|
|
635
|
-
--exploration (-ex) | --npc (-np) | --rprovider (-rp) |
|
|
636
|
-
--format (-f) | --num_frames (-num_f) | --sprovider (-s) |
|
|
637
|
-
```
|
|
733
|
+
<p align="center">
|
|
734
|
+
<img src="gh_images/guac_session.png" alt="Guac Python REPL", width=500>
|
|
735
|
+
</p>
|
|
638
736
|
|
|
639
|
-
|
|
737
|
+
### `/arxiv` — Paper Browser
|
|
738
|
+
Browse, search, and read arXiv papers from the terminal. The TUI shows search results, full paper metadata, and rendered abstracts with j/k navigation and Enter to drill in.
|
|
640
739
|
|
|
641
|
-
|
|
740
|
+
<p align="center">
|
|
741
|
+
<img src="gh_images/arxiv_search.png" alt="ArXiv search", width=500>
|
|
742
|
+
<img src="gh_images/arxiv_paper.png" alt="ArXiv paper view", width=500>
|
|
743
|
+
</p>
|
|
744
|
+
<p align="center">
|
|
745
|
+
<img src="gh_images/arxiv_abs.png" alt="ArXiv abstract view", width=700>
|
|
746
|
+
</p>
|
|
642
747
|
|
|
643
|
-
###
|
|
748
|
+
### `/reattach` — Session Browser
|
|
749
|
+
Resume previous conversation sessions. The TUI lists past sessions with timestamps and previews — select one to pick up where you left off.
|
|
644
750
|
|
|
645
|
-
|
|
751
|
+
<p align="center">
|
|
752
|
+
<img src="gh_images/Screenshot%20from%202026-01-29%2014-43-20.png" alt="Reattach session browser", width=500>
|
|
753
|
+
</p>
|
|
646
754
|
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
3. **human-rejected** - Rejected (used as negative examples)
|
|
650
|
-
4. **human-edited** - Modified by user before approval
|
|
651
|
-
5. **skipped** - Deferred for later review
|
|
755
|
+
### `/models` — Model Browser
|
|
756
|
+
Browse all available models across providers (Ollama, OpenAI, Anthropic, etc.), see which are currently active, and set new defaults interactively.
|
|
652
757
|
|
|
653
|
-
|
|
758
|
+
<p align="center">
|
|
759
|
+
<img src="gh_images/models.png" alt="Models browser", width=500>
|
|
760
|
+
</p>
|
|
761
|
+
|
|
762
|
+
### `/roll` — Video Creation Studio
|
|
763
|
+
Interactive TUI for generating videos with parameter controls. Edit prompt, model, provider, dimensions, and frame count, then generate. Includes a gallery browser for previously generated videos.
|
|
654
764
|
|
|
655
765
|
```bash
|
|
656
|
-
#
|
|
657
|
-
/
|
|
658
|
-
|
|
659
|
-
|
|
766
|
+
/roll # Open interactive TUI
|
|
767
|
+
/roll "a sunset" # Generate video directly (one-shot mode)
|
|
768
|
+
```
|
|
769
|
+
|
|
770
|
+
<p align="center">
|
|
771
|
+
<img src="gh_images/roll.png" alt="Roll Video Creation Studio" width=500>
|
|
772
|
+
</p>
|
|
660
773
|
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
774
|
+
### `/config` — Configuration Editor
|
|
775
|
+
Interactive TUI for editing `~/.npcshrc` settings — models, providers, modes, and toggles. Navigate with j/k, edit text fields, toggle booleans, and cycle choices.
|
|
776
|
+
|
|
777
|
+
```bash
|
|
778
|
+
/config
|
|
664
779
|
```
|
|
665
780
|
|
|
666
|
-
|
|
781
|
+
<p align="center">
|
|
782
|
+
<img src="gh_images/config.png" alt="Config editor TUI" width=500>
|
|
783
|
+
</p>
|
|
667
784
|
|
|
668
|
-
|
|
785
|
+
### `/crond` — System Task Manager
|
|
786
|
+
Multi-tab TUI for managing cron jobs, systemd user daemons, and system processes. Create new cron jobs and daemons using natural language, start/stop/restart services, kill processes, and monitor resource usage.
|
|
669
787
|
|
|
670
788
|
```bash
|
|
671
|
-
|
|
672
|
-
|
|
789
|
+
/crond
|
|
790
|
+
```
|
|
673
791
|
|
|
674
|
-
|
|
675
|
-
/
|
|
792
|
+
<p align="center">
|
|
793
|
+
<img src="gh_images/crond.png" alt="Crond Cron tab" width=500>
|
|
794
|
+
<img src="gh_images/crondaemon.png" alt="Crond Daemons tab" width=500>
|
|
795
|
+
</p>
|
|
796
|
+
<p align="center">
|
|
797
|
+
<img src="gh_images/cron_processes.png" alt="Crond Processes tab" width=500>
|
|
798
|
+
</p>
|
|
676
799
|
|
|
677
|
-
#
|
|
678
|
-
/kg_search python mode=link depth=3 # Traverse graph links
|
|
800
|
+
# Memory & Knowledge Graph
|
|
679
801
|
|
|
680
|
-
|
|
681
|
-
/kg_search python mode=all # All methods combined
|
|
802
|
+
`npcsh` maintains a memory lifecycle system that allows agents to learn and grow from past interactions. Memories progress through stages and can be incorporated into a knowledge graph for advanced retrieval.
|
|
682
803
|
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
```
|
|
804
|
+
### Memory Lifecycle
|
|
805
|
+
|
|
806
|
+
Memories are extracted from conversations and follow this lifecycle:
|
|
687
807
|
|
|
688
|
-
|
|
808
|
+
1. **pending_approval** - New memories awaiting review
|
|
809
|
+
2. **human-approved** - Approved and ready for KG integration
|
|
810
|
+
3. **human-rejected** - Rejected (used as negative examples)
|
|
811
|
+
4. **human-edited** - Modified by user before approval
|
|
812
|
+
5. **skipped** - Deferred for later review
|
|
689
813
|
|
|
690
|
-
|
|
814
|
+
### Memories
|
|
815
|
+
|
|
816
|
+
The `/memories` command opens an interactive TUI for browsing, reviewing, and managing memories:
|
|
691
817
|
|
|
692
818
|
```bash
|
|
693
|
-
|
|
694
|
-
|
|
819
|
+
/memories
|
|
820
|
+
```
|
|
695
821
|
|
|
696
|
-
|
|
697
|
-
|
|
822
|
+
The TUI provides:
|
|
823
|
+
- **Tab-based filtering** — switch between All, Pending, Approved, Rejected, etc.
|
|
824
|
+
- **Approve/Reject** — press `a` to approve, `x` to reject
|
|
825
|
+
- **Preview** — press Enter to see full memory content
|
|
826
|
+
- **Session stats** — tracks approvals/rejections during session
|
|
698
827
|
|
|
699
|
-
|
|
700
|
-
/
|
|
828
|
+
<p align="center">
|
|
829
|
+
<img src="gh_images/Screenshot%20from%202026-01-29%2016-03-08.png" alt="Memory Browser TUI", width=700>
|
|
830
|
+
</p>
|
|
831
|
+
|
|
832
|
+
### Knowledge Graph
|
|
701
833
|
|
|
702
|
-
|
|
703
|
-
/sleep backfill=true dream=true
|
|
834
|
+
The `/kg` command opens an interactive browser for exploring the knowledge graph:
|
|
704
835
|
|
|
705
|
-
|
|
706
|
-
/
|
|
836
|
+
```bash
|
|
837
|
+
/kg # Browse facts, concepts, links, search, graph view
|
|
838
|
+
/kg sleep # Evolve KG through consolidation
|
|
839
|
+
/kg dream # Creative synthesis across domains
|
|
840
|
+
/kg evolve # Alias for sleep
|
|
841
|
+
/kg sleep backfill=true # Import approved memories first, then evolve
|
|
842
|
+
/kg sleep ops=prune,deepen,abstract # Specific operations
|
|
707
843
|
```
|
|
708
844
|
|
|
709
|
-
**
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
845
|
+
The TUI browser has 5 tabs: **Facts**, **Concepts**, **Links**, **Search**, and **Graph** — navigate with Tab, j/k, and Enter to drill into details.
|
|
846
|
+
|
|
847
|
+
<p align="center">
|
|
848
|
+
<img src="gh_images/kg_facts_viewer.png" alt="Knowledge Graph Facts", width=500>
|
|
849
|
+
<img src="gh_images/kg_links.png" alt="Knowledge Graph Links", width=500>
|
|
850
|
+
</p>
|
|
851
|
+
<p align="center">
|
|
852
|
+
<img src="gh_images/kg_viewer.png" alt="Knowledge Graph Viewer", width=700>
|
|
853
|
+
</p>
|
|
854
|
+
|
|
855
|
+
**Evolution operations** (via `/kg sleep` or `/sleep`):
|
|
856
|
+
- **prune** — Remove redundant or low-value facts
|
|
857
|
+
- **deepen** — Add detail to existing facts
|
|
858
|
+
- **abstract** — Create higher-level generalizations
|
|
859
|
+
- **link** — Connect related facts and concepts
|
|
714
860
|
|
|
715
861
|
### Environment Variables
|
|
716
862
|
|
|
@@ -722,28 +868,20 @@ export NPCSH_BUILD_KG=1
|
|
|
722
868
|
export NPCSH_DB_PATH=~/npcsh_history.db
|
|
723
869
|
```
|
|
724
870
|
|
|
725
|
-
|
|
726
|
-
To see more about how to use the jinxs and modes in the NPC Shell, read the docs at [npc-shell.readthedocs.io](https://npc-shell.readthedocs.io/en/latest/)
|
|
727
|
-
|
|
871
|
+
Full documentation: [npc-shell.readthedocs.io](https://npc-shell.readthedocs.io/en/latest/)
|
|
728
872
|
|
|
729
|
-
|
|
730
|
-
- `npcsh` works with local and enterprise LLM providers through its LiteLLM integration, allowing users to run inference from Ollama, LMStudio, vLLM, MLX, OpenAI, Anthropic, Gemini, and Deepseek, making it a versatile tool for both simple commands and sophisticated AI-driven tasks.
|
|
873
|
+
`npcsh` works with local and enterprise LLM providers through LiteLLM — Ollama, LMStudio, vLLM, MLX, OpenAI, Anthropic, Gemini, Deepseek, and more.
|
|
731
874
|
|
|
732
875
|
## Incognide
|
|
733
|
-
Incognide is a desktop workspace environment for integrating LLMs into your workflows in an organized and seamless manner. See the source code for Incognide [here](https://github.com/npc-worldwide/incognide). Download the executables at [our website](https://enpisi.com/downloads). For the most up to date development version, you can use Incognide by invoking it in npcsh
|
|
734
876
|
|
|
735
|
-
|
|
736
|
-
/incognide
|
|
737
|
-
```
|
|
738
|
-
which will download and set up and serve the Incognide application within your `~/.npcsh` folder. It requires `npm` and `node` to work, and of course npcpy !
|
|
739
|
-
|
|
740
|
-
## Mailing List and Community
|
|
741
|
-
Interested to stay in the loop and to hear the latest and greatest about `npcpy`, `npcsh`, and Incognide? Be sure to sign up for the [newsletter](https://forms.gle/n1NzQmwjsV4xv1B2A)!
|
|
877
|
+
[Incognide](https://github.com/npc-worldwide/incognide) is a desktop workspace environment for integrating LLMs into your workflows. [Download executables](https://enpisi.com/downloads) or run `/incognide` in npcsh to install and serve it locally (requires `npm` and `node`).
|
|
742
878
|
|
|
743
|
-
|
|
744
|
-
## Support
|
|
745
|
-
If you appreciate the work here, [consider supporting NPC Worldwide with a monthly donation](https://buymeacoffee.com/npcworldwide), [buying NPC-WW themed merch](https://enpisi.com/shop), [using and subscribing to Lavanzaro](lavanzaro.com),s or hiring us to help you explore how to use the NPC Toolkit and AI tools to help your business or research team, please reach out to info@npcworldwi.de .
|
|
879
|
+
## Community & Support
|
|
746
880
|
|
|
881
|
+
- [Newsletter](https://forms.gle/n1NzQmwjsV4xv1B2A) — latest updates on `npcpy`, `npcsh`, and Incognide
|
|
882
|
+
- [Discord](https://discord.gg/VvYVT5YC) — discuss ideas for NPC tools
|
|
883
|
+
- [Buy us a coffee](https://buymeacoffee.com/npcworldwide) | [Merch](https://enpisi.com/shop) | [Lavanzaro](https://lavanzaro.com)
|
|
884
|
+
- For consulting: info@npcworldwi.de
|
|
747
885
|
|
|
748
886
|
## Installation
|
|
749
887
|
`npcsh` is available on PyPI and can be installed using pip. Before installing, make sure you have the necessary dependencies installed on your system. Below are the instructions for installing such dependencies on Linux, Mac, and Windows. If you find any other dependencies that are needed, please let us know so we can update the installation instructions to be more accommodating.
|
|
@@ -761,10 +899,6 @@ sudo apt-get install libcairo2-dev
|
|
|
761
899
|
sudo apt-get install libgirepository1.0-dev
|
|
762
900
|
sudo apt-get install ffmpeg
|
|
763
901
|
|
|
764
|
-
# for triggers
|
|
765
|
-
sudo apt install inotify-tools
|
|
766
|
-
|
|
767
|
-
|
|
768
902
|
#And if you don't have ollama installed, use this:
|
|
769
903
|
curl -fsSL https://ollama.com/install.sh | sh
|
|
770
904
|
|
|
@@ -796,10 +930,6 @@ brew install portaudio
|
|
|
796
930
|
brew install ffmpeg
|
|
797
931
|
brew install pygobject3
|
|
798
932
|
|
|
799
|
-
# for triggers
|
|
800
|
-
brew install inotify-tools
|
|
801
|
-
|
|
802
|
-
|
|
803
933
|
brew install ollama
|
|
804
934
|
brew services start ollama
|
|
805
935
|
ollama pull llama3.2
|
|
@@ -912,51 +1042,47 @@ export PERPLEXITY_API_KEY='your_perplexity_key'
|
|
|
912
1042
|
|
|
913
1043
|
Individual npcs can also be set to use different models and providers by setting the `model` and `provider` keys in the npc files.
|
|
914
1044
|
|
|
915
|
-
Once initialized
|
|
916
|
-
```bash
|
|
917
|
-
~/.npcsh/
|
|
918
|
-
├── npc_team/ # Global NPC team
|
|
919
|
-
│ ├── jinxs/
|
|
920
|
-
│ │ ├── bin/ # CLI commands (wander, spool, yap, nql, vixynt, roll, sample)
|
|
921
|
-
│ │ └── lib/ # Library jinxs by category
|
|
922
|
-
│ │ ├── core/ # python, sh, sql, search, edit_file, load_file
|
|
923
|
-
│ │ ├── browser/ # browser_action, screenshot
|
|
924
|
-
│ │ ├── orchestration/ # delegate, convene
|
|
925
|
-
│ │ └── research/ # arxiv, semantic_scholar, paper_search
|
|
926
|
-
│ ├── models/ # NQL SQL models
|
|
927
|
-
│ ├── assembly_lines/ # Workflow pipelines
|
|
928
|
-
│ ├── sibiji.npc # Orchestrator NPC
|
|
929
|
-
│ ├── corca.npc # Coding specialist
|
|
930
|
-
│ ├── plonk.npc # Browser automation
|
|
931
|
-
│ ├── ... # Other NPCs
|
|
932
|
-
│ └── npcsh.ctx # Team context (sets forenpc, team name)
|
|
933
|
-
```
|
|
934
|
-
For cases where you wish to set up a project specific set of NPCs, jinxs, and assembly lines, add a `npc_team` directory to your project and `npcsh` should be able to pick up on its presence, like so:
|
|
935
|
-
```bash
|
|
936
|
-
./npc_team/ # Project-specific NPCs
|
|
937
|
-
├── jinxs/ # Project jinxs
|
|
938
|
-
│ ├── bin/ # Standalone CLI commands (unique names, auto-registered)
|
|
939
|
-
│ │ └── wander, spool, yap, nql, vixynt, roll, sample
|
|
940
|
-
│ └── lib/ # Library jinxs organized by category
|
|
941
|
-
│ ├── core/ # Core utilities (python, sh, sql, search, etc.)
|
|
942
|
-
│ ├── browser/ # Browser automation
|
|
943
|
-
│ ├── orchestration/ # delegate, convene
|
|
944
|
-
│ └── research/ # Research tools (arxiv, semantic_scholar)
|
|
945
|
-
├── models/ # NQL SQL models for AI-powered data pipelines
|
|
946
|
-
│ ├── base/ # Base statistics models
|
|
947
|
-
│ └── insights/ # Models with nql.* AI functions
|
|
948
|
-
├── assembly_lines/ # Agentic Workflows
|
|
949
|
-
│ └── example.line
|
|
950
|
-
├── example1.npc # Example NPC
|
|
951
|
-
├── example2.npc # Example NPC
|
|
952
|
-
└── team.ctx # Team context file
|
|
953
|
-
|
|
1045
|
+
Once initialized, the global team lives in `~/.npcsh/npc_team/`. You can also create a project-specific team by adding an `npc_team/` directory to any project — npcsh picks it up automatically and overlays it on the global team.
|
|
954
1046
|
|
|
955
1047
|
```
|
|
1048
|
+
npc_team/
|
|
1049
|
+
├── jinxs/
|
|
1050
|
+
│ ├── modes/ # TUI modes (alicanto, corca, kg, yap, etc.)
|
|
1051
|
+
│ ├── skills/ # Skills — knowledge-content jinxs
|
|
1052
|
+
│ │ ├── code-review/ # SKILL.md folder format
|
|
1053
|
+
│ │ │ └── SKILL.md
|
|
1054
|
+
│ │ ├── debugging/
|
|
1055
|
+
│ │ │ └── SKILL.md
|
|
1056
|
+
│ │ └── git-workflow.jinx # .jinx format
|
|
1057
|
+
│ ├── lib/
|
|
1058
|
+
│ │ ├── core/ # Core tools (python, sh, sql, skill, edit_file, delegate, etc.)
|
|
1059
|
+
│ │ │ └── search/ # Search tools (web_search, db_search, file_search)
|
|
1060
|
+
│ │ ├── utils/ # Utility jinxs (set, compile, serve, teamviz, etc.)
|
|
1061
|
+
│ │ ├── browser/ # Browser automation (browser_action, screenshot, etc.)
|
|
1062
|
+
│ │ └── computer_use/ # Computer use (click, key_press, screenshot, etc.)
|
|
1063
|
+
│ └── incognide/ # Incognide desktop workspace jinxs
|
|
1064
|
+
├── models/ # NQL SQL models
|
|
1065
|
+
│ ├── base/ # Base statistics models
|
|
1066
|
+
│ └── insights/ # Models with nql.* AI functions
|
|
1067
|
+
├── assembly_lines/ # Workflow pipelines
|
|
1068
|
+
├── sibiji.npc # Orchestrator NPC
|
|
1069
|
+
├── corca.npc # Coding specialist
|
|
1070
|
+
├── ... # Other NPCs
|
|
1071
|
+
├── mcp_server.py # MCP server for tool integration
|
|
1072
|
+
└── npcsh.ctx # Team context (sets forenpc, team name)
|
|
1073
|
+
```
|
|
1074
|
+
|
|
1075
|
+
<p align="center">
|
|
1076
|
+
<img src="gh_images/team_ui.png" alt="Team config browser", width=500>
|
|
1077
|
+
<img src="gh_images/jinx_menu.png" alt="Jinx browser", width=500>
|
|
1078
|
+
</p>
|
|
1079
|
+
<p align="center">
|
|
1080
|
+
<img src="gh_images/jinx_folder_viewer.png" alt="Jinx folder viewer", width=500>
|
|
1081
|
+
<img src="gh_images/jinx_ui.png" alt="Jinx detail view", width=500>
|
|
1082
|
+
</p>
|
|
956
1083
|
|
|
957
1084
|
## Contributing
|
|
958
1085
|
Contributions are welcome! Please submit issues and pull requests on the GitHub repository.
|
|
959
1086
|
|
|
960
|
-
|
|
961
1087
|
## License
|
|
962
1088
|
This project is licensed under the MIT License.
|