mainframe

agent
SUMMARY

AI-native development environment for orchestrating agents

README.md

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

Reviews (0)

No results found