Releases: ThorOdinson246/whatisit-nl2sh
Release list
v0.5.0
whatisit can now put the command on your prompt, lets you edit it before it runs, and tells you when there's a new version or model.
Shell integration. Add eval "$(whatisit shell-init)" to ~/.zshrc or ~/.bashrc and whatisit <request> puts the command on your next prompt, so you edit it and run it in your own shell. cd sticks and it lands in your history. bash can't prefill the prompt, so there it goes into history and Up brings it back. A command flagged DANGER isn't put anywhere.
Edit before running. whatisit -p <request> opens the command in an editable prompt and runs what you submit. From @BlueNihilist.
Update notices. Once a day, in the background, whatisit asks pypi.org for the latest version and tells you after an answer if there's a newer one, or if a newer model ships and whatisit setup would fetch it. Your requests are never sent. Quiet with -q and in pipes. Off with whatisit config --set update_check=false.
--version. whatisit --version and -V print the version instead of being sent to the model.
What's Changed
- [dev] add prefill-command flag by @BlueNihilist in #40
- docs: status badges by @ThorOdinson246 in #56
- cli: print the version on --version and -V by @ThorOdinson246 in #60
- tell users when a newer release or model is out by @ThorOdinson246 in #61
- cli: shell-init, put the command on the next prompt by @ThorOdinson246 in #62
- docs: document -p by @ThorOdinson246 in #63
- Release 0.5.0 by @ThorOdinson246 in #64
New Contributors
- @BlueNihilist made their first contribution in #40
Full Changelog: v0.4.0...v0.5.0
v0.4.0
The resident model can now unload itself when idle, and stop no longer
signals the wrong process.
Idle unload. whatisit --idle-timeout 300, or
whatisit config --set idle_timeout=300 to keep it, stops the resident model
server once it has been idle that long and gives back the memory it was
holding. Off by default. The deadline is re-armed on every query including one
still running, so a long generation is never cut off by its own timeout. From
@lydorianP.
llama.cpp has its own --sleep-idle-seconds for this and whatisit does not use
it: in builds b7492-b9060 that flag triggers CVE-2026-43631. The watchdog is
user-space Python watching a timestamp file.
stop. Ownership was decided by looking for llama-server anywhere in a
process's command line, so an unrelated tail -f /var/log/llama-server.log
matched and got terminated. It now requires the recorded binary to appear as an
actual argument. stop also sent SIGTERM without waiting and deleted the record
of which process to talk to immediately, so a server that ignored the signal
kept the model in memory with nothing able to find it again. It now waits,
confirms, and escalates, and when it cannot identify the recorded process it
leaves the record alone and says so instead of reporting success.
whatisit stop now exits 1 in that last case, where it previously exited 0.
What's Changed
- Mention remote endpoints in the description by @ThorOdinson246 in #47
- test(cli): cover the -e DANGER refusal by @ThorOdinson246 in #50
- docs: add Community Models section, credit lydorianP by @ThorOdinson246 in #53
- fix(engine): stop the right process, and keep the record when it is not ours by @ThorOdinson246 in #51
- feat(engine): unload the resident model at N idle seconds via a user-space watchdog (#42) by @lydorianP in #44
- Release 0.4.0 by @ThorOdinson246 in #54
Full Changelog: v0.3.0...v0.4.0
v0.3.0
First release with outside contributors, and most of what's here came from them.
Safety. A security audit closed eight ways a destructive command could slip past the checker: / written as $'\057', curl ... 2>&1 | bash, path-qualified and version-suffixed interpreters. Regression cases went from 304 to 477. The llama-server token moved out of argv so it no longer shows in ps, TCP connections are now attributed to the server we spawned before any credential is sent, and filenames from the working directory are JSON-encoded so a hostile filename cannot inject prompt instructions.
Remote endpoints. Point whatisit at any OpenAI-compatible API instead of the local model. Opt-in, off by default, warns on every remote call.
Distro-aware install commands. Detects your package manager and constrains the model so it stops suggesting apt on Arch.
Per-invocation flags. --port, --threads, --model, --ctx-size, --debug, and -y. Plus a confirm_default config key so Enter can mean yes at the confirm prompt if you want it.
Fixes. Windows no longer crashes on startup. Warnings and errors go to stderr, so eval "$(whatisit -q ...)" can't swallow them. pipx is now the recommended install.
Default behaviour is unchanged. Nothing runs unless you pass -e and confirm.
What's Changed
- Create the GitHub Release on the push path by @ThorOdinson246 in #29
- feat: add support for OpenAI-compatible remote endpoints by @arsaboo in #24
- docs: code of conduct, security policy, issue template checks by @ThorOdinson246 in #32
- docs: readme chores by @ThorOdinson246 in #33
- chore: configure coderabbit by @ThorOdinson246 in #36
- chore: coderabbit review on request, not every push by @ThorOdinson246 in #37
- chore: make coderabbit comments readable by @ThorOdinson246 in #38
- security audit by @iiw in #35
- feat(engine): GBNF grammar and distro-aware postprocessing for install commands by @lydorianP in #31
- feat(cli): per-invocation flags and confirm-default fix by @lydorianP in #34
- Route cli messages through out/warn helpers by @ThorOdinson246 in #39
- Release 0.3.0 by @ThorOdinson246 in #46
New Contributors
- @arsaboo made their first contribution in #24
- @iiw made their first contribution in #35
- @lydorianP made their first contribution in #31
Full Changelog: v0.2.2...v0.3.0
v0.2.2
What's Changed
- fix(cli): runtime download size, -- handling, and misplaced flags by @ThorOdinson246 in #7
- Add demo gif to README by @ThorOdinson246 in #9
- Run CI on Windows by @ThorOdinson246 in #14
- Fix/os open windows 12 by @rjstone in #13
- Tolerate a missing os.fchmod on Windows by @ThorOdinson246 in #15
- Recommend pipx for install by @ThorOdinson246 in #16
- feat: refuse -e in windows by @rjstone in #19
- chore(packaging): package for nix by @OleMussmann in #17
- Build the nix flake in CI by @ThorOdinson246 in #26
- Release 0.2.2 by @ThorOdinson246 in #27
New Contributors
- @rjstone made their first contribution in #13
- @OleMussmann made their first contribution in #17
Full Changelog: v0.2.1...v0.2.2
v0.2.1
pip install whatisit now gets you a working tool in two commands.
pip install whatisit
whatisit setup
whatisit find files bigger than 100MB in this foldersetup detects the platform, states the size of each download and asks before starting it, then verifies every file against a pinned checksum before it is installed. Downloads land at .part and are renamed only after the hash matches, so an interrupted run leaves nothing broken behind.
On Linux with a glibc older than 2.34 it uses the compatibility runtime published alongside this release, because the upstream llama.cpp binaries download fine there and then fail to start.
Still zero runtime dependencies: stdlib only.
New flags: --auto for unattended installs with no terminal, --dry-run, --print-urls for machines with no route out, --size 3b, --runtime-only and --model-only. The manual --model / --bin-dir path is unchanged.
0.2.1 also fills in the PyPI metadata: project links, author and classifiers.
llama.cpp compatibility runtime (glibc 2.17+, x86_64)
A llama.cpp runtime for Linux x86_64 machines whose glibc is older than 2.34.
The upstream prebuilt binaries are built against glibc 2.34, so on RHEL 8, Ubuntu 20.04, Debian 11 and Amazon Linux 2 they download successfully and then fail to start. whatisit setup detects that and fetches this build instead.
Built from llama.cpp with -DLLAMA_SUBPROCESS=OFF -DGGML_NATIVE=OFF -DGGML_AVX2=ON -DGGML_FMA=ON -DGGML_F16C=ON. It links no symbol newer than GLIBC_2.2.5, and RUNPATH is $ORIGIN so the directory relocates cleanly.
Requires a CPU with AVX2. Unlike the upstream archive there is no runtime microarchitecture dispatch.
sha256 9006f1326be8f39fa010cc83cecf01e399f6ea7044805255dad6c12341032b70
llama.cpp is MIT licensed and its LICENSE is included in the archive. This is not a package release; whatisit itself is on PyPI.