Ape
Ape is an AI for Linux commands.
ape "Find all the important PDF files in user/projects. An important PDF file has 'attention' in its name. Write the results to important_files.txt and then move it to Documents."
Output:
find ~/user/projects -type f -name "*attention*.pdf" > important_files.txt && mv important_files.txt ~/Documents/
Ape works with the following providers supported by Pydantic AI: OpenAI, Anthropic, Google, Groq, and Mistral.
To install (uv recommended):
uv tool install ape-linux
Next, choose a model with APE_MODEL in provider:name form (see the
Pydantic AI docs for the supported providers and
models) and set your provider API key in APE_API_KEY. Ape infers the provider from
the model name and passes this key straight to it, so APE_API_KEY must be a key for
that model's provider. Ape uses its own key variable rather than a provider's standard
one (like OPENAI_API_KEY), so setting it up for Ape doesn't affect other tools on
your system:
export APE_MODEL=openai:gpt-5.4-nano
export APE_API_KEY=key
Both are required.
To run:
ape Create a symbolic link called win pointing to /mnt/c/Users/jdoe
Output:
ln -s /mnt/c/Users/jdoe win
Another example:
ape Delete all the .venv directories under projects/
Output:
find projects/ -type d -name ".venv" -exec rm -rf {} +
If you ask for something that isn't a Linux command task:
ape Tell me about monkeys
Ape prints a short explanation to standard error and exits with status 2.
Commands only ever go to standard output, so a refusal is never mistaken for one
(and won't run if you pipe Ape into a shell):
ape: I can only help with Linux and Unix command-line tasks.
You can set the sampling temperature with the APE_TEMPERATURE environment
variable (default 0.2). Some models — for example certain reasoning models —
reject a temperature; set APE_TEMPERATURE=undefined to send none at all and let
the model use its own default:
export APE_TEMPERATURE=0.7 # use a specific temperature
export APE_TEMPERATURE=undefined # send no temperature at all
System-aware suggestions
Ape automatically detects a few facts about your machine and adds them to the prompt so
the suggested command is correct for your environment — for example BSD (macOS) vs GNU
(Linux) flags, the right package manager (brew, apt, dnf, pacman, ...), and tools
that are actually installed. It looks at:
- operating system and version (macOS version or Linux distribution),
- whether the userland is BSD or GNU,
- CPU architecture (e.g.
arm64vsx86_64), - your shell (
$SHELL), - whether you are root,
- available package manager(s) and common tools (
rg,fd,jq,docker, ...).
This is all gathered locally with the Python standard library and is best-effort: if anything can't be determined it is simply left out. No identifying information is collected or sent — never your username, hostname, working directory, or home path.
To see exactly what Ape detects and sends (without calling the model), run
ape-system-info:
ape-system-info
Output (example):
Operating system: Darwin
macOS version: 26.5
Userland: BSD (macOS) — prefer BSD-compatible flags
Architecture: arm64
Shell: /bin/zsh
Privileges: non-root (use sudo for privileged actions)
Package manager(s): brew
Available tools: rg, fd, jq, git, curl, docker, tar, rsync, sed, awk
See also: Gorilla
Metadata
Release files for ape-linux 0.5.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ape_linux-0.5.3.tar.gz | 128.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ape_linux-0.5.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 138.8 kB
Release files / ape_linux-0.5.3.tar.gz
| Download URL | ape_linux-0.5.3.tar.gz |
|---|---|
| Size | 128.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4917adfc851420d18da49658d07ac2a7324f48c3665ac875fa0b462f15bdb569
|
|
BLAKE2b-256 checksum How to use checksums |
e7226647981c9b7f95254c0e0b411c507182400c6e7bdf2aaae405ebc303e102
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / ape_linux-0.5.3-py3-none-any.whl
| Download URL | ape_linux-0.5.3-py3-none-any.whl |
|---|---|
| Size | 10.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
88b7b466ac096d6242da50f5f0be994c6cc7a89c1bd9f953e6a660cb3188b480
|
|
BLAKE2b-256 checksum How to use checksums |
95e30e56bd637bbbde3cf020b7efb05351841e08a473e69cc3fdbd6a52615f97
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|