Tigriden app icon — a lion beside a terminal window

Terminal for
Agentic Coding

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.

$ claude
v0.2.0 macOS · Windows Pure Rust ~14 MB · ~40 MB RAM MIT

New in 0.2.0 → a snapshot that skips the data beside it

Tigriden supervising an agent: the viewer shows a chart the agent produced while the agent CLI runs in one of three terminal tabs below
A real session — file tree, built-in viewer, and the agent running in one of three terminal tabs.
Capabilities

The minimal middle

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.

📦

Snapshots stay small 0.2.0

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.

🌐

HTML, rendered 0.2.0

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.

⌨️

Ctrl on any layout 0.2.0

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.

🔤

Complex scripts 0.1.9

Thai vowels and tone marks draw where they belong, not dropped. Same path for Lao, Hebrew niqqud, Arabic harakat, and combining accents.

📄

Papers, not plain text 0.1.8

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.

🔀

Change tracking

A live Changes (N) list of every file the agent modified, added, or deleted — with syntax-highlighted diffs and one-click rollback.

🚀

One-click agents

Preset buttons launch claude, codex, gemini — or any command — fully configurable.

💻

Real terminal

VTE-compliant emulation with a real PTY. vim, top, and the Claude Code TUI just work — truecolor, mouse selection, image paste.

🌲

Live file tree

Gitignore-aware, updates as agents create and delete files. Right-click for new file, rename, duplicate, reveal, trash, and more.

✏️

Editor & viewers

Syntax highlighting for 40+ languages, plus rendered Markdown, images, CSV tables, and PDF text. Auto-reloads when an agent edits the open file.

🗂️

Parallel sessions

Every folder gets its own shell, tree, and open file — plus extra terminal tabs for git or a second agent. Layout restored on relaunch.

📎

Drag & drop

Drop files from Finder onto the window to paste their paths straight into the agent prompt. Recent folders reopen from the button.

🪟

Windows & teams

File ▸ New Window runs independent windows in parallel. Name preset groups as [[teams]] and give each window its own agent buttons.

⚙️

Settings in the window 0.1.2

⌘, opens six themes, accent colors, fonts, and scrollback. Every change applies to open windows at once, no restart.

🍎

Native & tiny

Pure Rust — no Electron, no webview, no C regex libraries. A real macOS menu bar routed to the focused pane.

Latest release

A snapshot that skips the data beside it0.2.0

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.

measured on three real folders
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

Both limits are settings

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.

🗑

Baselines run git gc

One repository held 5499 loose objects and 6.91 GiB with nothing packed. Git packs at 6700 by default, and no baseline ever asked.

🌐

HTML opens two ways

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.

Ctrl and ⌘ on a non-Latin keyboard

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.

Six waits came off the event loop

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.

🔒

Two windows, one folder

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.1

Thai in the terminal, marks and all 0.1.9

A 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.

Display math, set the way TeX sets it 0.1.8

Fences sized from the body's ink instead of its line box, so nesting no longer cascades. align keeps every row, each one numbered.

📜

A .tex file reads as its page 0.1.7

The viewer takes the page from \documentclass: letter or A4, class margins, two columns for journal classes, real pagination and floats.

📁

File management in the sidebar 0.1.6

Drag in from Finder, Cut / Copy / Paste through the system pasteboard, Delete to the Trash, and full keyboard navigation of the tree.

📋

Copy text from anything 0.1.5

Select in the viewer, including a real text layer on rendered PDF pages, so two-column papers copy one column at a time.

Viewers off the UI thread 0.1.4

PDF pages rasterize on a worker with the next page prefetched, images lay out from the header. Scrolling never freezes the window.

🔍

Zoom, PDF pages, scrollback keys 0.1.3

⌘= / ⌘- / ⌘0 and wheel zoom, PDFs as real pages, Markdown tables, and Shift+PageUp through terminal history.

File tracking

Know what the agent changedChanges panel

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.

Changes (4)
Msrc/app.rs
Asrc/git.rs
Mui/sidebar.slint
Dsrc/old_diff.rs
src/app.rs +3 −1 git · vs HEAD
Reveal in Finder
Copy path
Discard Changes…
@@ -212,7 +212,9 @@ impl App { fn on_file_write(&mut self, path: &Path) {- self.tree.refresh();+ self.tree.refresh();+ // coalesce write bursts over 250 ms, then diff off-thread+ self.changes.mark_dirty(path); }
🌿

Git folders → compared against the last commit

Status runs on a background thread, so a busy agent never stalls the UI.

👻

No git? → an invisible shadow snapshot

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.

Rollback, one file or all

Discard Changes… reverts a single file; the button reverts everything — both behind a confirmation.

Get started

Install

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.

Build from source
zsh
$ git clone https://github.com/Sompote/Tigriden.git
$ cd Tigriden
$ cargo build --release
$ ./target/release/tigriden
Workflow

Quick start

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.

~/Library/Application Support/tigriden/config.toml
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
~14 MB
binary
~40 MB
RAM
~1 s
to see a change
40+
languages
0
webviews

Keyboard reference, architecture, and roadmap live in the full docs on GitHub.