Search what you keep. Run what you need.
Project description
runi
Search what you keep. Run what you need.
runi turns your plain text into a fast, searchable command palette.
It scans your files, extracts useful lines, and helps you recall them instantly in your terminal.
Why runi?
You probably have useful commands scattered across:
- command.txt
- notes
- random files
- past solutions you don’t want to lose
You could search everything with tools like ripgrep.
But that often means:
- too much noise
- irrelevant results
- repeating the same search effort
runi takes a different approach:
It searches only what you intentionally keep.
Concept
- your files = knowledge source
- runi = clean, curated index
- fzf = interactive selection
Together:
runi | fzf
→ becomes your personal command palette.
Installation
Using uv:
uv tool install runi-cli
Or locally:
uv sync
Usage
Show all entries
runi harvest
Search
runi search git
Shortcut
runi git
Recommended workflow
Use runi together with fzf.
Add this to your shell config:
rf() {
local cmd
cmd=$(runi "$@" | fzf --query "$*" --height 40% --border)
if [[ -n "$cmd" ]]; then
print -z "$cmd"
fi
}
Now you can:
rf
rf git
rf ruff src
→ select with arrows
→ inserted into your prompt
→ edit if needed
→ press Enter to run
Configuration
On first run, runi creates:
~/.config/runi/config.toml
Example:
# Root directory to scan
root = "/Users/yourname/Data"
# File patterns (glob supported)
pattern = ["command.txt", "*.md"]
Supported patterns
-
exact filename:
- "command.txt"
-
glob:
- "*.txt"
- "*.md"
-
multiple:
- ["command.txt", "thought.txt"]
Doctor
Show configuration and scan info:
runi doctor
When to use runi
runi is useful if you:
- use the terminal frequently
- have commands you repeat but forget
- keep notes in plain text
- prefer simple tools over heavy systems
Positioning
- ripgrep → search everything
- runi → search what matters
runi is a curated command recall tool, not a general search engine.
Philosophy
- plain text first
- minimal and composable
- works well with existing tools
- no heavy abstraction
Summary
runi turns scattered text into a usable, fast command memory.
Future ideas
- tagging
- ranking by usage
- deeper fzf integration
License
MIT
Project details
Release history Release notifications | RSS feed
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 runi_cli-0.1.0.tar.gz.
File metadata
- Download URL: runi_cli-0.1.0.tar.gz
- Upload date:
- Size: 34.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.4.30
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
348d33796e0fdd00eb7a35ff7384f206865b465f40270708ad5b6c587c62a818
|
|
| MD5 |
8ca01d6a75d1dfc8cfbe464411dbaeeb
|
|
| BLAKE2b-256 |
ac3649b36393a1a275a78ed6d77f4ea9aa162ed1ad6eb6b73adb9c64881506bc
|
File details
Details for the file runi_cli-0.1.0-py3-none-any.whl.
File metadata
- Download URL: runi_cli-0.1.0-py3-none-any.whl
- Upload date:
- Size: 9.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.4.30
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5feb49b4d16f2826a4d991ad31fb66b93011de73b23d6de57fba0dc0dd4fc0b9
|
|
| MD5 |
a047d6417ef916fca67d9c4a6512e4cd
|
|
| BLAKE2b-256 |
5d36ea87b89049bd51b1dec3cd92b9a3547300d5dd55354855326ef5e2967eef
|