karnel-termux 4.13.11 → 4.15.0

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 (160) hide show
  1. package/README.md +25 -11
  2. package/assets/fonts/font.ttf +0 -0
  3. package/docs/ARCHITECTURE.md +6 -1
  4. package/docs/CHANGELOG.md +35 -0
  5. package/docs/README.md +1 -1
  6. package/docs/cli/README.md +100 -41
  7. package/install.sh +144 -63
  8. package/karnel/RELEASE_COMMIT +1 -0
  9. package/karnel/bin/karnel +49 -11
  10. package/karnel/cli/commands/backup.sh +165 -154
  11. package/karnel/cli/commands/env.sh +0 -3
  12. package/karnel/cli/commands/ia.sh +7 -7
  13. package/karnel/cli/commands/install.sh +15 -5
  14. package/karnel/cli/commands/list.sh +5 -0
  15. package/karnel/cli/commands/reinstall.sh +1 -185
  16. package/karnel/cli/commands/restore.sh +118 -77
  17. package/karnel/cli/commands/show.sh +8 -6
  18. package/karnel/cli/commands/start.sh +1 -0
  19. package/karnel/cli/commands/update.sh +2 -2
  20. package/karnel/cli/karnel.sh +36 -50
  21. package/karnel/modules/ai.sh +9 -17
  22. package/karnel/modules/shell.sh +27 -10
  23. package/karnel/tools/ai/all.sh +73 -12
  24. package/karnel/tools/ai/ampcode/install.sh +65 -111
  25. package/karnel/tools/ai/cactus/README.md +45 -0
  26. package/karnel/tools/ai/cactus/install.sh +268 -0
  27. package/karnel/tools/ai/claude-code/install.sh +49 -22
  28. package/karnel/tools/ai/codebuff/install.sh +50 -118
  29. package/karnel/tools/ai/codegraph/install.sh +34 -24
  30. package/karnel/tools/ai/codex/install.sh +1 -1
  31. package/karnel/tools/ai/command-code/install.sh +1 -1
  32. package/karnel/tools/ai/crush/install.sh +46 -10
  33. package/karnel/tools/ai/cursor-cli/install.sh +18 -28
  34. package/karnel/tools/ai/engram/install.sh +8 -5
  35. package/karnel/tools/ai/gemini-cli/install.sh +1 -1
  36. package/karnel/tools/ai/gentle-ai/install.sh +5 -25
  37. package/karnel/tools/ai/gentle-ai/termux-patches.go +0 -0
  38. package/karnel/tools/ai/gga/README.md +6 -6
  39. package/karnel/tools/ai/gga/install.sh +145 -101
  40. package/karnel/tools/ai/goose/install.sh +29 -8
  41. package/karnel/tools/ai/hermes-agent/install.sh +88 -50
  42. package/karnel/tools/ai/hugging-face/README.md +34 -0
  43. package/karnel/tools/ai/hugging-face/install.sh +129 -0
  44. package/karnel/tools/ai/kilocode-cli/install.sh +3 -3
  45. package/karnel/tools/ai/kimchi-code/install.sh +53 -90
  46. package/karnel/tools/ai/kimi-code/install.sh +1 -1
  47. package/karnel/tools/ai/kiro/install.sh +102 -78
  48. package/karnel/tools/ai/mimocode/install.sh +45 -106
  49. package/karnel/tools/ai/minimax-cli/install.sh +1 -1
  50. package/karnel/tools/ai/mistral-vibe/install.sh +1 -1
  51. package/karnel/tools/ai/odysseus/install.sh +28 -16
  52. package/karnel/tools/ai/oh-my-pi/install.sh +2 -2
  53. package/karnel/tools/ai/ollama/install.sh +1 -1
  54. package/karnel/tools/ai/openclaude/install.sh +1 -1
  55. package/karnel/tools/ai/openclaw/install.sh +1 -1
  56. package/karnel/tools/ai/opencode/install.sh +4 -0
  57. package/karnel/tools/ai/pi/install.sh +1 -1
  58. package/karnel/tools/ai/qoder/bin/qodercli +3 -2
  59. package/karnel/tools/ai/qoder/install.sh +110 -45
  60. package/karnel/tools/ai/qwen-code/install.sh +1 -1
  61. package/karnel/tools/auto/all.sh +8 -7
  62. package/karnel/tools/auto/n8n/install.sh +1 -1
  63. package/karnel/tools/db/all.sh +8 -7
  64. package/karnel/tools/deploy/all.sh +8 -6
  65. package/karnel/tools/deploy/netlify/README.md +4 -0
  66. package/karnel/tools/deploy/supabase/install.sh +71 -33
  67. package/karnel/tools/dev/all.sh +13 -11
  68. package/karnel/tools/editor/all.sh +8 -7
  69. package/karnel/tools/editor/neovim/install.sh +1 -1
  70. package/karnel/tools/editor/nvchad/install.sh +86 -32
  71. package/karnel/tools/games/all.sh +8 -7
  72. package/karnel/tools/games/arcade/install.sh +2 -2
  73. package/karnel/tools/games/buzz/install.sh +2 -2
  74. package/karnel/tools/games/ctfgod/install.sh +2 -2
  75. package/karnel/tools/games/detective/install.sh +2 -2
  76. package/karnel/tools/games/pet-friends/install.sh +2 -2
  77. package/karnel/tools/games/tamagotchi/install.sh +2 -2
  78. package/karnel/tools/lang/all.sh +8 -7
  79. package/karnel/tools/network/all.sh +11 -13
  80. package/karnel/tools/network/dark/install.sh +1 -1
  81. package/karnel/tools/network/dedsec-network/install.sh +1 -1
  82. package/karnel/tools/npm/all.sh +8 -7
  83. package/karnel/tools/npm/live-server/install.sh +2 -1
  84. package/karnel/tools/npm/localtunnel/install.sh +2 -1
  85. package/karnel/tools/npm/markserv/install.sh +2 -1
  86. package/karnel/tools/npm/ncu/install.sh +2 -1
  87. package/karnel/tools/npm/nestjs/install.sh +2 -1
  88. package/karnel/tools/npm/ngrok/install.sh +2 -1
  89. package/karnel/tools/npm/prettier/install.sh +2 -1
  90. package/karnel/tools/npm/psqlformat/install.sh +2 -1
  91. package/karnel/tools/npm/turbopack/install.sh +20 -4
  92. package/karnel/tools/npm/typescript/install.sh +2 -1
  93. package/karnel/tools/npm/vercel/install.sh +2 -1
  94. package/karnel/tools/osint/all.sh +11 -13
  95. package/karnel/tools/plugins/install.sh +20 -27
  96. package/karnel/tools/security/aircrack-ng/install.sh +7 -2
  97. package/karnel/tools/security/all.sh +10 -4
  98. package/karnel/tools/security/amass/install.sh +22 -16
  99. package/karnel/tools/security/binwalk/install.sh +7 -2
  100. package/karnel/tools/security/burpsuite/install.sh +54 -26
  101. package/karnel/tools/security/dirb/install.sh +7 -2
  102. package/karnel/tools/security/dnsrecon/install.sh +7 -2
  103. package/karnel/tools/security/enum4linux/install.sh +7 -2
  104. package/karnel/tools/security/exiftool/install.sh +7 -2
  105. package/karnel/tools/security/ffuf/install.sh +18 -15
  106. package/karnel/tools/security/foremost/install.sh +7 -2
  107. package/karnel/tools/security/gobuster/install.sh +21 -17
  108. package/karnel/tools/security/hashcat/install.sh +7 -2
  109. package/karnel/tools/security/hydra/install.sh +7 -2
  110. package/karnel/tools/security/john/install.sh +7 -2
  111. package/karnel/tools/security/masscan/install.sh +6 -2
  112. package/karnel/tools/security/metasploit/install.sh +14 -8
  113. package/karnel/tools/security/netcat/install.sh +7 -2
  114. package/karnel/tools/security/nikto/install.sh +7 -2
  115. package/karnel/tools/security/nmap/install.sh +7 -2
  116. package/karnel/tools/security/smbclient/install.sh +7 -2
  117. package/karnel/tools/security/sqlmap/install.sh +7 -2
  118. package/karnel/tools/security/steghide/install.sh +7 -2
  119. package/karnel/tools/security/subfinder/install.sh +22 -16
  120. package/karnel/tools/security/tcpdump/install.sh +7 -2
  121. package/karnel/tools/security/theharvester/install.sh +7 -2
  122. package/karnel/tools/security/wafw00f/install.sh +42 -3
  123. package/karnel/tools/security/whatweb/install.sh +7 -2
  124. package/karnel/tools/security/whois/install.sh +7 -2
  125. package/karnel/tools/security/wpscan/install.sh +42 -3
  126. package/karnel/tools/security/zap/install.sh +44 -18
  127. package/karnel/tools/shell/all.sh +11 -10
  128. package/karnel/tools/shell/better-npm/install.sh +7 -4
  129. package/karnel/tools/shell/fzf-tab/install.sh +7 -4
  130. package/karnel/tools/shell/history-substring/install.sh +7 -4
  131. package/karnel/tools/shell/powerlevel10k/install.sh +7 -4
  132. package/karnel/tools/shell/you-should-use/install.sh +7 -4
  133. package/karnel/tools/shell/zsh-autopair/install.sh +7 -4
  134. package/karnel/tools/shell/zsh-autosuggestions/install.sh +7 -4
  135. package/karnel/tools/shell/zsh-completions/install.sh +7 -4
  136. package/karnel/tools/shell/zsh-defer/install.sh +7 -4
  137. package/karnel/tools/shell/zsh-syntax-highlighting/install.sh +7 -4
  138. package/karnel/tools/ui/all.sh +8 -7
  139. package/karnel/tools/utils/all.sh +13 -11
  140. package/karnel/tools/utils/applaunch/install.sh +2 -2
  141. package/karnel/tools/utils/fconv/install.sh +2 -2
  142. package/karnel/tools/utils/filecheck/install.sh +2 -2
  143. package/karnel/tools/utils/notes/install.sh +2 -2
  144. package/karnel/tools/utils/passman/install.sh +2 -2
  145. package/karnel/tools/utils/qrcode/install.sh +1 -1
  146. package/karnel/tools/utils/splash/install.sh +2 -2
  147. package/karnel/tools/utils/treex/install.sh +2 -2
  148. package/karnel/tools/utils/websites/install.sh +2 -2
  149. package/karnel/tools/voice/all.sh +1 -1
  150. package/karnel/utils/backup.sh +182 -0
  151. package/karnel/utils/bootstrap.sh +67 -3
  152. package/karnel/utils/downloaded-python.sh +50 -11
  153. package/karnel/utils/env.sh +27 -7
  154. package/karnel/utils/install.sh +272 -11
  155. package/karnel/utils/tools.sh +117 -5
  156. package/package.json +4 -3
  157. package/scripts/check-package.js +86 -9
  158. package/scripts/completion.bash +134 -13
  159. package/scripts/completion.zsh +138 -53
  160. package/scripts/npm-install.js +9 -3
package/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  <p align="center">
10
10
  <a href="https://github.com/israelmarques1024-dotcom/karnel-termux">
11
- <img src="https://img.shields.io/badge/version-4.13.11-0078D4?style=for-the-badge" alt="Version">
11
+ <img src="https://img.shields.io/badge/version-4.15.0-0078D4?style=for-the-badge" alt="Version">
12
12
  </a>
13
13
  <a href="https://www.npmjs.com/package/karnel-termux">
14
14
  <img src="https://img.shields.io/npm/v/karnel-termux?style=for-the-badge&logo=npm&color=cb3837" alt="npm">
@@ -33,7 +33,7 @@
33
33
 
34
34
  Created by **Israel Marques**.
35
35
 
36
- - **41 AI agents** for coding — Claude, Gemini, OpenCode, KeelCode, Qoder, Ollama, Goose, Factory Droid, Cline, Puter, OmniRoute and more
36
+ - **43 AI tools** — Claude, Gemini, OpenCode, Cactus, Hugging Face, Ollama, KeelCode, Goose, Factory Droid and more
37
37
  - **8 languages** — Node.js, Python, Go, Rust, C/C++, PHP, Perl, Bun
38
38
  - **5 databases** — PostgreSQL, MariaDB, SQLite, MongoDB, Redis
39
39
  - **22 dev tools** — gh, curl, fzf, bat, lsd, jq, tmux, openssh, snyk and more
@@ -56,10 +56,15 @@ Created by **Israel Marques**.
56
56
 
57
57
  ## Installation
58
58
 
59
- ### Via curl (recommended)
59
+ ### Via checksummed GitHub release (recommended)
60
60
 
61
61
  ```bash
62
- bash -c "$(curl -fsSL https://raw.githubusercontent.com/israelmarques1024-dotcom/karnel-termux/main/install.sh)"
62
+ version=4.15.0
63
+ tmpdir=$(mktemp -d) && trap 'rm -rf "$tmpdir"' EXIT
64
+ base="https://github.com/israelmarques1024-dotcom/karnel-termux/releases/download/v$version"
65
+ curl -fsSL "$base/karnel-termux-install.sh" -o "$tmpdir/karnel-termux-install.sh"
66
+ curl -fsSL "$base/karnel-termux-install.sh.sha256" -o "$tmpdir/karnel-termux-install.sh.sha256"
67
+ (cd "$tmpdir" && sha256sum -c karnel-termux-install.sh.sha256) && bash "$tmpdir/karnel-termux-install.sh" --ref "v$version"
63
68
  ```
64
69
 
65
70
  ### Via npm
@@ -80,6 +85,10 @@ After installation, run:
80
85
  karnel
81
86
  ```
82
87
 
88
+ In a terminal, running `karnel` without a command opens a curated menu for
89
+ common workflows. The menu is not a complete inventory of CLI commands,
90
+ aliases, or options; use `karnel help` and the CLI reference for the full set.
91
+
83
92
  ---
84
93
 
85
94
  ## Usage
@@ -104,7 +113,7 @@ karnel
104
113
  | `karnel start editor` | Start code-server (VS Code in browser) |
105
114
  | `karnel pg` | PostgreSQL manager |
106
115
  | `karnel init <template>` | Initialize projects with templates |
107
- | `karnel deploy` | Deploy projects (Vercel, Railway, Netlify, Supabase) |
116
+ | `karnel deploy` | Run Vercel, Railway, Netlify, or Supabase CLI commands |
108
117
  | `karnel supabase` | Manage the Supabase CLI and remote-project helpers |
109
118
  | `karnel robin` | Manage the Robin OSINT service |
110
119
  | `karnel --version` | Show installed version |
@@ -115,7 +124,7 @@ karnel
115
124
  |--------|-------------|--------------|
116
125
  | `lang` | Node.js, Python, Go, Rust, C/C++, PHP, Perl, Bun | `karnel install lang` |
117
126
  | `db` | PostgreSQL, MariaDB, SQLite, MongoDB, Redis | `karnel install db` |
118
- | `ai` | 41 AI agents for coding, including KeelCode | `karnel install ai` |
127
+ | `ai` | 43 AI tools, agents, and local inference clients | `karnel install ai` |
119
128
  | `editor` | code-server (VS Code in browser), Neovim, NvChad | `karnel install editor` |
120
129
  | `dev` | gh, curl, fzf, bat, lsd, jq and more | `karnel install dev` |
121
130
  | `npm` | TypeScript, NestJS CLI, Prettier and more | `karnel install npm` |
@@ -259,7 +268,7 @@ See the bundled reference with `karnel show osint --robin`.
259
268
 
260
269
  ---
261
270
 
262
- ## AI Agents (41)
271
+ ## AI Tools (43)
263
272
 
264
273
  ```bash
265
274
  karnel install ai # Install all
@@ -278,6 +287,8 @@ karnel install ai --opencode --ollama # Install specific agents
278
287
  | **OpenClaude** | `--openclaude` | Open source Claude Code alternative |
279
288
  | **OpenClaw** | `--openclaw` | Personal AI assistant |
280
289
  | **Ollama** | `--ollama` | Run open source LLMs locally |
290
+ | **Cactus** | `--cactus` | On-device ARM64 inference through an isolated Ubuntu runtime |
291
+ | **Hugging Face** | `--hugging-face` | Official Hugging Face Hub CLI (`hf`) |
281
292
  | **Codex CLI** | `--codex` | OpenAI coding agent |
282
293
  | **OpenCode** | `--opencode` | Open source terminal agent |
283
294
  | **MiMoCode** | `--mimocode` | Fast open source AI agent |
@@ -361,7 +372,9 @@ karnel brain sync # Sync with private GitHub
361
372
 
362
373
  ## karnel voice
363
374
 
364
- Capture audio from microphone, review in editor, copy to clipboard, and dispatch any AI agent with the transcribed prompt.
375
+ Capture audio from the microphone, optionally review it in an editor, copy it
376
+ to the clipboard, and dispatch an AI agent with the transcribed prompt. If an
377
+ editor is unavailable or no TTY is attached, Karnel uses the raw transcript.
365
378
 
366
379
  ```bash
367
380
  karnel voice opencode # Record -> edit -> opencode run
@@ -413,7 +426,7 @@ Microphone -> termux-speech-to-text -> editor (edit) -> clipboard -> AI agent
413
426
 
414
427
  - Termux:API: `pkg install termux-api`
415
428
  - App Termux:API: https://karneltermux.vercel.app/termux/api
416
- - Editor: `karnel install editor`
429
+ - Editor (optional): `karnel install editor`; otherwise use `--raw` or the automatic raw fallback
417
430
 
418
431
  ---
419
432
 
@@ -465,7 +478,8 @@ karnel env ls # List variables
465
478
 
466
479
  ## karnel deploy
467
480
 
468
- Deploy your projects directly from terminal:
481
+ Run an installed platform CLI through Karnel; arguments after the tool name are
482
+ forwarded unchanged:
469
483
 
470
484
  ```bash
471
485
  karnel deploy vercel # Deploy to Vercel
@@ -545,7 +559,7 @@ karnel/
545
559
  │ │ └── karnel.sh # Main CLI (with TUI)
546
560
  │ ├── modules/ # Module orchestrators
547
561
  │ ├── tools/ # Tool installers
548
- │ │ ├── ai/ # 41 AI agents
562
+ │ │ ├── ai/ # 43 AI tools
549
563
  │ │ ├── lang/ # 8 languages
550
564
  │ │ ├── db/ # 5 databases
551
565
  │ │ ├── dev/ # 22 dev tools
Binary file
@@ -27,7 +27,7 @@ karnel-termux/
27
27
  │ │ ├── dev.sh # Dev tools installer
28
28
  │ │ └── ...
29
29
  │ ├── tools/ # Individual tool installers
30
- │ │ ├── ai/ # 41 AI agents
30
+ │ │ ├── ai/ # 43 AI tools
31
31
  │ │ ├── lang/ # 8 languages
32
32
  │ │ ├── db/ # 5 databases
33
33
  │ │ ├── dev/ # 22 dev tools
@@ -83,6 +83,11 @@ import "@/cli/commands/doctor/code"
83
83
 
84
84
  The `@` symbol is replaced with `$KARNEL_PATH`. This avoids hardcoded paths.
85
85
 
86
+ `import()` is not an idempotent module loader: it calls `source` on every import
87
+ and does not track files already loaded. Top-level assignments and other side
88
+ effects therefore run again when the same file is imported more than once;
89
+ imported files must tolerate repeated evaluation where callers can repeat them.
90
+
86
91
  ### Critical Scope Implication
87
92
 
88
93
  Because `import()` calls `source` from within a function, any `declare` statement
package/docs/CHANGELOG.md CHANGED
@@ -1,5 +1,40 @@
1
1
  # Documentation Changelog
2
2
 
3
+ ## 4.15.0 - 2026-08-14
4
+
5
+ - Replaced the unavailable GGA fork with the official Gentleman Guardian
6
+ Angel v2.10.1, pinned by commit, with Termux-safe staging, ownership
7
+ verification, rollback, and non-destructive uninstall.
8
+ - Made backup/restore transactional: staged configs, ancestor symlink
9
+ rejection, signal-safe rollback, concurrent backup isolation, validated
10
+ snapshot names, and explicit package/configuration phase separation.
11
+ - Hardened lifecycle ownership so pre-existing installs are never adopted,
12
+ arbitrary handler exit codes are treated as failures, and stale or empty
13
+ locks are recovered safely.
14
+ - Pinned release/npm/installer together: the npm package carries a validated
15
+ `RELEASE_COMMIT`, the release workflow is serialized per tag and refuses
16
+ divergent partial publications, and the installer activates only a verified,
17
+ clean checkout.
18
+ - Authenticated security and AI installers with fixed versions and official
19
+ SHA-256 checksums, safe archive extraction, staging, and rollback; unverifiable
20
+ upstream assets now fail closed instead of executing unauthenticated bytes.
21
+ - Fixed the npm postinstall to distinguish the npm bin symlink from a complete
22
+ managed installation, and removed the deprecated `curl | bash` guidance.
23
+ - Updated ShellCheck/syntax/test gates to 294 scripts and added regression
24
+ suites for backup, lifecycle, installer integrity, and AI installer hardening.
25
+
26
+ ## 4.14.0 - 2026-08-14
27
+
28
+ - Added tested Cactus 2.0.1 support on ARM64 through Ubuntu Proot with an
29
+ isolated compatible Python runtime.
30
+ - Added the official Hugging Face `hf` CLI in an isolated native Termux
31
+ environment, using HTTP transport when the optional Xet Android wheel is
32
+ unavailable.
33
+ - Made the AI registry authoritative for TUI selection, route discovery, and
34
+ lifecycle dispatch, with contracts covering all 43 registered tools.
35
+ - Fixed AI reinstall and uninstall error propagation, unknown status handling,
36
+ binary alias summaries, ownership checks, and stale tool counts.
37
+
3
38
  ## 4.13.11 - 2026-08-10
4
39
 
5
40
  - Hardened installers to preserve user-managed commands and data, with atomic
package/docs/README.md CHANGED
@@ -14,7 +14,7 @@
14
14
  ## What is Karnel?
15
15
 
16
16
  Karnel Termux transforms your Android device into a complete development workstation.
17
- With a single CLI (`karnel`), you can install and manage 41 AI agents, 8 languages,
17
+ With a single CLI (`karnel`), you can install and manage 43 AI tools, 8 languages,
18
18
  5 databases, 22 dev tools, 12 utility tools, 2 network tools, 6 games, responsible OSINT, and more.
19
19
 
20
20
  ## Sections
@@ -4,8 +4,9 @@
4
4
  karnel <command> [arguments]
5
5
  ```
6
6
 
7
- With no command, Karnel opens its interactive interface (TUI) when a terminal is
8
- available and prints help in noninteractive contexts.
7
+ With no command, Karnel opens a curated interactive menu (TUI) when a terminal
8
+ is available and prints help in noninteractive contexts. The menu exposes common
9
+ workflows, not every command, alias, or option documented below.
9
10
 
10
11
  ---
11
12
 
@@ -22,7 +23,7 @@ karnel install <module> --tool1 --tool2 # Install specific tools only
22
23
  |-----------|-------------|
23
24
  | `lang` | Node.js, Python, Go, Rust, C/C++, PHP, Perl, Bun |
24
25
  | `db` | PostgreSQL, MariaDB, SQLite, MongoDB, Redis |
25
- | `ai` | 41 AI agents (OpenCode, Claude Code, KeelCode, Codebuff, Freebuff, Qoder, AMP Code, Cursor CLI, Oh-My-Pi, Goose, Factory Droid, Puter, Ollama, etc.) |
26
+ | `ai` | 43 AI tools (OpenCode, Cactus, Hugging Face, Claude Code, KeelCode, Goose, Factory Droid, Ollama, etc.) |
26
27
  | `editor` | code-server (VS Code in browser), Neovim, NvChad |
27
28
  | `dev` | gh, curl, fzf, bat, lsd, jq, tmux, openssh, snyk (22 tools) |
28
29
  | `npm` | TypeScript, NestJS CLI, Prettier, Vercel CLI, etc. |
@@ -42,7 +43,7 @@ karnel install <module> --tool1 --tool2 # Install specific tools only
42
43
 
43
44
  | Module | Flags |
44
45
  |-----------|-------|
45
- | `ai` | `--qwen-code`, `--gemini-cli`, `--claude-code`, `--mistral-vibe`, `--openclaude`, `--openclaw`, `--ollama`, `--codex`, `--opencode`, `--mimocode`, `--engram`, `--codegraph`, `--pi`, `--antigravity-cli`, `--minimax-cli`, `--gentle-ai`, `--gga`, `--hermes-agent`, `--kimi-code`, `--command-code`, `--codebuff`, `--freebuff`, `--kilocode-cli`, `--kiro`, `--crush`, `--cline`, `--odysseus`, `--kimchi-code`, `--omni-route`, `--ctx7`, `--openspec`, `--supercode-cli`, `--puter`, `--keelcode`, `--copilot-termux`, `--qoder`, `--ampcode`, `--cursor-cli`, `--oh-my-pi`, `--goose`, `--droid` |
46
+ | `ai` | `--qwen-code`, `--gemini-cli`, `--claude-code`, `--mistral-vibe`, `--openclaude`, `--openclaw`, `--ollama`, `--codex`, `--opencode`, `--mimocode`, `--engram`, `--codegraph`, `--pi`, `--antigravity-cli`, `--minimax-cli`, `--gentle-ai`, `--gga`, `--hermes-agent`, `--kimi-code`, `--command-code`, `--codebuff`, `--freebuff`, `--kilocode-cli`, `--kiro`, `--crush`, `--cline`, `--odysseus`, `--kimchi-code`, `--omni-route`, `--ctx7`, `--openspec`, `--supercode-cli`, `--puter`, `--keelcode`, `--copilot-termux`, `--qoder`, `--ampcode`, `--cursor-cli`, `--oh-my-pi`, `--goose`, `--droid`, `--cactus`, `--hugging-face` |
46
47
  | `db` | `--postgresql`, `--mariadb`, `--sqlite`, `--mongodb`, `--redis` |
47
48
  | `dev` | `--gh`, `--wget`, `--curl`, `--lsd`, `--bat`, `--proot`, `--ncurses`, `--tmate`, `--openssh`, `--tmux`, `--cloudflared`, `--translate`, `--html2text`, `--jq`, `--bc`, `--tree`, `--fzf`, `--imagemagick`, `--shfmt`, `--make`, `--udocker`, `--snyk` |
48
49
  | `lang` | `--bun`, `--nodejs`, `--python`, `--perl`, `--php`, `--rust`, `--clang`, `--golang` |
@@ -136,7 +137,7 @@ binary/command name, and current install status.
136
137
  |-----------|-------|
137
138
  | `lang` | 8 languages |
138
139
  | `db` | 5 databases |
139
- | `ai` | 41 AI agents |
140
+ | `ai` | 43 AI tools |
140
141
  | `editor` | 3 editor components |
141
142
  | `dev` | 22 development tools |
142
143
  | `npm` | 11 npm global modules |
@@ -442,8 +443,9 @@ karnel env ls
442
443
  karnel voice [agent] [options]
443
444
  ```
444
445
 
445
- Captures audio via `termux-speech-to-text`, opens the transcript in `$EDITOR`,
446
- copies to clipboard, and dispatches the AI agent.
446
+ Captures audio via `termux-speech-to-text`, optionally opens the transcript in
447
+ `$EDITOR`, copies it to the clipboard, and dispatches the AI agent. If no editor
448
+ is installed or no TTY is available, Karnel continues with the raw transcript.
447
449
 
448
450
  ### Agent targets
449
451
 
@@ -539,18 +541,21 @@ cd . && karnel init # Auto-detect
539
541
 
540
542
  ---
541
543
 
542
- ## deploy — Deploy projects
544
+ ## deploy — Run deployment CLIs
543
545
 
544
546
  ```bash
545
547
  karnel deploy <tool> [args...]
546
548
  ```
547
549
 
548
- | Tool | Platform |
549
- |------|----------|
550
- | `vercel` | Vercel (passes remaining args to `vercel`) |
551
- | `railway` | Railway |
552
- | `netlify` | Netlify |
553
- | `supabase` | Supabase |
550
+ `deploy` checks that the selected executable exists, then replaces Karnel with
551
+ that CLI and forwards all remaining arguments.
552
+
553
+ | Tool | Executable |
554
+ |------|------------|
555
+ | `vercel` | `vercel` |
556
+ | `railway` | `railway` |
557
+ | `netlify` | `netlify` |
558
+ | `supabase` | `supabase`; this is a generic CLI pass-through, not a deployment action by itself |
554
559
 
555
560
  ```bash
556
561
  karnel deploy vercel
@@ -568,19 +573,19 @@ karnel deploy supabase
568
573
  karnel supabase <subcommand> [options]
569
574
  ```
570
575
 
571
- The top-level command manages Supabase CLI installation and remote-project
572
- workflows. It does not start the local Supabase stack on Termux; that requires
573
- Docker on a Linux host.
576
+ The top-level command manages the pinned Supabase CLI installation and provides
577
+ thin wrappers for linked-project workflows. It does not start the local Supabase
578
+ stack on Termux; `supabase start` requires Docker on a Linux host.
574
579
 
575
580
  | Subcommand | Description |
576
581
  |------------|-------------|
577
- | `doctor` | Check CLI, project configuration, and API reachability |
578
- | `types` | Generate TypeScript types for a linked project |
579
- | `migrate` | Run `supabase db <args>` |
580
- | `link` | Run `supabase link <args>` |
581
- | `remote-start` / `remote` | Show the remote-development guide |
582
- | `remote-status` / `status` | Check Supabase status |
583
- | `install` / `uninstall` | Install or remove the Supabase CLI |
582
+ | `doctor` | Check the CLI, `supabase/config.toml`, Docker expectations, and API reachability |
583
+ | `types` | Run `supabase gen types typescript --linked`; extra arguments are not forwarded |
584
+ | `migrate` | Forward arguments to `supabase db` |
585
+ | `link` | Forward arguments to `supabase link` |
586
+ | `remote-start` / `remote` | Print a guide for running the Docker-backed local stack on a Linux host |
587
+ | `remote-status` / `status` | Run `supabase status`, which reports the local stack rather than hosted-project health |
588
+ | `install` / `uninstall` | Install or remove Karnel's pinned Supabase CLI binary |
584
589
 
585
590
  ```bash
586
591
  karnel supabase install
@@ -589,6 +594,43 @@ karnel supabase types
589
594
  karnel supabase migrate push
590
595
  ```
591
596
 
597
+ The downloaded Linux binary may still fail on Android because of unsupported
598
+ system calls. The wrapper reports a `SIGSYS` failure and recommends PRoot or a
599
+ Linux host; installation alone does not guarantee native Android compatibility.
600
+
601
+ ---
602
+
603
+ ## plugin — Plugin manager
604
+
605
+ ```bash
606
+ karnel plugin <subcommand> [options]
607
+ ```
608
+
609
+ | Subcommand | Description |
610
+ |------------|-------------|
611
+ | `search [query]` | Search the pinned approved registry snapshot |
612
+ | `install <name>` | Install a plugin from that registry |
613
+ | `install <owner/repo> --unsafe` | Install an unreviewed repository after confirmation |
614
+ | `update <name>` | Atomically update an installed plugin |
615
+ | `remove` / `uninstall <name>` | Remove an installed plugin |
616
+ | `list` / `ls` | List installed plugins and their trust source |
617
+ | `create` / `scaffold <name>` | Create and activate a validated local plugin scaffold |
618
+
619
+ Search accepts `--command <name>`, `--compatible`, and `--capability <name>`.
620
+ Capabilities are `network`, `filesystem-read`, `filesystem-write`, `process`,
621
+ and `environment`. `--unsafe` applies only to `install` and `update`.
622
+
623
+ Plugins are Bash code, run with the current user's permissions, and are not
624
+ sandboxed. Registry review and manifest validation are not isolation boundaries.
625
+
626
+ ```bash
627
+ karnel plugin search backup --compatible
628
+ karnel plugin install karnel-hello
629
+ karnel plugin install owner/repo --unsafe
630
+ karnel plugin update karnel-hello
631
+ karnel plugin remove karnel-hello
632
+ ```
633
+
592
634
  ---
593
635
 
594
636
  ## pg — PostgreSQL manager
@@ -659,23 +701,29 @@ karnel backup restore [file]
659
701
  ```
660
702
 
661
703
  Creates `$KARNEL_DATA/backups/termux-<timestamp>.tar.gz` with SHA256 checksum.
704
+ Concurrent runs reserve distinct names atomically instead of overwriting a
705
+ backup created in the same second.
662
706
 
663
707
  ### Included in backup
664
708
 
665
- - All packages (`dpkg --get-selections`)
666
- - Karnel tool manifest
667
- - Shell configs (`.bashrc`, `.zshrc`, `.profile`)
709
+ - Package selections embedded under `metadata/packages.list` (`dpkg --get-selections`)
710
+ - A catalog snapshot of tool installer directories, not a record of which tools are installed
711
+ - Selected shell configs (`.bashrc`, `.zshrc`, `.profile`, `.zshenv`, `.inputrc`)
668
712
  - Termux configs (fonts, colors, properties)
669
- - SSH keys
670
- - `~/.config` app configs
671
- - APT repositories
713
+ - SSH configuration, known hosts, authorized keys, and public keys; private keys are excluded
714
+ - Selected `~/.config` application directories; `github-copilot`, `nvm`, `coc`, `Code`, and `yarn` are excluded, as are symbolic links and all `.env`, credential, auth, and token files matched by the backup filter
715
+ - `$PREFIX/etc/apt/sources.list` only; files under `sources.list.d` and APT keys are not included
716
+
717
+ Backups are gzip-compressed, not encrypted. API environment variables and SSH
718
+ private keys are not exported, but copied application configuration can still
719
+ contain credentials. Protect local and cloud copies as sensitive plaintext data.
672
720
 
673
721
  ### Options
674
722
 
675
723
  | Flag | Description |
676
724
  |------|-------------|
677
- | `--cloud` | Upload via `rclone` (remote named `karnel`) |
678
- | `snapshot <name>` | Create a named snapshot |
725
+ | `--cloud` | Legacy plaintext upload; requires explicit `KARNEL_ALLOW_PLAINTEXT_CLOUD_BACKUP=1` acknowledgement |
726
+ | `snapshot <name>` | Create a timestamped named snapshot using the same contents and secret filter as a full backup; names accept 1-64 letters, numbers, dots, underscores, or hyphens |
679
727
  | `list` / `ls` | List full backups and snapshots |
680
728
  | `info` / `show [file]` | Show a backup's contents (latest if omitted) |
681
729
  | `--cron` | Schedule a daily backup at 3:00 AM |
@@ -689,6 +737,11 @@ karnel backup snapshot before-update
689
737
  karnel backup list
690
738
  ```
691
739
 
740
+ Cloud backup is disabled by default because the archive is not encrypted or
741
+ signed. The legacy opt-in uploads both archive and checksum, but they share the
742
+ same remote trust boundary. Package selections and the informational tool
743
+ catalog are embedded in the archive.
744
+
692
745
  ---
693
746
 
694
747
  ## restore — Full Termux restore
@@ -699,22 +752,28 @@ karnel restore [--cloud] [--list] [<file>]
699
752
 
700
753
  ### What it restores
701
754
 
702
- - Shell configs to `~/`
755
+ - Selected shell configs to `~/`
703
756
  - Termux configs
704
- - SSH keys
705
- - `~/.config` directory
706
- - APT sources
707
- - Package list (via `dpkg --set-selections` + `apt-get dselect-upgrade`)
708
- - Karnel tools (from manifest)
709
-
710
- Verifies SHA256 checksum automatically if available.
757
+ - SSH configuration and public keys (legacy archives may also contain private keys)
758
+ - The selected `.config` directories present in the archive
759
+ - `$PREFIX/etc/apt/sources.list` when present
760
+ - Embedded package selections (via `dpkg --set-selections` + `apt-get dselect-upgrade`)
761
+ - The tool catalog is retained as metadata only; Karnel does not incorrectly reinstall every tool in the source catalog
762
+
763
+ Requires and verifies the SHA256 checksum before extraction. Restore rejects
764
+ archives containing traversal paths, links, devices, or other unsafe entries.
765
+ Configuration is first merged into staging so unrelated existing files remain
766
+ in place, then committed with local backups. A copy, move, or package-restore
767
+ failure rolls configuration back instead of reporting a partial success.
768
+ Package-manager operations themselves are not transactionally reversible by
769
+ Karnel if `apt-get` changes package state before returning an error.
711
770
 
712
771
  ### Options
713
772
 
714
773
  | Argument | Description |
715
774
  |----------|-------------|
716
775
  | `<file>` | Path to a specific backup file |
717
- | `--cloud` | Download and restore via the `karnel` rclone remote |
776
+ | `--cloud` | Legacy unauthenticated cloud restore; requires `KARNEL_ALLOW_UNAUTHENTICATED_CLOUD_RESTORE=1` |
718
777
  | `--list`, `-l` | List available full backups and snapshots |
719
778
  | `--help`, `-h` | Show help |
720
779