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.
Files changed (165) hide show
  1. {npcsh-1.1.21/npcsh.egg-info → npcsh-1.1.23}/PKG-INFO +404 -278
  2. {npcsh-1.1.21 → npcsh-1.1.23}/README.md +402 -278
  3. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/_state.py +282 -125
  4. npcsh-1.1.23/npcsh/benchmark/npcsh_agent.py +172 -0
  5. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/benchmark/templates/install-npcsh.sh.j2 +12 -4
  6. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/config.py +5 -2
  7. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/mcp_server.py +9 -1
  8. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/alicanto.npc +8 -6
  9. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/corca.npc +5 -12
  10. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/frederic.npc +6 -9
  11. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/guac.npc +4 -4
  12. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/delegate.jinx +1 -1
  13. npcsh-1.1.23/npcsh/npc_team/jinxs/lib/core/edit_file.jinx +119 -0
  14. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/sh.jinx +1 -1
  15. npcsh-1.1.23/npcsh/npc_team/jinxs/lib/core/skill.jinx +59 -0
  16. npcsh-1.1.23/npcsh/npc_team/jinxs/lib/utils/help.jinx +236 -0
  17. npcsh-1.1.23/npcsh/npc_team/jinxs/lib/utils/init.jinx +532 -0
  18. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/jinxs.jinx +0 -1
  19. npcsh-1.1.23/npcsh/npc_team/jinxs/lib/utils/serve.jinx +943 -0
  20. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/alicanto.jinx +102 -41
  21. npcsh-1.1.23/npcsh/npc_team/jinxs/modes/build.jinx +378 -0
  22. 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
  23. npcsh-1.1.23/npcsh/npc_team/jinxs/modes/convene.jinx +670 -0
  24. npcsh-1.1.23/npcsh/npc_team/jinxs/modes/corca.jinx +820 -0
  25. npcsh-1.1.23/npcsh/npc_team/jinxs/modes/crond.jinx +818 -0
  26. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/kg.jinx +69 -2
  27. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/plonk.jinx +86 -15
  28. npcsh-1.1.23/npcsh/npc_team/jinxs/modes/roll.jinx +378 -0
  29. npcsh-1.1.23/npcsh/npc_team/jinxs/modes/skills.jinx +621 -0
  30. npcsh-1.1.23/npcsh/npc_team/jinxs/modes/yap.jinx +1190 -0
  31. npcsh-1.1.23/npcsh/npc_team/jinxs/skills/code-review/SKILL.md +45 -0
  32. npcsh-1.1.23/npcsh/npc_team/jinxs/skills/debugging/SKILL.md +44 -0
  33. npcsh-1.1.23/npcsh/npc_team/jinxs/skills/git-workflow.jinx +44 -0
  34. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/kadiefa.npc +6 -6
  35. npcsh-1.1.23/npcsh/npc_team/npcsh.ctx +34 -0
  36. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/plonk.npc +5 -9
  37. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/sibiji.npc +15 -7
  38. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npcsh.py +1 -0
  39. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/routes.py +0 -4
  40. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/yap.py +22 -4
  41. {npcsh-1.1.21 → npcsh-1.1.23/npcsh.egg-info}/PKG-INFO +404 -278
  42. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh.egg-info/SOURCES.txt +12 -25
  43. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh.egg-info/requires.txt +2 -1
  44. {npcsh-1.1.21 → npcsh-1.1.23}/setup.py +2 -1
  45. npcsh-1.1.21/npcsh/benchmark/npcsh_agent.py +0 -327
  46. npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/add_tab.jinx +0 -11
  47. npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/close_pane.jinx +0 -9
  48. npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/close_tab.jinx +0 -10
  49. npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/confirm.jinx +0 -10
  50. npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/focus_pane.jinx +0 -9
  51. npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/list_panes.jinx +0 -8
  52. npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/navigate.jinx +0 -10
  53. npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/notify.jinx +0 -10
  54. npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/open_pane.jinx +0 -13
  55. npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/read_pane.jinx +0 -9
  56. npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/run_terminal.jinx +0 -10
  57. npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/send_message.jinx +0 -10
  58. npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/split_pane.jinx +0 -12
  59. npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/switch_npc.jinx +0 -10
  60. npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/switch_tab.jinx +0 -10
  61. npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/write_file.jinx +0 -11
  62. npcsh-1.1.21/npcsh/npc_team/jinxs/incognide/zen_mode.jinx +0 -9
  63. npcsh-1.1.21/npcsh/npc_team/jinxs/lib/core/convene.jinx +0 -232
  64. npcsh-1.1.21/npcsh/npc_team/jinxs/lib/core/edit_file.jinx +0 -97
  65. npcsh-1.1.21/npcsh/npc_team/jinxs/lib/core/search/kg_search.jinx +0 -429
  66. npcsh-1.1.21/npcsh/npc_team/jinxs/lib/core/search.jinx +0 -54
  67. npcsh-1.1.21/npcsh/npc_team/jinxs/lib/utils/build.jinx +0 -65
  68. npcsh-1.1.21/npcsh/npc_team/jinxs/lib/utils/help.jinx +0 -52
  69. npcsh-1.1.21/npcsh/npc_team/jinxs/lib/utils/init.jinx +0 -41
  70. npcsh-1.1.21/npcsh/npc_team/jinxs/lib/utils/serve.jinx +0 -26
  71. npcsh-1.1.21/npcsh/npc_team/jinxs/modes/corca.jinx +0 -430
  72. npcsh-1.1.21/npcsh/npc_team/jinxs/modes/roll.jinx +0 -65
  73. npcsh-1.1.21/npcsh/npc_team/jinxs/modes/yap.jinx +0 -275
  74. npcsh-1.1.21/npcsh/npc_team/npcsh.ctx +0 -18
  75. {npcsh-1.1.21 → npcsh-1.1.23}/LICENSE +0 -0
  76. {npcsh-1.1.21 → npcsh-1.1.23}/MANIFEST.in +0 -0
  77. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/__init__.py +0 -0
  78. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/alicanto.py +0 -0
  79. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/benchmark/__init__.py +0 -0
  80. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/benchmark/runner.py +0 -0
  81. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/build.py +0 -0
  82. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/completion.py +0 -0
  83. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/conversation_viewer.py +0 -0
  84. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/corca.py +0 -0
  85. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/diff_viewer.py +0 -0
  86. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/execution.py +0 -0
  87. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/guac.py +0 -0
  88. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/mcp_helpers.py +0 -0
  89. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc.py +0 -0
  90. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/alicanto.png +0 -0
  91. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/corca.png +0 -0
  92. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/corca_example.png +0 -0
  93. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/frederic4.png +0 -0
  94. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/guac.png +0 -0
  95. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/browser/browser_action.jinx +0 -0
  96. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/browser/browser_screenshot.jinx +0 -0
  97. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/browser/close_browser.jinx +0 -0
  98. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/browser/open_browser.jinx +0 -0
  99. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/computer_use/click.jinx +0 -0
  100. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/computer_use/key_press.jinx +0 -0
  101. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/computer_use/launch_app.jinx +0 -0
  102. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/computer_use/screenshot.jinx +0 -0
  103. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/computer_use/trigger.jinx +0 -0
  104. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/computer_use/type_text.jinx +0 -0
  105. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/computer_use/wait.jinx +0 -0
  106. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/compress.jinx +0 -0
  107. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/load_file.jinx +0 -0
  108. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/ots.jinx +0 -0
  109. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/paste.jinx +0 -0
  110. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/python.jinx +0 -0
  111. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/sample.jinx +0 -0
  112. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/search/db_search.jinx +0 -0
  113. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/search/file_search.jinx +0 -0
  114. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/search/web_search.jinx +0 -0
  115. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/sleep.jinx +0 -0
  116. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/sql.jinx +0 -0
  117. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/benchmark.jinx +0 -0
  118. {npcsh-1.1.21/npcsh/npc_team/jinxs/lib/core → npcsh-1.1.23/npcsh/npc_team/jinxs/lib/utils}/chat.jinx +0 -0
  119. {npcsh-1.1.21/npcsh/npc_team/jinxs/lib/core → npcsh-1.1.23/npcsh/npc_team/jinxs/lib/utils}/cmd.jinx +0 -0
  120. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/compile.jinx +0 -0
  121. {npcsh-1.1.21/npcsh/npc_team/jinxs/incognide → npcsh-1.1.23/npcsh/npc_team/jinxs/lib/utils}/incognide.jinx +0 -0
  122. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/models.jinx +0 -0
  123. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/set.jinx +0 -0
  124. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/setup.jinx +0 -0
  125. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/shh.jinx +0 -0
  126. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/switch.jinx +0 -0
  127. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/switches.jinx +0 -0
  128. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/sync.jinx +0 -0
  129. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/teamviz.jinx +0 -0
  130. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/usage.jinx +0 -0
  131. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/verbose.jinx +0 -0
  132. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/arxiv.jinx +0 -0
  133. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/git.jinx +0 -0
  134. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/guac.jinx +0 -0
  135. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/memories.jinx +0 -0
  136. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/nql.jinx +0 -0
  137. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/papers.jinx +0 -0
  138. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/pti.jinx +0 -0
  139. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/reattach.jinx +0 -0
  140. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/spool.jinx +0 -0
  141. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/team.jinx +0 -0
  142. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/vixynt.jinx +0 -0
  143. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/wander.jinx +0 -0
  144. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/kadiefa.png +0 -0
  145. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/npcsh_sibiji.png +0 -0
  146. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/plonk.png +0 -0
  147. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/plonkjr.png +0 -0
  148. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/sibiji.png +0 -0
  149. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/spool.png +0 -0
  150. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/npc_team/yap.png +0 -0
  151. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/parsing.py +0 -0
  152. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/plonk.py +0 -0
  153. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/pti.py +0 -0
  154. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/salmon_simulation.py +0 -0
  155. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/spool.py +0 -0
  156. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/ui.py +0 -0
  157. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh/wander.py +0 -0
  158. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh.egg-info/dependency_links.txt +0 -0
  159. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh.egg-info/entry_points.txt +0 -0
  160. {npcsh-1.1.21 → npcsh-1.1.23}/npcsh.egg-info/top_level.txt +0 -0
  161. {npcsh-1.1.21 → npcsh-1.1.23}/project/__init__.py +0 -0
  162. {npcsh-1.1.21 → npcsh-1.1.23}/setup.cfg +0 -0
  163. {npcsh-1.1.21 → npcsh-1.1.23}/tests/test_config.py +0 -0
  164. {npcsh-1.1.21 → npcsh-1.1.23}/tests/test_jinxs.py +0 -0
  165. {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.21
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 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.
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
- pip install 'npcsh[lite]'
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
- ```bash
120
+ # Local models (diffusers/transformers/torch — large install)
121
121
  pip install 'npcsh[local]'
122
- ```
123
-
124
122
 
125
- For users who want to use the voice mode `yap` (see also the OS-specific installation instructions for installing needed system audio libraries)
126
- ```bash
123
+ # Voice mode (see OS-specific audio library instructions below)
127
124
  pip install 'npcsh[yap]'
128
- ```
129
125
 
130
- Once installed: run
131
- ```bash
132
- npcsh
126
+ # Everything
127
+ pip install 'npcsh[all]'
133
128
  ```
134
- and you will enter the NPC shell.
135
129
 
136
- If you do not have any local models
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
- /search "cerulean city" perplexity
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="https://raw.githubusercontent.com/npc-worldwide/npcsh/main/test_data/search.gif" alt="example of search results", width=600>
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
- ```bash
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
- /search query="git commands" brainblast=true
170
+ /plonk
189
171
  ```
190
-
191
- - web search with specific provider
192
-
193
- ```bash
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
- - **Computer Use**
177
+ - **Generate Images with Vixynt**
198
178
 
199
179
  ```bash
200
- /plonk 'find out the latest news on cnn' gemma3:12b ollama
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
- - **Generate Image**
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=250>
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 Video**
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=250>
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
- - **Serve an NPC Team** (Agentic API Server)
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
- - **Use an mcp server**: make use of NPCs with MCP servers.
239
+ - **MCP-powered agentic shell**: full tabbed TUI with chat, tool management, and server controls.
237
240
  ```bash
238
- /corca --mcp-server-path /path.to.server.py
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
- - **Visualize Team Structure**:
245
+ - **Build an NPC Team**: Generate deployment artifacts for your team.
267
246
  ```bash
268
- npc teamviz save=team_structure.png
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/search
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 (arxiv, semantic_scholar, paper_search)
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, search |
554
- | `corca` | Coding and development | python, sh, edit_file, search |
555
- | `plonk` | Browser/GUI automation | browser_action, screenshot, click |
556
- | `alicanto` | Research and analysis | arxiv, semantic_scholar, paper_search |
557
- | `frederic` | Math, physics, music | python, vixynt, roll, sample, wander |
558
- | `guac` | General assistant | python, sh, search |
559
- | `kadiefa` | Creative generation | vixynt, roll, wander |
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 NPCs 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 `:
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
- /vixynt "a sunset over mountains"
671
+ /sample "tell me a story about a sunset over the mountains"
568
672
 
569
673
  # In bash:
570
- npc vixynt "a sunset over mountains"
674
+ npc sample "a sunset over mountains"
571
675
  ```
572
676
 
573
- ## Jinx Commands
677
+ ## All Commands
574
678
 
575
- ### Orchestration & Research
576
679
  | Command | Description |
577
680
  |---------|-------------|
578
- | `/alicanto` | Deep research with multiple perspectives. Usage: `/alicanto 'query' --num-npcs 3 --depth 2` |
579
- | `/convene` | Multi-NPC structured discussion. Usage: `/convene "topic" --npcs corca,guac --rounds 3` |
580
- | `/delegate` | Delegate task to NPC with review loop. Usage: `/delegate npc_name=corca task="..." max_iterations=5` |
581
- | `/search` | Web/memory/knowledge graph search. Usage: `/search 'query' --sprovider perplexity` |
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
- ### Generation
584
- | Command | Description |
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
- ### Modes & Sessions
591
- | Command | Description |
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
- ### Data & Analytics
600
- | Command | Description |
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
- ## Memory & Knowledge Graph
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
- `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.
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
- ### Memory Lifecycle
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
- Memories are extracted from conversations and follow this lifecycle:
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
- 1. **pending_approval** - New memories awaiting review
648
- 2. **human-approved** - Approved and ready for KG integration
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
- ### Memory Commands
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
- # Search through approved memories
657
- /mem_search python # Keyword search
658
- /mem_search python status=approved # Filter by status
659
- /mem_search python top_k=20 # Limit results
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
- # Review pending memories interactively
662
- /mem_review # Review with default limit
663
- /mem_review limit=50 # Review more at once
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
- ### Knowledge Graph
781
+ <p align="center">
782
+ <img src="gh_images/config.png" alt="Config editor TUI" width=500>
783
+ </p>
667
784
 
668
- The knowledge graph stores facts and concepts extracted from approved memories, enabling semantic search and reasoning. Facts are linked to concepts, allowing traversal-based discovery.
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
- # Keyword search
672
- /kg_search python # Simple keyword match
789
+ /crond
790
+ ```
673
791
 
674
- # Semantic similarity search
675
- /kg_search python mode=embedding # Find semantically similar facts
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
- # Graph traversal search
678
- /kg_search python mode=link depth=3 # Traverse graph links
800
+ # Memory & Knowledge Graph
679
801
 
680
- # Hybrid search (combines methods)
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
- # Explore concepts
684
- /kg_search type=concepts # List all concepts
685
- /kg_search concept="Machine Learning" # Explore a specific concept
686
- ```
804
+ ### Memory Lifecycle
805
+
806
+ Memories are extracted from conversations and follow this lifecycle:
687
807
 
688
- ### Knowledge Graph Evolution
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
- The `/sleep` command evolves the knowledge graph through consolidation, abstraction, and creative synthesis:
814
+ ### Memories
815
+
816
+ The `/memories` command opens an interactive TUI for browsing, reviewing, and managing memories:
691
817
 
692
818
  ```bash
693
- # Basic sleep (consolidation)
694
- /sleep
819
+ /memories
820
+ ```
695
821
 
696
- # Import approved memories first, then evolve
697
- /sleep backfill=true
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
- # Dream mode - creative synthesis across domains
700
- /sleep dream=true
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
- # Combined backfill and dream
703
- /sleep backfill=true dream=true
834
+ The `/kg` command opens an interactive browser for exploring the knowledge graph:
704
835
 
705
- # Specific operations
706
- /sleep ops=prune,deepen,abstract
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
- **Operations:**
710
- - **prune** - Remove redundant or low-value facts
711
- - **deepen** - Add detail to existing facts
712
- - **abstract** - Create higher-level generalizations
713
- - **link** - Connect related facts and concepts
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
- ## Read the Docs
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
- ## Inference Capabilities
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
- [Join the discord to discuss ideas for npc tools](https://discord.gg/VvYVT5YC)
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 and set up, you will find the following in your `~/.npcsh` directory:
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.