VERSE 860b475b53 feat: scoring and frecency (#37)
Enhance lookup mechanics and priority propagation (`spec/lookup.go`)
Remove the requirement of typing a leading `-` when searching for
options, allowing flag suggestions to surface naturally during input
Accurately forward the `Priority` field from registry specs into the
`Suggestion` struct so the scoring engine evaluates relevance properly

Integrate scoring into the main suggestion pipeline
(`root/suggestions.go`)
Collect context signals using `scoring.CollectSignals(cwd, query,
rootCmd, store)` with the live working directory retrieved from
`spec.GetCWD()`
Pass the entire deduplicated list across spec, history and AI items
through `scoring.Score(deduped, signals)` to compute scores and sort by
descending order before rendering on screen

Record execution history in Frecency Store (`root/wrapper.go`)
Save the last executed command to `lastSubmittedCommand` whenever Enter
is pressed or a suggestion is selected
Trigger `store.Record(...)` asynchronously within the `IRIS_CMD_STOP`
hook using a dedicated goroutine guarded by panic recovery and timeout
limits, preventing blocks on the main shell thread

Optimize workspace identification for AI
(`internal/ai/context_provider.go`)
Use `workspace.DetectCached(cwd)` to instantly fetch ecosystem context
across Git, Node, Go, Rust, Python and Docker alongside active git
branch state
This caching mechanism avoids redundant subprocess execution when
outside git repositories, significantly speeding up prompt context
generation
2026-07-13 17:56:29 +07:00
2026-07-11 16:21:22 +07:00
2026-07-11 16:29:19 +07:00
2026-07-13 17:56:29 +07:00
2026-07-13 17:56:29 +07:00
2026-07-13 17:56:29 +07:00
2026-07-13 17:56:29 +07:00
2026-07-13 17:56:29 +07:00
2026-07-11 16:29:19 +07:00
2026-07-13 17:56:29 +07:00
2026-07-13 17:56:29 +07:00
2026-07-11 16:21:22 +07:00
2026-04-09 13:39:08 +07:00

logo

IRIS (Intelligent Real-time Input Suggestion) - A shell auto-completion tool that works like code editor's IntelliSense

GitHub Actions License: 0BSD

Comparison · Installation · Docs · Shortcuts · Reporting bugs

Ghostty terminal showcase 👻 Ghostty terminal

IRIS is built on top of TTY, so it runs everywhere. It just needs a terminal!

Run iris wherever you already work; your local machine, a remote server, or anywhere you can ssh. Each suggestion menu renders directly inline inside your real terminal session, not an app's imitation of one, so it never breaks full-screen TUIs or terminal formatting. Automatically index your aliases and shell history to suggest commands that match your actual workflow in real time. Change configurations and propagate them instantly without restarting your shell. One single local native Go binary, not an app: no gui, no electron, no mac-only wrapper, no account, no telemetry. (if you've used fig: it's that, rebuilt to run purely on TTY)

Why Iris instead of Fig

Important

Fig was officially sunset in September 2024 and migrated to Amazon Q Developer (which requires cloud authentication and proprietary bloat)
IRIS is the lightweight, open-source, zero-telemetry alternative built purely on native Go and TTY with no accounts, no GUI app, and no background daemons required

How it compares

Feature Iris Fig
Platforms Linux, macOS macOS only
Engine Native Go (TTY) Electron
Startup Near-zero overhead Low overhead
UI Inline overlay GUI popover
Remote SSH TTY-native, portable macOS GUI-bound
Tmux ✓ Limited
Linux virtual terminals ✓ -
Memory < 15 MB Electron runtime

Why not shell autocomplete plugins?

Shell plugins are great, but they also come with trade-offs. And also, not everyone use Zsh or Fish especially on SSH.

Feature Iris Shell plugins
Installation Single binary Plugin manager required
Shell support Most shells supported Usually shell-specific
Startup No shell initialization Increases shell startup time
SSH One config Per-shell config
Tmux ✓ Depends on the shell
Linux virtual terminals ✓ Depends on the shell

Installation

curl -sSL https://raw.githubusercontent.com/versenilvis/iris/main/scripts/install.sh | sh

Warning

Currently, Windows is not supported

Theme

Kitty terminal showcase 😺 Kitty terminal

Note

Currently, IRIS doesn't have custom theme but it does have 2 basic styles

Modern style Classic style
spec spec
history history

Docs

  • Getting started: dependencies, installation methods, and shell integration setup
  • Usage guide: core navigation, mode switching, instant alias expansion, and ghost text
  • Configuration guide: TOML configuration file structure, settings sections, and CLI commands
  • Troubleshooting guide: debug mode, runtime log inspection, and common solutions
  • Developer guide: system architecture overview, PTY bridge mechanics, and contribution instructions

Shortcuts

Shortcut Action Description
Shift + Tab Toggle menu Show or hide the suggestion menu.
Esc Hide menu Temporarily hide the menu until the next key press.
Tab Accept suggestion Insert the currently selected suggestion into the prompt.
Enter Execute command Close the menu and send the current command to the shell.
↑ Navigate up / history Move the selection up, or open command history when the prompt is empty.
↓ Navigate down / history Move the selection down, or open command history when the prompt is empty.
→ Accept ghost text Accept the faded ghost text suggestion when the menu is open.
← / → Move cursor Move the cursor inside the input buffer. Disabled when the prompt is empty.
Ctrl + R Switch mode Toggle between spec and history mode.
Ctrl + A Beginning of line Move the cursor to the start of the command line.
Ctrl + E End of line Move the cursor to the end of the command line.
Ctrl + L Clear screen Clear the terminal while preserving the input buffer and redrawing the menu.
Ctrl + U Clear command Remove the entire current command and close the menu.
Ctrl + C Cancel command Send SIGINT, clear the input buffer, and close the menu.
Ctrl + W Delete word Delete the word immediately before the cursor.

Note

With Ctrl + A, Ctrl + E, Ctrl + W, Ctrl + U, Ctrl + L, and Ctrl + C: they belong to your shell by default. IRIS handles them directly in raw mode so your cursor and menu stay in sync

Reporting bugs

Note

Describing the bug you are facing, along with the relevant log
Enabling debug mode and then performing actions that led to the error

Run IRIS with debug mode:

iris -d

or config.toml:

debug=true

Important

Since IRIS logs everything you type, you should only enable debug mode when you need to report bugs

License

This project is licensed under the 0BSD License - no strings attached. Meaning you can do whatever you want with it.

For those who fork it and want to publish a new version or something else; if you can, a credit or co-author mention is always welcome :) (though never required).

Thank you!

Feedback

I'd love to hear your feedback

Feel free to reach out via:

S
Description
No description provided
Readme
4.3 MiB
Languages
Go 98.4%
Just 1%
Shell 0.5%