A tiny desktop IDE for supervising AI coding agents — run as many as you like, each in its own folder, across as many windows as you need. See every file they touch, and roll it back.
New in 0.2.0 → a snapshot that skips the data beside it
A full IDE is overkill for supervising agents; a bare multiplexer gives you no files and no editor. Tigriden is what's in between: one window, one session per folder, agent + files + editor together.
A subtree of 200 MB or more is skipped whole, and so is any single file of 5 MB or more. An 8.1 GB PDF corpus now snapshots to 100 MB. Both limits are settings.
An .html file opens in a real WKWebView, so its own CSS, scripts and images load. Or read it typeset, on the same white sheet as Markdown and LaTeX.
On a Thai keyboard, Ctrl+O typed Ctrl+ญ and nothing happened. Tigriden now falls back to the Latin layout for Ctrl and ⌘, the way macOS does.
Thai vowels and tone marks draw where they belong, not dropped. Same path for Lao, Hebrew niqqud, Arabic harakat, and combining accents.
A .tex or .md file is set as the page it compiles to — real pagination, two columns for journal classes, and TeX-quality display math.
A live Changes (N) list of every file the agent modified, added, or deleted — with syntax-highlighted diffs and one-click rollback.
Preset buttons launch claude, codex, gemini — or any command — fully configurable.
VTE-compliant emulation with a real PTY. vim, top, and the Claude Code TUI just work — truecolor, mouse selection, image paste.
Gitignore-aware, updates as agents create and delete files. Right-click for new file, rename, duplicate, reveal, trash, and more.
Syntax highlighting for 40+ languages, plus rendered Markdown, images, CSV tables, and PDF text. Auto-reloads when an agent edits the open file.
Every folder gets its own shell, tree, and open file — plus extra terminal tabs for git or a second agent. Layout restored on relaunch.
Drop files from Finder onto the window to paste their paths straight into the agent prompt. Recent folders reopen from the ⟳ button.
File ▸ New Window runs independent windows in parallel. Name preset groups as [[teams]] and give each window its own agent buttons.
⌘, opens six themes, accent colors, fonts, and scrollback. Every change applies to open windows at once, no restart.
Pure Rust — no Electron, no webview, no C regex libraries. A real macOS menu bar routed to the focused pane.
A folder without its own .git is tracked by a hidden snapshot repository. Nothing ever capped it. On one machine that store had reached 17 GB across 40 folders, and two folders held 13 GB of it. A per-file cap does not fix that, because the mass is never in the giants: one folder carried 4602 harvested PDFs averaging 1.7 MB. What marks those files is the directory they sit in. 0.2.0 excludes a subtree of 200 MB or more whole, at the shallowest point over the line, plus any single file of 5 MB or more. The root is never excluded, so a big folder still tracks its own small files.
folder on disk snapshot harvested PDF corpus 8.1 GB 100 MB YOLO training set 6.5 GB 39 MB book, mostly source 415 MB 128 MB
Settings ▸ Changes takes folders at 100 MB, 200 MB, 500 MB, 2 GB or no limit, and files at 1, 5, 20, 100 MB or no limit. In config.toml they are snapshot_dir_mb and snapshot_file_mb, with 0 for no limit.
git gcOne repository held 5499 loose objects and 6.91 GiB with nothing packed. Git packs at 6700 by default, and no baseline ever asked.
Rendered is a real WKWebView: the page's own stylesheets, scripts and images load beside it. Reader typesets the file on the viewer's white sheet — headings, tables as grids, <pre> as code, superscripts off the baseline. The header chip cycles Rendered / Reader / Source.
On a Thai layout, Ctrl+O typed Ctrl+ญ, so ^O never reached nano and every ⌘ key went dead. The physical key is now read from the winit event and mapped through US layout, only while Ctrl or ⌘ is held. Plain Thai typing, Dvorak and AZERTY pass through untouched.
Every window shares one Slint event loop, so a block in one froze them all. Terminal teardown, git status, font scanning, PDF parsing and PDF text extraction all moved to workers. Copying text from a 1.3 MB paper took 11.8 s; it is now a field read.
Opening the same folder twice used to re-take the baseline and discard every change the first window still offered to roll back. An existing baseline is left alone. Only "watch from now" re-takes it.
Read the full 0.2.0 release notes on GitHub · all releases
Also since 0.1.1A cell's whole stack is shaped as one cluster, so vowels and tone marks draw over the right part of the letter instead of being dropped. Lao, Hebrew niqqud, Arabic harakat and combining accents take the same path.
Fences sized from the body's ink instead of its line box, so nesting no longer cascades. align keeps every row, each one numbered.
.tex file reads as its page 0.1.7The viewer takes the page from \documentclass: letter or A4, class margins, two columns for journal classes, real pagination and floats.
Drag in from Finder, Cut / Copy / Paste through the system pasteboard, Delete to the Trash, and full keyboard navigation of the tree.
Select in the viewer, including a real text layer on rendered PDF pages, so two-column papers copy one column at a time.
PDF pages rasterize on a worker with the next page prefetched, images lay out from the header. Scrolling never freezes the window.
⌘= / ⌘- / ⌘0 and wheel zoom, PDFs as real pages, Markdown tables, and Shift+PageUp through terminal history.
Turn it on with File ▸ Show Changes Panel and a Changes (N) list appears under each folder. Every file the agent touched since the baseline shows up within ~1 second of the write — click a row for the diff, right-click to throw it away.
Status runs on a background thread, so a busy agent never stalls the UI.
Kept out of your project in ~/Library/Application Support/tigriden/snapshots/ — nothing added to the folder. Since 0.2.0 it skips big subtrees and big files, so a data folder no longer copies itself. Excluded files are not listed here and cannot be rolled back from here.
Discard Changes… reverts a single file; the ↺ button reverts everything — both behind a confirmation.
Prebuilt for macOS and Windows — no Rust required. Current release: v0.2.0.
Prefer a bare macOS binary? The release also ships
arm64 ·
x86_64
tarballs — untar and run ./tigriden
macOS, first launch only (not notarized): right-click → Open → Open, or
xattr -d com.apple.quarantine /Applications/Tigriden.app
Windows builds ship with every release but get far less testing than macOS — each terminal launches cmd.exe (or %COMSPEC%). Rendered HTML needs WKWebView, so an .html file opens in Reader there.
Feedback welcome.
$ git clone https://github.com/Sompote/Tigriden.git $ cd Tigriden $ cargo build --release $ ./target/release/tigriden
Add a folder — a login shell opens there. Add more folders to run more agents in parallel, or File ▸ New Window for a whole second set.
Launch an agent with a preset button, or type any command. The + tab opens extra shells in the same folder.
Watch and steer — the tree updates as the agent works; click any file to inspect or tweak it without leaving the window.
Review and roll back — the Changes panel lists every touched file. Read the diff, keep what works, discard the rest.
theme = "dark" # "dark" | "light" font_family = "Menlo" font_size = 13.0 scrollback = 10000 [[presets]] label = "claude" command = "claude" send_enter = true [[teams]] # pick a team per window name = "reviewers" [[teams.presets]] label = "claude-review" command = "claude /review" send_enter = true
Keyboard reference, architecture, and roadmap live in the full docs on GitHub.