Files
fidoca/README.md
2026-09-23 07:23:03 +02:00

80 lines
2.7 KiB
Markdown

**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`:
```sh
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:
```sh
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`.
## License
[0BSD](https://opensource.org/license/0bsd)