1 unstable release
| 0.1.0 | Jun 4, 2025 |
|---|
#2370 in Parser implementations
145KB
2.5K
SLoC
siff
A file browser for precise code selection with repomix and yek backends.
[!Important] siff is still in development and has many known bugs.
Why siff?
Find it a struggle to select the right files with complex glob patterns or config files just to select the right files for llm code ingestion? Siff solves this with a simple visual interface where you see exactly what gets processed.
Instead of this mess:
repomix --include "**/*.py" --exclude "**/tests/**" --exclude "**/venv/**" --remove-comments --output-format=markdown .
Just do this:
siff
Features
- Visual file selection, if you select it, it gets included
- Never shows
.gitignoreor.gitin siff file tree - Zero config, downloads tools needed automatically
- Dual backend support, repomix and yek for features and speed
- Efficient file tree navigation for large codebases
- Automatically counts tokens for each file and directories
- Copies to your clipboard, for easy copy and paste your favorite llms
Installation
cargo install siff
[!NOTE] siff requires Node.js to be installed for repomix backend.
macOS:
brew install node
Linux:
sudo apt install nodejs npm
Windows:
winget install -e --id OpenJS.NodeJS.LTS
[!NOTE] For windows, can also download node from here
Navigation
| Key | Action |
|---|---|
↑/↓ or j/k |
Navigate files |
←/→ or h/l |
Collapse/expand directories |
Space |
Toggle selection |
E |
Expand all |
C |
Collapse all |
A |
Select all |
U |
Unselect all |
r |
Run processing backend |
q |
Quit |
[!NOTE] siff does have mouse support for file selection, collapse/expand directories, and scrolling.
Backends
Repomix (default)
- Output formats: plain text, markdown, xml
- Supports remove comments and compression
- Slower processing than yek
Yek
- No configuration necessary
- Very fast processing
TODO
- Fix known bugs
- Token counting is can be slow on large repos
- Token counting is not accurate (race condition)
- Error messages (stacked errors and not descriptive)
- Refactor codebase (file structure, design with token counting and processing, naming)
- Fix general speed issues in large (> 1 M token count codebases)
Features
- Add multiple file and directory selection
- Tab switching to different backends
- User config files for repomix and yek
- Rewrite processing core in Rust with same feature support
Contributing
Open to all feature requests and bug reports. Please submit any changes as a detailed PR or propose a new issue.
Cache issues
To completely reset siff's cache (including repomix installations and file metadata), run these commands for your operating system.
macOS:
rm -rf ~/Library/Caches/siff/
Linux:
rm -rf ~/.cache/siff/
rm -rf ~/.local/share/siff/
Windows:
rmdir /s %LOCALAPPDATA%\siff\
Inspiration
- yek - Fast Rust-based file serialization tool
- repomix - Feature dense file seralization tool
- codeselect - File selection tool to share with llms
Dependencies
~22–37MB
~382K SLoC