karnel-termux 0.0.1
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.
- package/LICENSE +21 -0
- package/README.md +454 -0
- package/install.sh +272 -0
- package/karnel/bin/karnel +77 -0
- package/karnel/cli/commands/brain.sh +1553 -0
- package/karnel/cli/commands/cleanup.sh +66 -0
- package/karnel/cli/commands/doctor.sh +1528 -0
- package/karnel/cli/commands/env.sh +233 -0
- package/karnel/cli/commands/help.sh +8 -0
- package/karnel/cli/commands/ia.sh +502 -0
- package/karnel/cli/commands/init.sh +1274 -0
- package/karnel/cli/commands/install.sh +718 -0
- package/karnel/cli/commands/list.sh +399 -0
- package/karnel/cli/commands/open.sh +106 -0
- package/karnel/cli/commands/pg.sh +719 -0
- package/karnel/cli/commands/reinstall.sh +663 -0
- package/karnel/cli/commands/show.sh +90 -0
- package/karnel/cli/commands/start.sh +54 -0
- package/karnel/cli/commands/status.sh +96 -0
- package/karnel/cli/commands/uninstall.sh +668 -0
- package/karnel/cli/commands/update.sh +723 -0
- package/karnel/cli/commands/upgrade.sh +40 -0
- package/karnel/cli/commands/version.sh +3 -0
- package/karnel/cli/commands/voice.sh +230 -0
- package/karnel/cli/karnel.sh +706 -0
- package/karnel/modules/ai.sh +135 -0
- package/karnel/modules/auto.sh +114 -0
- package/karnel/modules/db.sh +132 -0
- package/karnel/modules/deploy.sh +74 -0
- package/karnel/modules/dev.sh +148 -0
- package/karnel/modules/editor.sh +115 -0
- package/karnel/modules/lang.sh +124 -0
- package/karnel/modules/npm.sh +146 -0
- package/karnel/modules/shell.sh +338 -0
- package/karnel/modules/ui.sh +139 -0
- package/karnel/modules/voice.sh +118 -0
- package/karnel/tools/ai/all.sh +209 -0
- package/karnel/tools/ai/antigravity-cli/README.md +45 -0
- package/karnel/tools/ai/antigravity-cli/bin/agy +28 -0
- package/karnel/tools/ai/antigravity-cli/helper/agy_helper.c +39 -0
- package/karnel/tools/ai/antigravity-cli/install.sh +469 -0
- package/karnel/tools/ai/claude-code/README.md +45 -0
- package/karnel/tools/ai/claude-code/bin/claude +29 -0
- package/karnel/tools/ai/claude-code/helper/claude_helper.c +42 -0
- package/karnel/tools/ai/claude-code/install.sh +278 -0
- package/karnel/tools/ai/cline/install.sh +160 -0
- package/karnel/tools/ai/codegraph/README.md +43 -0
- package/karnel/tools/ai/codegraph/bin/codegraph +5 -0
- package/karnel/tools/ai/codegraph/install.sh +160 -0
- package/karnel/tools/ai/codex/README.md +44 -0
- package/karnel/tools/ai/codex/install.sh +104 -0
- package/karnel/tools/ai/command-code/README.md +62 -0
- package/karnel/tools/ai/command-code/install.sh +136 -0
- package/karnel/tools/ai/crush/README.md +17 -0
- package/karnel/tools/ai/crush/install.sh +89 -0
- package/karnel/tools/ai/ctx7/README.md +26 -0
- package/karnel/tools/ai/ctx7/install.sh +61 -0
- package/karnel/tools/ai/engram/README.md +44 -0
- package/karnel/tools/ai/engram/install.sh +127 -0
- package/karnel/tools/ai/freebuff/README.md +52 -0
- package/karnel/tools/ai/freebuff/bin/freebuff +28 -0
- package/karnel/tools/ai/freebuff/helper/freebuff_helper.c +47 -0
- package/karnel/tools/ai/freebuff/install.sh +303 -0
- package/karnel/tools/ai/gemini-cli/README.md +46 -0
- package/karnel/tools/ai/gemini-cli/install.sh +111 -0
- package/karnel/tools/ai/gentle-ai/README.md +42 -0
- package/karnel/tools/ai/gentle-ai/install.sh +253 -0
- package/karnel/tools/ai/gentle-ai/termux-patches.go +256 -0
- package/karnel/tools/ai/gga/README.md +49 -0
- package/karnel/tools/ai/gga/install.sh +134 -0
- package/karnel/tools/ai/hermes-agent/README.md +50 -0
- package/karnel/tools/ai/hermes-agent/install.sh +120 -0
- package/karnel/tools/ai/kilocode-cli/README.md +45 -0
- package/karnel/tools/ai/kilocode-cli/bin/kilocode +21 -0
- package/karnel/tools/ai/kilocode-cli/helper/kilocode_helper.c +47 -0
- package/karnel/tools/ai/kilocode-cli/install.sh +179 -0
- package/karnel/tools/ai/kimchi-code/README.md +53 -0
- package/karnel/tools/ai/kimchi-code/install.sh +221 -0
- package/karnel/tools/ai/kimi-code/README.md +45 -0
- package/karnel/tools/ai/kimi-code/install.sh +111 -0
- package/karnel/tools/ai/kiro/README.md +17 -0
- package/karnel/tools/ai/kiro/install.sh +134 -0
- package/karnel/tools/ai/mimocode/README.md +43 -0
- package/karnel/tools/ai/mimocode/bin/mimo +28 -0
- package/karnel/tools/ai/mimocode/helper/mimocode_helper.c +47 -0
- package/karnel/tools/ai/mimocode/install.sh +287 -0
- package/karnel/tools/ai/minimax-cli/README.md +45 -0
- package/karnel/tools/ai/minimax-cli/install.sh +111 -0
- package/karnel/tools/ai/mistral-vibe/README.md +46 -0
- package/karnel/tools/ai/mistral-vibe/install.sh +119 -0
- package/karnel/tools/ai/odysseus/README.md +35 -0
- package/karnel/tools/ai/odysseus/install.sh +198 -0
- package/karnel/tools/ai/ollama/README.md +44 -0
- package/karnel/tools/ai/ollama/install.sh +78 -0
- package/karnel/tools/ai/omni-route/README.md +111 -0
- package/karnel/tools/ai/omni-route/install.sh +165 -0
- package/karnel/tools/ai/openclaude/README.md +46 -0
- package/karnel/tools/ai/openclaude/install.sh +110 -0
- package/karnel/tools/ai/openclaw/README.md +47 -0
- package/karnel/tools/ai/openclaw/install.sh +112 -0
- package/karnel/tools/ai/opencode/README.md +51 -0
- package/karnel/tools/ai/opencode/bin/opencode +28 -0
- package/karnel/tools/ai/opencode/helper/opencode_helper.c +57 -0
- package/karnel/tools/ai/opencode/install.sh +290 -0
- package/karnel/tools/ai/openspec/README.md +34 -0
- package/karnel/tools/ai/openspec/install.sh +61 -0
- package/karnel/tools/ai/pi/README.md +46 -0
- package/karnel/tools/ai/pi/install.sh +104 -0
- package/karnel/tools/ai/qwen-code/README.md +45 -0
- package/karnel/tools/ai/qwen-code/install.sh +111 -0
- package/karnel/tools/auto/all.sh +57 -0
- package/karnel/tools/auto/n8n/README.md +47 -0
- package/karnel/tools/auto/n8n/install.sh +102 -0
- package/karnel/tools/db/all.sh +61 -0
- package/karnel/tools/db/mariadb/README.md +43 -0
- package/karnel/tools/db/mariadb/install.sh +65 -0
- package/karnel/tools/db/mongodb/README.md +42 -0
- package/karnel/tools/db/mongodb/install.sh +73 -0
- package/karnel/tools/db/postgresql/README.md +45 -0
- package/karnel/tools/db/postgresql/install.sh +65 -0
- package/karnel/tools/db/redis/README.md +46 -0
- package/karnel/tools/db/redis/install.sh +64 -0
- package/karnel/tools/db/sqlite/README.md +44 -0
- package/karnel/tools/db/sqlite/install.sh +65 -0
- package/karnel/tools/deploy/all.sh +43 -0
- package/karnel/tools/deploy/netlify/install.sh +41 -0
- package/karnel/tools/deploy/railway/install.sh +109 -0
- package/karnel/tools/deploy/vercel/install.sh +43 -0
- package/karnel/tools/dev/all.sh +77 -0
- package/karnel/tools/dev/bat/README.md +44 -0
- package/karnel/tools/dev/bat/install.sh +82 -0
- package/karnel/tools/dev/bc/README.md +44 -0
- package/karnel/tools/dev/bc/install.sh +82 -0
- package/karnel/tools/dev/cloudflared/README.md +43 -0
- package/karnel/tools/dev/cloudflared/install.sh +82 -0
- package/karnel/tools/dev/curl/README.md +43 -0
- package/karnel/tools/dev/curl/install.sh +82 -0
- package/karnel/tools/dev/fzf/README.md +44 -0
- package/karnel/tools/dev/fzf/install.sh +82 -0
- package/karnel/tools/dev/gh/README.md +43 -0
- package/karnel/tools/dev/gh/install.sh +82 -0
- package/karnel/tools/dev/html2text/README.md +44 -0
- package/karnel/tools/dev/html2text/install.sh +82 -0
- package/karnel/tools/dev/imagemagick/README.md +44 -0
- package/karnel/tools/dev/imagemagick/install.sh +82 -0
- package/karnel/tools/dev/jq/README.md +44 -0
- package/karnel/tools/dev/jq/install.sh +82 -0
- package/karnel/tools/dev/lsd/README.md +44 -0
- package/karnel/tools/dev/lsd/install.sh +82 -0
- package/karnel/tools/dev/make/README.md +44 -0
- package/karnel/tools/dev/make/install.sh +82 -0
- package/karnel/tools/dev/ncurses/README.md +42 -0
- package/karnel/tools/dev/ncurses/install.sh +82 -0
- package/karnel/tools/dev/openssh/README.md +43 -0
- package/karnel/tools/dev/openssh/install.sh +75 -0
- package/karnel/tools/dev/proot/README.md +43 -0
- package/karnel/tools/dev/proot/install.sh +82 -0
- package/karnel/tools/dev/shfmt/README.md +44 -0
- package/karnel/tools/dev/shfmt/install.sh +82 -0
- package/karnel/tools/dev/tmate/README.md +44 -0
- package/karnel/tools/dev/tmate/install.sh +82 -0
- package/karnel/tools/dev/tmux/README.md +43 -0
- package/karnel/tools/dev/tmux/install.sh +75 -0
- package/karnel/tools/dev/translate/README.md +44 -0
- package/karnel/tools/dev/translate/install.sh +82 -0
- package/karnel/tools/dev/tree/README.md +44 -0
- package/karnel/tools/dev/tree/install.sh +82 -0
- package/karnel/tools/dev/udocker/README.md +44 -0
- package/karnel/tools/dev/udocker/install.sh +82 -0
- package/karnel/tools/dev/wget/README.md +44 -0
- package/karnel/tools/dev/wget/install.sh +82 -0
- package/karnel/tools/editor/all.sh +59 -0
- package/karnel/tools/editor/code-server/README.md +42 -0
- package/karnel/tools/editor/code-server/install.sh +74 -0
- package/karnel/tools/editor/neovim/README.md +43 -0
- package/karnel/tools/editor/neovim/install.sh +64 -0
- package/karnel/tools/editor/nvchad/README.md +45 -0
- package/karnel/tools/editor/nvchad/install.sh +105 -0
- package/karnel/tools/lang/all.sh +63 -0
- package/karnel/tools/lang/clang/README.md +43 -0
- package/karnel/tools/lang/clang/install.sh +79 -0
- package/karnel/tools/lang/golang/README.md +43 -0
- package/karnel/tools/lang/golang/install.sh +79 -0
- package/karnel/tools/lang/nodejs/README.md +43 -0
- package/karnel/tools/lang/nodejs/install.sh +79 -0
- package/karnel/tools/lang/perl/README.md +43 -0
- package/karnel/tools/lang/perl/install.sh +79 -0
- package/karnel/tools/lang/php/README.md +43 -0
- package/karnel/tools/lang/php/install.sh +79 -0
- package/karnel/tools/lang/python/README.md +43 -0
- package/karnel/tools/lang/python/install.sh +79 -0
- package/karnel/tools/lang/rust/README.md +43 -0
- package/karnel/tools/lang/rust/install.sh +79 -0
- package/karnel/tools/npm/all.sh +90 -0
- package/karnel/tools/npm/live-server/README.md +43 -0
- package/karnel/tools/npm/live-server/install.sh +96 -0
- package/karnel/tools/npm/localtunnel/README.md +43 -0
- package/karnel/tools/npm/localtunnel/install.sh +112 -0
- package/karnel/tools/npm/markserv/README.md +43 -0
- package/karnel/tools/npm/markserv/install.sh +95 -0
- package/karnel/tools/npm/ncu/README.md +43 -0
- package/karnel/tools/npm/ncu/install.sh +95 -0
- package/karnel/tools/npm/nestjs/README.md +43 -0
- package/karnel/tools/npm/nestjs/install.sh +95 -0
- package/karnel/tools/npm/ngrok/README.md +44 -0
- package/karnel/tools/npm/ngrok/install.sh +95 -0
- package/karnel/tools/npm/prettier/README.md +43 -0
- package/karnel/tools/npm/prettier/install.sh +95 -0
- package/karnel/tools/npm/psqlformat/README.md +43 -0
- package/karnel/tools/npm/psqlformat/install.sh +95 -0
- package/karnel/tools/npm/turbopack/README.md +8 -0
- package/karnel/tools/npm/turbopack/install.sh +42 -0
- package/karnel/tools/npm/typescript/README.md +43 -0
- package/karnel/tools/npm/typescript/install.sh +95 -0
- package/karnel/tools/npm/vercel/README.md +43 -0
- package/karnel/tools/npm/vercel/install.sh +95 -0
- package/karnel/tools/shell/all.sh +67 -0
- package/karnel/tools/shell/better-npm/README.md +43 -0
- package/karnel/tools/shell/better-npm/install.sh +85 -0
- package/karnel/tools/shell/fzf-tab/README.md +44 -0
- package/karnel/tools/shell/fzf-tab/install.sh +85 -0
- package/karnel/tools/shell/history-substring/README.md +43 -0
- package/karnel/tools/shell/history-substring/install.sh +85 -0
- package/karnel/tools/shell/powerlevel10k/README.md +43 -0
- package/karnel/tools/shell/powerlevel10k/install.sh +85 -0
- package/karnel/tools/shell/you-should-use/README.md +43 -0
- package/karnel/tools/shell/you-should-use/install.sh +85 -0
- package/karnel/tools/shell/zsh-autopair/README.md +44 -0
- package/karnel/tools/shell/zsh-autopair/install.sh +85 -0
- package/karnel/tools/shell/zsh-autosuggestions/README.md +43 -0
- package/karnel/tools/shell/zsh-autosuggestions/install.sh +85 -0
- package/karnel/tools/shell/zsh-completions/README.md +43 -0
- package/karnel/tools/shell/zsh-completions/install.sh +85 -0
- package/karnel/tools/shell/zsh-defer/README.md +43 -0
- package/karnel/tools/shell/zsh-defer/install.sh +85 -0
- package/karnel/tools/shell/zsh-syntax-highlighting/README.md +43 -0
- package/karnel/tools/shell/zsh-syntax-highlighting/install.sh +72 -0
- package/karnel/tools/ui/all.sh +61 -0
- package/karnel/tools/ui/banner/README.md +42 -0
- package/karnel/tools/ui/banner/install.sh +160 -0
- package/karnel/tools/ui/cursor/README.md +42 -0
- package/karnel/tools/ui/cursor/install.sh +58 -0
- package/karnel/tools/ui/extra-keys/README.md +43 -0
- package/karnel/tools/ui/extra-keys/install.sh +62 -0
- package/karnel/tools/ui/font/README.md +43 -0
- package/karnel/tools/ui/font/install.sh +63 -0
- package/karnel/tools/voice/all.sh +27 -0
- package/karnel/tools/voice/install.sh +10 -0
- package/karnel/tools/voice/uninstall.sh +8 -0
- package/karnel/utils/banner.sh +492 -0
- package/karnel/utils/bootstrap.sh +25 -0
- package/karnel/utils/colors.sh +33 -0
- package/karnel/utils/dialogrc +30 -0
- package/karnel/utils/env.sh +53 -0
- package/karnel/utils/log.sh +567 -0
- package/karnel/utils/version.sh +205 -0
- package/package.json +42 -0
- package/scripts/npm-install.js +60 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Freebuff
|
|
2
|
+
|
|
3
|
+
A 100% free coding agent, right from your terminal
|
|
4
|
+
|
|
5
|
+
**Package:** freebuff
|
|
6
|
+
**Author:** israel marques
|
|
7
|
+
**Repository:** https://github.com/israelmarques1024-dotcom/karnel-termux
|
|
8
|
+
**Official:** https://freebuff.com
|
|
9
|
+
**Releases:** https://github.com/CodebuffAI/codebuff
|
|
10
|
+
**Type:** AI coding agent (Binary + glibc bootstrapper)
|
|
11
|
+
**License:** MIT
|
|
12
|
+
|
|
13
|
+
## Description
|
|
14
|
+
|
|
15
|
+
Freebuff is the free coding agent: a free CLI coding agent and Freebuff Web, the free way to build full-stack apps. No subscription, no setup, no lock-in. Karnel Termux offers two installation methods: native with glibc support for best performance, or via proot-distro Ubuntu container for maximum compatibility.
|
|
16
|
+
|
|
17
|
+
## Dependencies
|
|
18
|
+
|
|
19
|
+
- **Native mode:** glibc-repo, glibc, clang, git, curl, tar
|
|
20
|
+
- **Proot mode:** proot-distro, curl, ca-certificates, tar
|
|
21
|
+
|
|
22
|
+
## Install
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
karnel install ai --freebuff
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
You will be prompted to choose:
|
|
29
|
+
|
|
30
|
+
1. **Native (recommended)** — Compiles a glibc bootstrapper and downloads the latest Freebuff binary from GitHub releases
|
|
31
|
+
2. **Proot-distro (alternative)** — Runs Freebuff inside an Ubuntu proot-distro container
|
|
32
|
+
|
|
33
|
+
## Uninstall
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
karnel uninstall ai --freebuff
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Update
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
karnel update ai --freebuff
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Notes
|
|
46
|
+
|
|
47
|
+
- **Native mode** requires `glibc-repo`, `glibc`, `clang`, and other dependencies (installed automatically)
|
|
48
|
+
- The native binary is stored in `~/.local/share/karnel-data/freebuff/`
|
|
49
|
+
- A small C bootstrapper (`freebuff_helper.c`) handles ELF loading via the glibc dynamic linker
|
|
50
|
+
- **Proot mode** uses `proot-distro ubuntu` and downloads the binary directly inside the container
|
|
51
|
+
- Version is fetched automatically from GitHub releases (`CodebuffAI/codebuff-community`)
|
|
52
|
+
- Data directory: `~/.local/share/karnel-data/freebuff/`
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/data/data/com.termux/files/usr/bin/bash
|
|
2
|
+
|
|
3
|
+
UBUNTU_ROOTFS="__UBUNTU_ROOTFS__"
|
|
4
|
+
|
|
5
|
+
EXCLUDE_REGEX="^(PATH|LD_PRELOAD|LD_LIBRARY_PATH|PREFIX|HOME|PWD|OLDPWD|SHELL|IFS|_|SHLVL|PROMPT_COMMAND|TERMCAP|LS_COLORS|TERM)="
|
|
6
|
+
|
|
7
|
+
ENV_ARGS=()
|
|
8
|
+
while IFS= read -r line; do
|
|
9
|
+
if [[ -n "$line" && ! "$line" =~ $EXCLUDE_REGEX ]]; then
|
|
10
|
+
ENV_ARGS+=("--env" "$line")
|
|
11
|
+
fi
|
|
12
|
+
done < <(env)
|
|
13
|
+
|
|
14
|
+
ENV_ARGS+=(
|
|
15
|
+
"--env" "SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt"
|
|
16
|
+
"--env" "TERM=$TERM"
|
|
17
|
+
"--env" "HOME=/root"
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
unset LD_PRELOAD
|
|
21
|
+
proot-distro login \
|
|
22
|
+
"${ENV_ARGS[@]}" \
|
|
23
|
+
--termux-home \
|
|
24
|
+
--shared-tmp \
|
|
25
|
+
--bind "$UBUNTU_ROOTFS/root/.freebuff:/root/.freebuff" \
|
|
26
|
+
--work-dir $PWD \
|
|
27
|
+
ubuntu \
|
|
28
|
+
-- /root/.freebuff/freebuff "$@"
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#include <stdlib.h>
|
|
2
|
+
#include <unistd.h>
|
|
3
|
+
#include <string.h>
|
|
4
|
+
#include <libgen.h>
|
|
5
|
+
#include <limits.h>
|
|
6
|
+
#include <stdio.h>
|
|
7
|
+
|
|
8
|
+
int main(int argc, char** argv) {
|
|
9
|
+
unsetenv("LD_PRELOAD");
|
|
10
|
+
unsetenv("LD_LIBRARY_PATH");
|
|
11
|
+
|
|
12
|
+
setenv("GODEBUG", "netdns=cgo", 1);
|
|
13
|
+
setenv("SSL_CERT_FILE", "/data/data/com.termux/files/usr/etc/tls/cert.pem", 1);
|
|
14
|
+
|
|
15
|
+
char exec_path[PATH_MAX];
|
|
16
|
+
ssize_t len = readlink("/proc/self/exe", exec_path, sizeof(exec_path) - 1);
|
|
17
|
+
if (len == -1) {
|
|
18
|
+
return 1;
|
|
19
|
+
}
|
|
20
|
+
exec_path[len] = '\0';
|
|
21
|
+
char* dir = dirname(exec_path);
|
|
22
|
+
|
|
23
|
+
char* loader = "/data/data/com.termux/files/usr/glibc/lib/ld-linux-aarch64.so.1";
|
|
24
|
+
char real_bin[] = "/data/data/com.termux/files/home/.local/share/karnel-data/freebuff/freebuff";
|
|
25
|
+
char lib_path[] = "/data/data/com.termux/files/usr/glibc/lib";
|
|
26
|
+
|
|
27
|
+
char** new_argv = malloc((argc + 4) * sizeof(char*));
|
|
28
|
+
if (!new_argv) {
|
|
29
|
+
return 1;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
new_argv[0] = loader;
|
|
33
|
+
new_argv[1] = "--library-path";
|
|
34
|
+
new_argv[2] = lib_path;
|
|
35
|
+
new_argv[3] = real_bin;
|
|
36
|
+
|
|
37
|
+
for (int i = 1; i < argc; i++) {
|
|
38
|
+
new_argv[i + 3] = argv[i];
|
|
39
|
+
}
|
|
40
|
+
new_argv[argc + 3] = NULL;
|
|
41
|
+
|
|
42
|
+
execv(loader, new_argv);
|
|
43
|
+
|
|
44
|
+
perror("execv");
|
|
45
|
+
free(new_argv);
|
|
46
|
+
return 1;
|
|
47
|
+
}
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
import "@/utils/log"
|
|
4
|
+
import "@/utils/colors"
|
|
5
|
+
|
|
6
|
+
LOG_FILE="$KARNEL_CACHE/install_ai.log"
|
|
7
|
+
FREEBUFF_DATA_DIR="$HOME/.local/share/karnel-data/freebuff"
|
|
8
|
+
|
|
9
|
+
_freebuff_detect_ubuntu_root() {
|
|
10
|
+
local root
|
|
11
|
+
root="$(find /data/data/com.termux -maxdepth 10 -type d \
|
|
12
|
+
-name "rootfs" -path "*/containers/ubuntu/*" 2>/dev/null | head -1)"
|
|
13
|
+
|
|
14
|
+
if [ -z "$root" ]; then
|
|
15
|
+
root="$(find /data/data/com.termux -maxdepth 10 -type d \
|
|
16
|
+
-name "ubuntu" -path "*/installed-rootfs/*" 2>/dev/null | head -1)"
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
echo "$root"
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
_freebuff_proot_ubuntu() {
|
|
23
|
+
proot-distro login \
|
|
24
|
+
--shared-tmp \
|
|
25
|
+
ubuntu \
|
|
26
|
+
-- "$@"
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
_get_latest_freebuff_version() {
|
|
30
|
+
curl -fsSL https://api.github.com/repos/CodebuffAI/codebuff-community/releases/latest |
|
|
31
|
+
grep '"tag_name":' | sed -E 's/.*"freebuff-v([^"]+)".*/\1/'
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
_freebuff_install_deps_native() {
|
|
35
|
+
loading "Installing glibc and dependencies" _freebuff_install_deps_native_impl
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
_freebuff_install_deps_native_impl() {
|
|
39
|
+
if [[ ! -f $PREFIX/etc/apt/sources.list.d/glibc.list ]]; then
|
|
40
|
+
if ! pkg install glibc-repo -y &>>"$LOG_FILE"; then
|
|
41
|
+
log_error "Failed to install glibc-repo"
|
|
42
|
+
return 1
|
|
43
|
+
fi
|
|
44
|
+
fi
|
|
45
|
+
|
|
46
|
+
if [[ ! -f $PREFIX/glibc/lib/libc.so.6 ]]; then
|
|
47
|
+
if ! pkg install glibc -y &>>"$LOG_FILE"; then
|
|
48
|
+
log_error "Failed to install glibc"
|
|
49
|
+
return 1
|
|
50
|
+
fi
|
|
51
|
+
fi
|
|
52
|
+
|
|
53
|
+
declare -A DEPS=(
|
|
54
|
+
["git"]="git"
|
|
55
|
+
["curl"]="curl"
|
|
56
|
+
["tar"]="tar"
|
|
57
|
+
["clang"]="clang"
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
local pkg_name bin_name
|
|
61
|
+
for pkg_name in "${!DEPS[@]}"; do
|
|
62
|
+
bin_name="${DEPS[$pkg_name]}"
|
|
63
|
+
if ! command -v "$bin_name" &>/dev/null; then
|
|
64
|
+
if ! pkg install "$pkg_name" -y &>>"$LOG_FILE"; then
|
|
65
|
+
log_error "Failed to install $pkg_name"
|
|
66
|
+
return 1
|
|
67
|
+
fi
|
|
68
|
+
fi
|
|
69
|
+
done
|
|
70
|
+
|
|
71
|
+
return 0
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
_download_freebuff_binary() {
|
|
75
|
+
loading "Downloading Freebuff" _download_freebuff_binary_impl
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
_download_freebuff_binary_impl() {
|
|
79
|
+
local latest_version
|
|
80
|
+
latest_version=$(_get_latest_freebuff_version)
|
|
81
|
+
if [ -z "$latest_version" ]; then
|
|
82
|
+
log_error "Failed to fetch latest Freebuff version"
|
|
83
|
+
return 1
|
|
84
|
+
fi
|
|
85
|
+
|
|
86
|
+
mkdir -p "$FREEBUFF_DATA_DIR"
|
|
87
|
+
|
|
88
|
+
local tarball="freebuff-linux-arm64.tar.gz"
|
|
89
|
+
local download_url="https://codebuff.com/api/releases/download/$latest_version/$tarball"
|
|
90
|
+
|
|
91
|
+
if ! curl -fsSL "$download_url" -o "$FREEBUFF_DATA_DIR/$tarball" &>>"$LOG_FILE"; then
|
|
92
|
+
log_error "Failed to download Freebuff binary"
|
|
93
|
+
return 1
|
|
94
|
+
fi
|
|
95
|
+
|
|
96
|
+
if ! tar -zxf "$FREEBUFF_DATA_DIR/$tarball" -C "$FREEBUFF_DATA_DIR" &>>"$LOG_FILE"; then
|
|
97
|
+
log_error "Failed to extract Freebuff binary"
|
|
98
|
+
return 1
|
|
99
|
+
fi
|
|
100
|
+
|
|
101
|
+
rm -f "$FREEBUFF_DATA_DIR/$tarball"
|
|
102
|
+
|
|
103
|
+
if [ ! -f "$FREEBUFF_DATA_DIR/freebuff" ]; then
|
|
104
|
+
log_error "Freebuff binary not found after extraction"
|
|
105
|
+
return 1
|
|
106
|
+
fi
|
|
107
|
+
|
|
108
|
+
chmod +x "$FREEBUFF_DATA_DIR/freebuff"
|
|
109
|
+
return 0
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
_compile_freebuff_helper() {
|
|
113
|
+
loading "Compiling helper" _compile_freebuff_helper_impl
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
_compile_freebuff_helper_impl() {
|
|
117
|
+
local HELPER_SRC="$KARNEL_PATH/tools/ai/freebuff/helper/freebuff_helper.c"
|
|
118
|
+
if [ ! -f "$HELPER_SRC" ]; then
|
|
119
|
+
log_error "Helper source not found at $HELPER_SRC"
|
|
120
|
+
return 1
|
|
121
|
+
fi
|
|
122
|
+
|
|
123
|
+
if ! clang -O2 -o "$PREFIX/bin/freebuff" "$HELPER_SRC" &>>"$LOG_FILE"; then
|
|
124
|
+
log_error "Failed to compile freebuff helper"
|
|
125
|
+
return 1
|
|
126
|
+
fi
|
|
127
|
+
|
|
128
|
+
chmod +x "$PREFIX/bin/freebuff"
|
|
129
|
+
return 0
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
_install_freebuff_native() {
|
|
133
|
+
_freebuff_install_deps_native || return 1
|
|
134
|
+
_download_freebuff_binary || return 1
|
|
135
|
+
_compile_freebuff_helper || return 1
|
|
136
|
+
log_success "Freebuff installed natively"
|
|
137
|
+
return 0
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
_install_freebuff_proot() {
|
|
141
|
+
loading "Installing Freebuff (proot-distro)" _install_freebuff_proot_impl
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
_install_freebuff_proot_impl() {
|
|
145
|
+
mkdir -p "$(dirname "$LOG_FILE")"
|
|
146
|
+
|
|
147
|
+
if ! command -v proot-distro &>/dev/null; then
|
|
148
|
+
pkg install proot-distro -y &>>"$LOG_FILE"
|
|
149
|
+
fi
|
|
150
|
+
|
|
151
|
+
if [ ! -d "$(_freebuff_detect_ubuntu_root)" ]; then
|
|
152
|
+
proot-distro install ubuntu:24.04 &>>"$LOG_FILE"
|
|
153
|
+
fi
|
|
154
|
+
|
|
155
|
+
_freebuff_proot_ubuntu /bin/bash -c \
|
|
156
|
+
'apt-get update && apt-get upgrade -y && apt-get install -y curl ca-certificates tar' \
|
|
157
|
+
&>>"$LOG_FILE"
|
|
158
|
+
|
|
159
|
+
_freebuff_proot_ubuntu /bin/bash -c '
|
|
160
|
+
export SHELL=/bin/bash
|
|
161
|
+
export TMPDIR=/tmp
|
|
162
|
+
export HOME=/root
|
|
163
|
+
LATEST=$(curl -fsSL https://api.github.com/repos/CodebuffAI/codebuff-community/releases/latest | grep '"'"'tag_name'"'"' | sed -E '"'"'s/.*"freebuff-v([^"]+)".*/\1/'"'"')
|
|
164
|
+
TARBALL=$(mktemp /tmp/freebuff.XXXXXX.tar.gz)
|
|
165
|
+
curl -fsSL "https://codebuff.com/api/releases/download/${LATEST}/freebuff-linux-arm64.tar.gz" -o "$TARBALL"
|
|
166
|
+
mkdir -p /root/.freebuff
|
|
167
|
+
tar -zxf "$TARBALL" -C /root/.freebuff
|
|
168
|
+
rm -f "$TARBALL"
|
|
169
|
+
chmod +x /root/.freebuff/freebuff
|
|
170
|
+
' &>>"$LOG_FILE"
|
|
171
|
+
|
|
172
|
+
local ubuntu_root
|
|
173
|
+
ubuntu_root="$(_freebuff_detect_ubuntu_root)"
|
|
174
|
+
|
|
175
|
+
if [ -z "$ubuntu_root" ]; then
|
|
176
|
+
log_error "Ubuntu rootfs not found"
|
|
177
|
+
return 1
|
|
178
|
+
fi
|
|
179
|
+
|
|
180
|
+
local freebuff_bin="$ubuntu_root/root/.freebuff/freebuff"
|
|
181
|
+
|
|
182
|
+
if [ ! -f "$freebuff_bin" ]; then
|
|
183
|
+
log_error "Freebuff binary not found after install"
|
|
184
|
+
return 1
|
|
185
|
+
fi
|
|
186
|
+
|
|
187
|
+
local wrapper_src="$KARNEL_PATH/tools/ai/freebuff/bin/freebuff"
|
|
188
|
+
if [ ! -f "$wrapper_src" ]; then
|
|
189
|
+
log_error "Wrapper template not found at $wrapper_src"
|
|
190
|
+
return 1
|
|
191
|
+
fi
|
|
192
|
+
sed "s|__UBUNTU_ROOTFS__|$ubuntu_root|g" "$wrapper_src" >"$PREFIX/bin/freebuff"
|
|
193
|
+
chmod +x "$PREFIX/bin/freebuff"
|
|
194
|
+
|
|
195
|
+
if ! grep -q '.freebuff' "$ubuntu_root/root/.bashrc" 2>/dev/null; then
|
|
196
|
+
printf '\n# freebuff\nexport PATH=/root/.freebuff:$PATH\n' >>"$ubuntu_root/root/.bashrc"
|
|
197
|
+
fi
|
|
198
|
+
|
|
199
|
+
return 0
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
install_freebuff() {
|
|
203
|
+
if command -v freebuff &>/dev/null; then
|
|
204
|
+
log_info "Freebuff is already installed"
|
|
205
|
+
return 2
|
|
206
|
+
fi
|
|
207
|
+
|
|
208
|
+
log_info "Installing Freebuff..."
|
|
209
|
+
|
|
210
|
+
if [[ -t 0 ]] && [[ -t 1 ]]; then
|
|
211
|
+
log_info "Select installation method for Freebuff:"
|
|
212
|
+
read_select "Installation method" SELECTED_METHOD \
|
|
213
|
+
"Native (recommended) - Compile with glibc support" \
|
|
214
|
+
"Proot-distro (alternative) - Ubuntu container"
|
|
215
|
+
|
|
216
|
+
case "$SELECTED_METHOD" in
|
|
217
|
+
*Native*)
|
|
218
|
+
_install_freebuff_native
|
|
219
|
+
;;
|
|
220
|
+
*Proot-distro*)
|
|
221
|
+
_install_freebuff_proot
|
|
222
|
+
;;
|
|
223
|
+
esac
|
|
224
|
+
else
|
|
225
|
+
_install_freebuff_native
|
|
226
|
+
fi
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
uninstall_freebuff() {
|
|
230
|
+
log_info "Uninstalling Freebuff..."
|
|
231
|
+
mkdir -p "$(dirname "$LOG_FILE")"
|
|
232
|
+
|
|
233
|
+
if [ ! -f "$PREFIX/bin/freebuff" ]; then
|
|
234
|
+
log_warn "Freebuff is not installed"
|
|
235
|
+
return 1
|
|
236
|
+
fi
|
|
237
|
+
|
|
238
|
+
if [ -f "$FREEBUFF_DATA_DIR/freebuff" ]; then
|
|
239
|
+
rm -f "$PREFIX/bin/freebuff"
|
|
240
|
+
rm -rf "$FREEBUFF_DATA_DIR"
|
|
241
|
+
log_success "Freebuff (native) uninstalled"
|
|
242
|
+
return 0
|
|
243
|
+
fi
|
|
244
|
+
|
|
245
|
+
_freebuff_proot_ubuntu /bin/bash -c 'rm -rf /root/.freebuff' &>>"$LOG_FILE"
|
|
246
|
+
|
|
247
|
+
local ubuntu_bashrc
|
|
248
|
+
ubuntu_bashrc="$(_freebuff_detect_ubuntu_root)/root/.bashrc"
|
|
249
|
+
|
|
250
|
+
if [ -f "$ubuntu_bashrc" ]; then
|
|
251
|
+
sed -i '/# freebuff/d; /export PATH=\/root\/.freebuff/d' "$ubuntu_bashrc"
|
|
252
|
+
fi
|
|
253
|
+
|
|
254
|
+
if rm -f "$PREFIX/bin/freebuff" &>>"$LOG_FILE"; then
|
|
255
|
+
log_success "Freebuff (proot-distro) uninstalled"
|
|
256
|
+
return 0
|
|
257
|
+
else
|
|
258
|
+
log_error "Failed to uninstall Freebuff"
|
|
259
|
+
return 1
|
|
260
|
+
fi
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
update_freebuff() {
|
|
264
|
+
log_info "Updating Freebuff..."
|
|
265
|
+
mkdir -p "$(dirname "$LOG_FILE")"
|
|
266
|
+
|
|
267
|
+
if [ -f "$FREEBUFF_DATA_DIR/freebuff" ]; then
|
|
268
|
+
_install_freebuff_native
|
|
269
|
+
return $?
|
|
270
|
+
fi
|
|
271
|
+
|
|
272
|
+
_freebuff_proot_ubuntu /bin/bash -c 'rm -rf /root/.freebuff' &>>"$LOG_FILE"
|
|
273
|
+
|
|
274
|
+
_freebuff_proot_ubuntu /bin/bash -c '
|
|
275
|
+
export SHELL=/bin/bash
|
|
276
|
+
export TMPDIR=/tmp
|
|
277
|
+
export HOME=/root
|
|
278
|
+
LATEST=$(curl -fsSL https://api.github.com/repos/CodebuffAI/codebuff-community/releases/latest | grep '"'"'tag_name'"'"' | sed -E '"'"'s/.*"freebuff-v([^"]+)".*/\1/'"'"')
|
|
279
|
+
TARBALL=$(mktemp /tmp/freebuff.XXXXXX.tar.gz)
|
|
280
|
+
curl -fsSL "https://codebuff.com/api/releases/download/${LATEST}/freebuff-linux-arm64.tar.gz" -o "$TARBALL"
|
|
281
|
+
mkdir -p /root/.freebuff
|
|
282
|
+
tar -zxf "$TARBALL" -C /root/.freebuff
|
|
283
|
+
rm -f "$TARBALL"
|
|
284
|
+
chmod +x /root/.freebuff/freebuff
|
|
285
|
+
' &>>"$LOG_FILE"
|
|
286
|
+
|
|
287
|
+
local ubuntu_root
|
|
288
|
+
ubuntu_root="$(_freebuff_detect_ubuntu_root)"
|
|
289
|
+
local freebuff_bin="$ubuntu_root/root/.freebuff/freebuff"
|
|
290
|
+
|
|
291
|
+
if [ ! -f "$freebuff_bin" ]; then
|
|
292
|
+
log_error "Freebuff binary not found after update"
|
|
293
|
+
return 1
|
|
294
|
+
fi
|
|
295
|
+
|
|
296
|
+
log_success "Freebuff (proot-distro) updated"
|
|
297
|
+
return 0
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
reinstall_freebuff() {
|
|
301
|
+
uninstall_freebuff
|
|
302
|
+
install_freebuff
|
|
303
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Gemini CLI
|
|
2
|
+
|
|
3
|
+
Google's AI assistant with Gemini
|
|
4
|
+
|
|
5
|
+
**Package:** @google/gemini-cli
|
|
6
|
+
**Author:** israel marques
|
|
7
|
+
**Repository:** https://github.com/israelmarques1024-dotcom/karnel-termux
|
|
8
|
+
**Official:** https://github.com/google-gemini/gemini-cli
|
|
9
|
+
**Type:** AI CLI assistant (npm global package)
|
|
10
|
+
**License:** MIT
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
Gemini CLI is Google's official command-line interface for interacting with the Gemini AI model. It provides code generation, explanation, debugging, and general AI assistance directly from your terminal.
|
|
15
|
+
|
|
16
|
+
## Dependencies
|
|
17
|
+
|
|
18
|
+
- Node.js LTS (nodejs-lts)
|
|
19
|
+
- npm
|
|
20
|
+
- git, ripgrep
|
|
21
|
+
|
|
22
|
+
## Install
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
karnel install ai --gemini-cli
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Uninstall
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
karnel uninstall ai --gemini-cli
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Update
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
karnel update ai --gemini-cli
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Notes
|
|
41
|
+
|
|
42
|
+
- Installed as a global npm package: `@google/gemini-cli`
|
|
43
|
+
- Command: `gemini`
|
|
44
|
+
- Requires an API key from Google AI Studio
|
|
45
|
+
- Environment variable: `GEMINI_API_KEY`
|
|
46
|
+
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
import "@/utils/log"
|
|
4
|
+
|
|
5
|
+
LOG_FILE="$KARNEL_CACHE/install_ai.log"
|
|
6
|
+
|
|
7
|
+
_gemini_cli_dependencies() {
|
|
8
|
+
loading "Installing dependencies" _gemini_cli_dependencies_impl
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
_gemini_cli_dependencies_impl() {
|
|
12
|
+
declare -A DEPS=(
|
|
13
|
+
["nodejs-lts"]="node"
|
|
14
|
+
["git"]="git"
|
|
15
|
+
["ripgrep"]="rg"
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
local pkg_name bin_name
|
|
19
|
+
for pkg_name in "${!DEPS[@]}"; do
|
|
20
|
+
bin_name="${DEPS[$pkg_name]}"
|
|
21
|
+
if ! command -v "$bin_name" &>/dev/null; then
|
|
22
|
+
if ! pkg install "$pkg_name" -y &>>"$LOG_FILE"; then
|
|
23
|
+
log_error "Failed to install $pkg_name"
|
|
24
|
+
return 1
|
|
25
|
+
fi
|
|
26
|
+
fi
|
|
27
|
+
done
|
|
28
|
+
|
|
29
|
+
return 0
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
_install_gemini_cli_npm() {
|
|
33
|
+
loading "Installing Gemini CLI" _install_gemini_cli_npm_impl
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
_install_gemini_cli_npm_impl() {
|
|
37
|
+
export GYP_DEFINES="android_ndk_path=''"
|
|
38
|
+
export ANDROID_API_LEVEL=24
|
|
39
|
+
|
|
40
|
+
if ! npm install -g @google/gemini-cli &>>"$LOG_FILE"; then
|
|
41
|
+
log_error "Failed to install Gemini CLI"
|
|
42
|
+
return 1
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
return 0
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
install_gemini_cli() {
|
|
49
|
+
if command -v gemini &>/dev/null; then
|
|
50
|
+
log_info "Gemini CLI is already installed"
|
|
51
|
+
return 2
|
|
52
|
+
fi
|
|
53
|
+
|
|
54
|
+
log_info "Installing Gemini CLI..."
|
|
55
|
+
|
|
56
|
+
mkdir -p "$(dirname "$LOG_FILE")"
|
|
57
|
+
|
|
58
|
+
_gemini_cli_dependencies || return 1
|
|
59
|
+
_install_gemini_cli_npm || return 1
|
|
60
|
+
|
|
61
|
+
log_success "Gemini CLI installed"
|
|
62
|
+
return 0
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
uninstall_gemini_cli() {
|
|
66
|
+
if ! command -v gemini &>/dev/null; then
|
|
67
|
+
log_info "Gemini CLI is not installed"
|
|
68
|
+
return 2
|
|
69
|
+
fi
|
|
70
|
+
log_info "Uninstalling Gemini CLI..."
|
|
71
|
+
mkdir -p "$(dirname "$LOG_FILE")"
|
|
72
|
+
|
|
73
|
+
loading "Removing Gemini CLI" _uninstall_gemini_cli_impl
|
|
74
|
+
|
|
75
|
+
log_success "Gemini CLI uninstalled"
|
|
76
|
+
return 0
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
_uninstall_gemini_cli_impl() {
|
|
80
|
+
if ! npm uninstall -g @google/gemini-cli &>>"$LOG_FILE"; then
|
|
81
|
+
log_error "Failed to uninstall Gemini CLI"
|
|
82
|
+
return 1
|
|
83
|
+
fi
|
|
84
|
+
return 0
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
update_gemini_cli() {
|
|
88
|
+
log_info "Updating Gemini CLI..."
|
|
89
|
+
mkdir -p "$(dirname "$LOG_FILE")"
|
|
90
|
+
|
|
91
|
+
loading "Updating Gemini CLI" _update_gemini_cli_impl
|
|
92
|
+
|
|
93
|
+
log_success "Gemini CLI updated"
|
|
94
|
+
return 0
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
_update_gemini_cli_impl() {
|
|
98
|
+
export GYP_DEFINES="android_ndk_path=''"
|
|
99
|
+
export ANDROID_API_LEVEL=24
|
|
100
|
+
|
|
101
|
+
if ! npm update -g @google/gemini-cli &>>"$LOG_FILE"; then
|
|
102
|
+
log_error "Failed to update Gemini CLI"
|
|
103
|
+
return 1
|
|
104
|
+
fi
|
|
105
|
+
return 0
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
reinstall_gemini_cli() {
|
|
109
|
+
uninstall_gemini_cli
|
|
110
|
+
install_gemini_cli
|
|
111
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Gentle-AI
|
|
2
|
+
|
|
3
|
+
Ecosystem, Frameworks, Workflows for AI coding agents
|
|
4
|
+
|
|
5
|
+
**Package:** gentle-ai
|
|
6
|
+
**Author:** Gentleman-Programming
|
|
7
|
+
**Repository:** https://github.com/Gentleman-Programming/gentle-ai
|
|
8
|
+
**Type:** AI ecosystem configurator (Go source compile)
|
|
9
|
+
**License:** MIT
|
|
10
|
+
|
|
11
|
+
## Description
|
|
12
|
+
|
|
13
|
+
Gentle-AI is an ecosystem configurator for AI coding agents. It provides persistent memory (Engram), Spec-Driven Development workflows, curated coding skills, MCP servers, an AI provider switcher, a teaching-oriented persona with security-first permissions, and per-phase model assignment for 15+ supported agents.
|
|
14
|
+
|
|
15
|
+
## Dependencies
|
|
16
|
+
|
|
17
|
+
- golang (1.23+), git, curl
|
|
18
|
+
|
|
19
|
+
## Install
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
karnel install ai --gentle-ai
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Uninstall
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
karnel uninstall ai --gentle-ai
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Update
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
karnel update ai --gentle-ai
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Notes
|
|
38
|
+
|
|
39
|
+
- Source cloned from GitHub and compiled natively with Go
|
|
40
|
+
- Termux-specific patches applied automatically for Android compatibility
|
|
41
|
+
- Data directory: `~/.local/share/karnel-data/gentle-ai/`
|
|
42
|
+
- Command: `gentle-ai`
|