Skip to content

Building from Source

Development

Terminal window
# Clone the repository
git clone https://github.com/Flexmark-Intl/aiterm.git
cd aiterm
# Install dependencies
npm install
# Full app dev (frontend + Rust backend + MCP bridge)
npm run tauri:dev
# Frontend only (no Tauri)
npm run dev
# Type checking
npm run check
# Rust compilation check (run from src-tauri/)
cd src-tauri && cargo check

npm run tauri:dev enables the MCP bridge feature and applies dev-specific configuration automatically.

Production Build

Terminal window
npm run tauri:build

Build Output

PlatformFormatOutput Path
macOSDMGsrc-tauri/target/release/bundle/dmg/
WindowsNSIS installersrc-tauri/target/release/bundle/nsis/
Linux.debsrc-tauri/target/release/bundle/deb/

macOS Post-Build

After building on macOS, set the DMG volume icon:

Terminal window
./scripts/set-dmg-icon.sh

Tech Stack

LayerTechnology
FrontendSvelte 5 (runes), SvelteKit, TypeScript
BackendRust, Tauri 2
Terminalxterm.js (FitAddon, SerializeAddon, WebLinksAddon)
EditorCodeMirror 6 (+ MergeView for diffs)
PTYportable-pty
Stateparking_lot RwLock

Dev/Production Isolation

Dev and production builds use separate data directories so they can run simultaneously:

  • Dev: ~/Library/Application Support/com.aiterm.dev/
  • Production: ~/Library/Application Support/com.aiterm.app/

The window title shows “aiTerm (Dev)” in debug builds, and the sidebar displays a DEV badge.