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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ape_linux-0.5.1.tar.gz.
File metadata
- Download URL: ape_linux-0.5.1.tar.gz
- Upload date:
- Size: 114.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
711f32a59a4dab21e2c6337f953fbcbee364dddae841986ca7bf8fab36f0fa17
|
|
| MD5 |
c19696a6eecdac8661292f84f53f8f4e
|
|
| BLAKE2b-256 |
d2bc795c90dd7fddca745dfeaf6a6523e2cdfbf389bcef1480e3e53fc2f4d02f
|
File details
Details for the file ape_linux-0.5.1-py3-none-any.whl.
File metadata
- Download URL: ape_linux-0.5.1-py3-none-any.whl
- Upload date:
- Size: 9.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a0e6810c7869e8ca4066017ef815f6a9a905f7bb7ae80e0ea83a81a9781cddba
|
|
| MD5 |
5be3f79c9d0ee93ad9d2d396d0b3ea25
|
|
| BLAKE2b-256 |
52a48e8d07a22fdf5377732870f5cd8a1a88bad4a45c20c3e915852dd0d5b84d
|