# shmakk

AI-supervised terminal. No GUI. No bloat. Just your shell, smarter.
Optionally: talks back.

takes advantage of errors so you don't have to think about them

npm install -g git+https://github.com/marbad1994/shmakk.git
shmakk : MainThread
marcus@tobarko.ai ~/D/r/s/demo-deepseek> shmakk
session started. type commands or questions naturally.
marcus@tobarko.ai ~/D/r/s/demo-deepseek> Hey can we chat?
[shmakk task] (Ctrl-C to interrupt)
⊥ thinking...
Sure, we can chat! What's on your mind? Need help with
something in your project, or just want to bounce around some ideas?
marcus@tobarko.ai ~/D/r/s/demo-deepseek> whats the fastest way to reverse a string in python
[shmakk task] (Ctrl-C to interrupt)
⊥ thinking...
Slice with step -1:
s[::-1]
Fastest and most Pythonic. Works on any sequence.
marcus@tobarko.ai ~/D/r/s/demo-deepseek>
marcus@tobarko.ai ~/D/r/s/demo-deepseek (main)> set up a react and flask project with a login page using oauth, follow best practice and set it up with docker compose and add redis and mongodb
[shmakk task] (Ctrl-C to interrupt)
⊥ thinking...
marcus@tobarko.ai ~/D/r/s/demo-deepseek [127]>
→ list_dir(.)
1 entries
→ make_dir(backend) — created
→ make_dir(frontend/src/components) — created
→ make_dir(nginx) — created
→ write_file(backend/requirements.txt) — written
→ write_file(backend/app.py) — written
· read 3 files
→ write_file(docker-compose.yml) — written
Done. React + Flask + OAuth + Redis + MongoDB + Nginx scaffolded.
Run with: docker compose up --build
marcus@tobarko.ai ~/D/r/s/demo-deepseek>
# shmakk uses your machine's command history + probability
# to correct typos. no LLM call. instant.
marcus@tobarko.ai ~/D/r/s/demo-deepseek> gti commit -m "fix login bug"
[shmakk task] (Ctrl-C to interrupt)
correcting: gti → git (your history, p=0.99)
running: git commit -m "fix login bug"
[main 7d3a91f] fix login bug
2 files changed, 18 insertions(+), 4 deletions(-)
marcus@tobarko.ai ~/D/r/s/demo-deepseek> docekr-compose up
[shmakk task] (Ctrl-C to interrupt)
correcting: docekr-compose → docker-compose (your history, p=0.97)
running: docker-compose up
Starting demo-deepseek_redis_1 ... done
Starting demo-deepseek_mongo_1 ... done
Starting demo-deepseek_backend_1 ... done
marcus@tobarko.ai ~/D/r/s/demo-deepseek>
# install a skill from any URL — shmakk handles the rest
marcus@tobarko.ai ~> shmakk --install-skill https://example.com/skills/rust-expert.md
[shmakk task] (Ctrl-C to interrupt)
⊥ fetching skill...
fetched: rust-expert.md (2.1 KB)
installed to: ~/.shmakk/skills/rust-expert
Skill 'rust-expert' ready. It will be loaded automatically
when relevant context is detected.
marcus@tobarko.ai ~> shmakk --list-skills
rust-expert loaded from https://example.com/skills/rust-expert.md
docker-compose loaded from https://example.com/skills/docker.md
git-flow loaded from https://example.com/skills/git-flow.md
marcus@tobarko.ai ~> shmakk --load-skill rust-expert
rust-expert skill active for this session.
marcus@tobarko.ai ~>
# runtime profiles, live switching, context budgeting
marcus@tobarko.ai ~/D/r/s/demo-deepseek> shmakk --profile builder
profile: builder (large context, file-write optimised)
marcus@tobarko.ai ~/D/r/s/demo-deepseek> shmakk --profile-set tiny
switching to profile: tiny (minimal context, fastest responses)
restarting inner shell…
ready.
marcus@tobarko.ai ~/D/r/s/demo-deepseek> shmakk --compact
context budget: 18 400 / 32 000 tokens used
conversation history cleared. context reset.
# available profiles
tiny minimal context, fastest responses
balanced default — good for daily work
deep larger investigations, multi-step tasks
builder editing and building large projects
marcus@tobarko.ai ~/D/r/s/demo-deepseek>
# always-on speech-to-speech. no hotkey. just speak.
# 100% local — whisper + kokoro ONNX, no API, no cloud.
marcus@tobarko.ai ~> shmakk --sts
[shmakk] STT ready (Whisper-base ONNX)
[shmakk] TTS ready (Kokoro-82M, voice=af_river)
listening...
🎤 hey can you check if there are any syntax errors in agent.js
[shmakk task] (Ctrl-C to interrupt)
· read agent.js
No syntax errors. One thing worth flagging: the tool
result cache uses JSON.stringify as a key — that could
collide for deeply nested args. Low risk for current tools.
[shmakk] 🔊 speaking as af_river...
listening...
🎤 stop
🤫 stopped
listening...
today's voice schedule — deterministic, feels random
seed = date × prime → bucket sizes 2–5h → voice index. same day = same schedule. no state, no config.
what it does

### 🎤 Voice — speaks back

Always-on mic via VAD. Speak naturally, pause to send. Kokoro TTS reads responses aloud sentence-by-sentence so the first word plays in under a second. Say `stop` to interrupt mid-sentence. 28 voices, all local, no API.

### 🎲 A different voice every few hours

shmakk rotates through all 28 Kokoro voices on a deterministic daily schedule — changes every 2 to 5 hours, timed differently each day. No randomness at runtime, no state. Just a hash of the date. Feels alive, costs nothing.

### Typo correction

Deterministic, no API call. Uses your machine's command history and probability to fix typos the way you type, not some generic model.

### Chat in shell

Just write. Ask questions, get answers, run suggested commands — all without leaving the terminal. Session history is preserved until you `--compact`.

### Project scaffolding

Describe what you want in plain English. shmakk plans, creates dirs, writes files, asks before anything risky. Subagents spawned automatically for parallel work.

### Skills

Extend behaviour with any URL: `shmakk --install-skill <url>`. Loaded per-session or automatically when relevant context is detected.

### Runtime profiles

`tiny` · `balanced` · `deep` · `builder`. Switch live with `--profile-set`. Context budgeting and loop-stall protection built in.

### Safety

Risky commands always confirm before running. Secrets (`.env`, tokens, keys) are never sent to the AI. Defensive handling for fallback tool-call formats.

⭐ Star on GitHub Read the docs

works with any OpenAI-compatible API — bring your own key