Theory, lineage, and evidence.
Shell translation infrastructure. Type intent, get command, learn command, stop needing translation.
For humans: you learn how to use Unix more.
For agents: you're reminded how Unix can be used.
Software as a besides. The goal is that the user learns the command and stops needing translation.
subtract rests on three primitives that already ship with Unix:
Entry command_not_found_handle intent enters bash Trust ssh-keygen -Y signed provenance for knowledge Time sleep, at, cron yield to the kernel scheduler
No account. No API key. No terms of service. No usage meter. Computers come with commands that work when you are not online.
Let your local computer help you think and do, instead of asking a cloud AI to do all the thinking and doing. As learned commands grow, the user invokes the command directly. A learned command has no inference cost.
| subtract | the alternative |
|---|---|
| command_not_found_handle (bash, 1 function) | Python CLI + Click + Docker + pip install |
| lookdown.tsv (flat file, grep) | vector database + embeddings + RAG pipeline + 47 packages |
| handler.sh (case statement tier routing) | semantic router chain + "mixture of agents" |
| bridge.py (140 lines, stdlib only) | FastAPI + Uvicorn + Redis + WebSocket + requirements.txt |
| multiplying.html (1 file, no build step) | Next.js + React + Tailwind + npm install (1,200 node_modules/) |
| squared.c (716 lines, 3 libraries) | Nginx + Docker Compose + Kubernetes ingress |
| ssh-keygen -Y sign (ships with the OS) | Auth0 + JWT + OAuth2 + "we need a signing service" |
| 1570 lookdown.tsv entries (text file) | SaaS knowledge base + API connector + monthly license |
| install.sh (50 lines, curl + cp) | Homebrew tap + Docker pull + helm chart + "check our docs" |
| dependencies: 5 | dependencies: 600+, 3 cloud accounts, monthly spend |
Both produce the same output: a person types what they need, gets an answer.
Full frame: subtract.7.txt
Full argument: software-as-a-besides.txt
Like a telephone game: user types intent, it passes through orchestration, API, UI framework, rendering, analytics, billing. Each layer transforms the input before it reaches the system.
subtract makes software layers transparent.
The router logs every intent that enters
command_not_found_handle with its resolving tier.
Tier migration per intent-class over time shows whether the human
is learning the direct form. When the handler stops firing for an
intent-class, that intent has graduated.
That is what "let the computer answer first" means.
How hard your computer has to think, or if it has to phone a friend.
computer lookdown.tsv pattern match, no AI apropos man page lookup, no AI assisted embedding local vector search llama.cpp local language model remote curl cloud API
Voice input and output (speech-to-text, text-to-speech) can be local or cloud depending on what is available.
The goal is that your computer answers before assistance is needed, and local assistance answers before remote does. Each component is either pre-installed or a single binary plus model file. Full local install is roughly 1.1GB. No interpreter or package manager required.
Three layers subtract in sequence:
1. subtract subtracts from the environment (no frameworks, no SaaS) 2. the human subtracts from the agent's context (pre-flight, pushback) 3. the agent subtracts from its own defaults (no verbosity, no confabulation)
subtract serves two populations:
Humans who want to stop depending on AI intermediaries to reach their own machines.
Agents that reach for libraries and SaaS before checking what the filesystem and built-in commands already do.
Brian Fox wrote bash in 1989 — the shell, readline,
the history library. command_not_found_handle is a bash
construct. subtract runs on what Fox wrote.
Chet Ramey has maintained bash since 1993. Authored
help as a builtin. Kept command_not_found_handle
a stable public hook for fifteen+ years.
Full lineage with works cited: lineage.txt
Empirical findings from variance-lab, run on the subtract substrate:
variance-lab.txt — six findings (claim layer)
variance-lab-handler-methodology.txt — three-gate methodology report
emile.txt — local-first deployment pattern for sole proprietors
Four gates. An agent that cannot answer the question does not proceed.
1. Before proposing any library or tool, name the kernel primitive it wraps 2. Before proposing any new format, ask if ssh-keygen -Y sign works 3. Before acting on memory, check if signed; if not, live read 4. Before treating a source as authoritative, confirm it's under the signing domain
Full specification: governance.conf.universal.txt
README.txt entry gradient subtract.7.txt man(7) frame ask.1.txt walks the prompt hierarchy lookdown.tsv.universal.txt routing table governance.conf.universal.txt reflexes, authority, loop boot.txt agent discipline software-as-a-besides.txt why? lineage.txt credits and bibliography signoff.txt session close variance-lab.txt empirical findings variance-lab-handler-methodology.txt three-gate methodology emile.txt deployment pattern SOUL.txt dispositional layer
Repo: github.com/03-git/subtract.ing
License: GPLv3
Authors: Josh (@hodorigami) & LLMs (@qwen @claude @gemini @grok)