freshcrate
Home > AI Agents > mainframe

mainframe

AI-native development environment for orchestrating agents

Description

AI-native development environment for orchestrating agents

README

Mainframe

AI-native development environment for orchestrating agents

CI MIT License

Mainframe desktop Ā Ā  Mainframe mobile


What is Mainframe?

Mainframe is an open-source desktop app that brings all your AI coding agents into one interface. Instead of juggling terminal windows, switching between your IDE and CLI, and losing track of what each agent is doing across projects — Mainframe gives you a single place to manage it all.

AI CLI tools are powerful, but they live in the terminal. Mainframe adds the layer terminals can't: visual file editing, live sandbox previews, task management, cross-project session history, and a mobile companion for working on the go.

Work in progress. Mainframe is under active development — some features are incomplete and the mobile companion app is not yet published. Expect rough edges.

Features

  • Unified provider interface — One app for Claude, Gemini, and other AI coding agents — switch providers without changing your workflow
  • Multi-project session management — Run sessions across multiple projects with instant context switching and full session history
  • In-app file editing — View and edit files, diffs, and code directly in Mainframe without switching to your IDE
  • Sandbox preview — Launch dev servers and preview your app with a built-in browser and inspector for adding precise context
  • Task management — Integrated kanban board to track agent work and your own todos alongside sessions
  • Content referencing — @-mention files, add context on diff viewer, add context from the file editor, to give agents exactly the context they need
  • AI tools management — Makes sure your project is AI ready. Handling Subagents, Skills, MCPs, context files.
  • Mobile companion — Monitor and interact with your sessions from your phone — review, approve, and respond on the go
  • Extensible plugin system — Add UI panels, databases, event listeners, and new AI adapters through a capability-based plugin API
  • API-first daemon — Run the daemon standalone and build your own UI, integrations, or automations on top of its HTTP and WebSocket API

Getting Started

Desktop App

Download the latest release for your platform from GitHub Releases.

Daemon Only

Install the standalone daemon if you want to run it headless or build your own interface:

curl -fsSL https://raw.githubusercontent.com/qlan-ro/mainframe/main/scripts/install.sh | bash

Remote Access (e.g. Mobile App)

The mobile companion app and any remote access require a Cloudflare Tunnel — a secure outbound connection from your machine to Cloudflare's edge, so you don't need to open ports or configure a firewall.

  • Desktop app: Enable the tunnel from Settings → Tunnel.
  • Standalone daemon: Set TUNNEL=true when starting the daemon, or configure it in ~/.mainframe/config.json.

See the Cloudflare Tunnel guide for named tunnels with a persistent URL, self-managed setups, and troubleshooting.

Mobile Companion App

Pairing with your desktop:

  1. Open the desktop app and go to Settings → Devices → Pair New Device
  2. A pairing code (and QR code) appears on screen
  3. Open the mobile app, tap Connect, and scan the QR code or enter the code manually
  4. The daemon issues a token — your phone is now paired and can send messages, respond to permissions, and receive push notifications

Pairing from the CLI (headless/daemon-only):

mainframe-daemon pair

This prints a pairing code to the terminal. Enter it in the mobile app to complete pairing.

Prerequisites

Mainframe orchestrates AI coding agents — you'll need at least one installed:

  • Claude CLI (requires a Claude account)
  • cloudflared (optional — only needed for remote/mobile access via tunnel)

Development

See the Developer Guide for full setup instructions.

git clone https://github.com/qlan-ro/mainframe.git
cd mainframe
pnpm install && pnpm build && pnpm dev

Configuration

Env vars override ~/.mainframe/config.json, which overrides defaults.

Variable Default Description
DAEMON_PORT 31415 Daemon HTTP + WebSocket port
VITE_PORT 5173 Vite dev server port
MAINFRAME_DATA_DIR ~/.mainframe Data directory (DB, config, plugins, logs)
LOG_LEVEL info Logging verbosity
AUTH_TOKEN_SECRET auto-generated JWT signing secret for mobile pairing
TUNNEL — Set true to enable Cloudflare tunnel
TUNNEL_URL — Named tunnel URL
TUNNEL_TOKEN — Cloudflare tunnel token
VITE_DAEMON_HOST 127.0.0.1 Daemon host for desktop renderer
VITE_DAEMON_HTTP_PORT 31415 Daemon HTTP port for desktop renderer
VITE_DAEMON_WS_PORT 31415 Daemon WebSocket port for desktop renderer

See the Developer Guide for details on IntelliJ run configurations and precedence.

Document Description
Architecture System design, data flow, package breakdown
API Reference HTTP and WebSocket API for the daemon
Developer Guide Setup, workflow, monorepo conventions
Plugin Developer Guide Build plugins: manifest, APIs, UI panels, events
Contributing How to contribute, code standards, PR process

Plugin System

Mainframe is built to be extended. Plugins can add UI panels, store data in isolated databases, listen to daemon events, expose HTTP endpoints, and even register new AI CLI adapters.

What ships built-in:

  • Claude adapter — the Claude CLI integration is itself a plugin
  • Task board — the kanban task manager is a plugin with its own database, attachment storage, and fullview panel

Build your own: Write a manifest.json declaring your capabilities, export an activate() function in index.js, and drop it in ~/.mainframe/plugins/. The daemon loads it on startup.

See the Plugin Developer Guide for the full API reference — manifest schema, database access, UI zones, event bus, attachments, config, services, and adapter integration.

We welcome plugin contributions. If you've built something useful, open a PR to include it as a builtin or share it with the community.

Contributing

See CONTRIBUTING.md. Bug reports and feature requests go in GitHub Issues.

License

MIT — Ā© 2026 Mainframe Contributors

Release History

VersionChangesUrgencyDate
v0.11.1--- **Full Changelog**: [`CHANGELOG.md`](https://github.com/qlan-ro/mainframe/blob/v0.11.1/CHANGELOG.md) ## What's Changed * fix(desktop): ship macOS zip for auto-update + radix tooltip polish by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/228 * chore: version packages by @github-actions[bot] in https://github.com/qlan-ro/mainframe/pull/229 **Full Changelog**: https://github.com/qlan-ro/mainframe/compare/v0.11.0...v0.11.1High4/21/2026
v0.11.0--- **Full Changelog**: [`CHANGELOG.md`](https://github.com/qlan-ro/mainframe/blob/v0.11.0/CHANGELOG.md) ## What's Changed * feat(sessions): derive view mode from project filter (#109) by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/222 * chore: remove local todos skill and bump mobile to 5e7d8db by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/225 * fix(composer): preserve newlines and cap max-height (#99) by @doruchiulan in https://github.com/qlan-ro/mainframeHigh4/21/2026
v0.10.3--- **Full Changelog**: [`CHANGELOG.md`](https://github.com/qlan-ro/mainframe/blob/v0.10.3/CHANGELOG.md) ## What's Changed * fix(files): worktree paths in context menu and symlink support by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/216 * fix(todos): include task title in "Task created" toast by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/217 * docs(plugins): note builtin UI is rendered from a hardcoded map by @doruchiulan in https://github.com/qlan-ro/mainHigh4/16/2026
v0.10.2--- **Full Changelog**: [`CHANGELOG.md`](https://github.com/qlan-ro/mainframe/blob/v0.10.2/CHANGELOG.md) ## What's Changed * fix(desktop): contain TurnFooter crash and log renderer-gone events by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/211 * fix: downgrade launch and auto-updater errors to warn by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/209 * chore: version packages by @github-actions[bot] in https://github.com/qlan-ro/mainframe/pull/212 * fix(ci): pHigh4/16/2026
v0.10.1--- **Full Changelog**: [`CHANGELOG.md`](https://github.com/qlan-ro/mainframe/blob/v0.10.1/CHANGELOG.md) ## What's Changed * fix: notification improvements and push dedup by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/206 * chore: version packages by @github-actions[bot] in https://github.com/qlan-ro/mainframe/pull/207 * chore: prepare release v0.10.1 by @github-actions[bot] in https://github.com/qlan-ro/mainframe/pull/208 **Full Changelog**: https://github.com/qlan-rHigh4/16/2026
v0.10.0--- **Full Changelog**: [`CHANGELOG.md`](https://github.com/qlan-ro/mainframe/blob/v0.10.0/CHANGELOG.md) ## What's Changed * feat(desktop): IntelliJ-style dockable side panels by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/191 * feat: suppress mobile push when desktop is active by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/190 * fix(desktop): files tab default, root tooltip, duplicate notifications by @doruchiulan in https://github.com/qlan-ro/mainframe/pullMedium4/14/2026
v0.9.0--- **Full Changelog**: [`CHANGELOG.md`](https://github.com/qlan-ro/mainframe/blob/v0.9.0/CHANGELOG.md) ## What's Changed * feat: show TodoWrite task checklist in Context tab (#65) by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/182 * feat: integrated terminal panel (#59) by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/185 * feat(core): append system prompt to Claude sessions for AskUserQuestion by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/181 Medium4/14/2026
v0.8.1--- **Full Changelog**: [`CHANGELOG.md`](https://github.com/qlan-ro/mainframe/blob/v0.8.1/CHANGELOG.md) ## What's Changed * fix(desktop): pass default model on createChat and show compacting indicator by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/178 * chore: version packages by @github-actions[bot] in https://github.com/qlan-ro/mainframe/pull/179 * chore: prepare release v0.8.1 by @github-actions[bot] in https://github.com/qlan-ro/mainframe/pull/180 **Full ChangelogMedium4/6/2026
v0.8.0--- **Full Changelog**: [`CHANGELOG.md`](https://github.com/qlan-ro/mainframe/blob/v0.8.0/CHANGELOG.md) ## What's Changed * fix(desktop): update preview URL when switching worktree sessions by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/171 * feat: add Copy Reference to Monaco editors (#39) by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/175 * fix: kanban board UX fixes (#82) by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/172 * fix(core): read cMedium4/5/2026
v0.7.0--- **Full Changelog**: [`CHANGELOG.md`](https://github.com/qlan-ro/mainframe/blob/v0.7.0/CHANGELOG.md) ## What's Changed * Fast search: ripgrep backend, binary exclusion, resizable palette by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/153 * fix(ci): use PAT for release tag push by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/155 * feat: in-app and system notifications (#66) by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/156 * fix(desktop): renMedium4/4/2026
v0.6.0--- **Full Changelog**: [`CHANGELOG.md`](https://github.com/qlan-ro/mainframe/blob/v0.6.0/CHANGELOG.md) ## What's Changed * fix(ci): use GH_PAT for tag push to trigger release workflow by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/141 * feat: add quick-create todo dialog (Cmd+T) (#27) by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/138 * fix: stop button works with background subagents by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/142 * feat(tMedium4/4/2026
v0.5.0--- **Full Changelog**: [`CHANGELOG.md`](https://github.com/qlan-ro/mainframe/blob/v0.5.0/CHANGELOG.md) ## What's Changed * fix: worktree uses branch name for directory + pre-push hook worktree fix by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/119 * feat: add release-downloads skill by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/122 * docs: comprehensive code analysis report by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/121 * fix: background Medium3/30/2026
v0.4.0--- **Full Changelog**: [`CHANGELOG.md`](https://github.com/qlan-ro/mainframe/blob/v0.4.0/CHANGELOG.md) ## What's Changed * fix(desktop): close file editor when switching projects by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/112 * fix(desktop): persist project filter across todos view and app restarts by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/114 * fix(desktop): remember cursor position on editor back/forward by @doruchiulan in https://github.com/qlan-Medium3/27/2026
v0.3.0--- **Full Changelog**: [`CHANGELOG.md`](https://github.com/qlan-ro/mainframe/blob/v0.3.0/CHANGELOG.md) ## What's Changed * fix(core): deduplicate display messages by id by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/96 * fix(desktop): prevent stale messages when switching projects by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/98 * fix(core): only update session updatedAt on user message send by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/99 *Medium3/26/2026
v0.2.3--- **Full Changelog**: [`CHANGELOG.md`](https://github.com/qlan-ro/mainframe/blob/v0.2.3/CHANGELOG.md) ## What's Changed * docs: add WIP disclaimer and Cloudflare Tunnel guide by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/77 * fix: allow Enter to send messages while response is in progress by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/76 * feat: derive session diffs from messages, improve branch diffs by @doruchiulan in https://github.com/qlan-ro/mainframeMedium3/24/2026
v0.2.2## What's Changed * fix(core, desktop): validate cwd before spawn, dynamic CSP by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/53 * fix(desktop): allow sending messages while agent is running by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/52 * fix(release): draft releases and deduplicate changelog by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/54 * feat(desktop): mobile view toggle for sandbox preview by @doruchiulan in https://github.com/qlan-ro/mainLow3/20/2026
v0.2.1**Full Changelog**: https://github.com/qlan-ro/mainframe/compare/v0.2.0...v0.2.1 ## What's Changed * chore: dev data dir, env vars, editor save, bottom panel fixes by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/42 * fix(core, desktop): launch env isolation, imported sessions, macOS permissions by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/43 **Full Changelog**: https://github.com/qlan-ro/mainframe/compare/v0.2.0...v0.2.1Low3/10/2026
v0.2.0## What's Changed * chore: add version lifecycle script to sync workspace package versions by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/7 * chore: bump version to 0.2.0 by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/8 * feat: plugin system with capability-gated context by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/6 * feat(todos): kanban plugin with redesigned UI and softened borders by @doruchiulan in https://github.com/qlan-ro/mainframe/pull/10 Low3/9/2026
v0.1.0Initial ReleaseLow3/6/2026

Dependencies & License Audit

Loading dependencies...

Similar Packages

ClawWorkClient for OpenClaw — Connect ClawWork to your own OpenClaw and unlock 10x multi-session productivity.v0.0.15-beta.1
dorabotmacOS app for 24/7 AI agents in an IDE with memory, scheduled tasks, browser use + access to Whatsapp, Telegram, Slack.v0.2.87
piclawI'm going to build my own OpenClaw, with blackjack... and bun!v1.8.3
opencode-telegram-botOpenCode mobile client via Telegram: run and monitor AI coding tasks from your phone while everything runs locally on your machine. Scheduled tasks support. Can be used as lightweight OpenClaw alternav0.17.0
codebot-aiSafe, local-first autonomous coding agent. Policy-governed, audit-trailed, sandboxed. Works with any LLM.v2.10.0