termic.dev
Documentation menu

Architecture & data

What Termic is built on (Tauri 2, Rust, React, xterm.js with WebGL, CodeMirror, portable-pty) and exactly where it stores your projects, tasks and settings on disk.


Termic is a native desktop app with a web frontend, small, fast to launch, and entirely on-device. This page covers the stack and, more usefully, where everything lives on your disk.

The stack

  • Tauri 2: the shell. A Rust backend with a system WebView (WKWebView on macOS) for the UI. The whole app is around 10 MB and launches instantly, versus the ~120 MB an Electron equivalent would weigh.
  • Rust: all the real work: the PTY manager, project and task I/O, git operations, the sandbox and its in-process network proxy, CLI discovery.
  • React 19 + Vite + TypeScript: the UI. Vite for dev with hot reload, a single bundle for release.
  • xterm.js + WebGL addon: the terminals. WebGL was the only renderer without visible row gaps in TUI apps.
  • CodeMirror 6: the editor. About 150 KB, and faster than Monaco in WKWebView when benchmarked.
  • portable-pty: the PTYs, the same crate Wezterm uses, working across macOS, Linux and Windows.
  • Zustand: frontend state.

There is no backend server and no daemon. Everything runs in the one app process on your machine. That’s a deliberate constraint, not an accident, it’s what makes the privacy story simple.

Where your data lives

Termic uses two directories with different owners.

App data lives under your platform’s local data directory in a termic/ folder. On macOS that’s:

~/Library/Application Support/termic/
├── projects.json        # all your projects, as one JSON array
├── tasks/               # one <uuid>.json per task
└── settings.json        # app settings + the agent registry
  • projects.json holds each project’s repo path, scripts, preview URL template, files-to-copy globs and default CLI.
  • Each task is a single <uuid>.json file describing its branch, its worktree (or main checkout flag), and its sandbox settings.
  • settings.json holds your app preferences and the editable agent registry.

Window state (position and size) lives separately, under a com.simion.termic/ folder, owned by Tauri’s window-state plugin.

Where worktrees live

The actual git worktrees are created under:

~/termic/tasks/<project>/<name>/

This root is configurable in settings. Main checkout tasks don’t create anything here, they point at your existing checkout, which is why archiving one never deletes files.

The debug log

A local debug log is written to your system temp directory as termic-debug.log. It’s the only thing Termic records, it stays on your machine, and you can tail it (see Privacy). On macOS the temp dir is under /var/folders/..., not /tmp; the troubleshooting page has the one-liner to find it.

Open source

Termic is AGPL-3.0 on GitHub. The architecture notes for contributors (and for agents working in the repo) live in the project’s CLAUDE.md. Derivatives stay AGPL, which is the mechanism that stops a future version from quietly going closed.

Last reviewed: June 5, 2026