FIDO a minimal coding assistant.
Fido is a console REPL assistant that inspects files, lists directories, finds files and directories by name, searches file contents, applies changes, and runs shell commands (with user approval).
Install
Installs into ~/.fido and adds a fido launcher to your PATH via ~/.bashrc:
git clone <this-repo> ~/src/fidoca
cd ~/src/fidoca
./install.sh
source ~/.bashrc
The installer needs the sibling llmorbiter checkout (this project depends on it
via file:../llmorbiter); it is bundled into ~/.fido/llmorbiter. Override its
location with LLMORBITER_SRC=/path/to/llmorbiter.
Then, from any project directory:
fido # work on the current directory
fido /path/to/project # work on a specific directory
Set OPENROUTER_API_KEY (and optionally TAVILY_API_KEY) in ~/.fido/.env.
File mentions
While typing a message, press Ctrl+O to open an in-prompt file browser.
It is .gitignore-aware and hides dot-directories, just like list_files.
| Key | Action |
|---|---|
↑ / ↓ |
Move the highlight |
Enter |
Descend into a directory, or open the line selector |
Tab |
Mention the highlighted file (whole file) |
Backspace |
Go to the parent directory |
Esc |
Cancel back to the prompt |
In the line selector, ↑/↓ move the cursor, v starts/ends a range, g/G
jump to the first/last line, and Enter inserts the mention.
The mention is plain text spliced in at the cursor; the model reads the file
itself via read_file (it is a reference, not embedded contents):
| Selection | Inserted text |
|---|---|
| Whole file | @src/fido.js |
| Line range | @src/fido.js:120-145 |
| Single line | @src/fido.js:120 |
Paths are relative to the workspace root with forward slashes; line numbers are
1-based (the model maps them to read_file's 0-indexed seek).
Layout
~/.fido/
app/ the fido app (this repo)
llmorbiter/ bundled dependency
bin/fido the launcher (added to PATH)
.env your config / API keys
state/<workspace>/ per-workspace state
undo.json
suspends/
Undo and /suspend state is stored per workspace under ~/.fido/state/, so it
never mixes between projects and never litters your repositories.
To remove everything: ./install.sh --uninstall.