Or with Go

February 16, 2026 · View on GitHub

lazycap - Terminal UI for Capacitor Development

The command center for Capacitor & Ionic mobile development

Quick StartFeaturesShortcutsAI IntegrationPluginsConfig

Release Platform License Built with Go


What is lazycap?

lazycap is a beautiful terminal dashboard for Capacitor and Ionic mobile development. It unifies device management, builds, live reload, debugging, and AI assistance into one elegant interface.

No more juggling terminal windows. No more remembering commands. Just lazycap.


Quick Start

Install

# Homebrew (recommended)
brew tap icarus-itcs/lazycap https://github.com/icarus-itcs/lazycap
brew install lazycap

# Or with Go
go install github.com/icarus-itcs/lazycap@latest

Run

cd your-capacitor-project
lazycap

That's it. lazycap auto-detects your project, discovers devices, and you're ready to go.


Features

Device Management

View all your development targets in one place:

Device TypeSupport
iOS SimulatorsFull support with boot/status tracking
iOS Physical DevicesUSB-connected devices
Android EmulatorsFull support with state management
Android Physical DevicesUSB debugging enabled devices
Web BrowserAlways available

Auto-detection — lazycap finds devices using xcrun simctl, adb, and emulator commands automatically.

One-Key Actions

Everything you need is a single keystroke away:

  • r — Run on device (with optional live reload)
  • b — Build web assets
  • s — Sync to native projects
  • o — Open in Xcode or Android Studio
  • x — Kill a running process

Live Reload

Start live reload sessions with smart defaults:

  • Configurable port (default: 8100)
  • External host detection for physical devices
  • Per-device targeting
  • Auto-sync before run (optional)

Smart Framework Detection

lazycap auto-detects your web framework and finds the right dev command:

FrameworkDetection
Vitevite.config.*
Ionicionic.config.json
Webpackwebpack.config.*
Parcel.parcelrc
Next.jsnext.config.*
Nuxtnuxt.config.*

Falls back to common scripts: dev, serve, start, ionic:serve, dev:web

Process Management

Monitor all your running processes with real-time logs:

  • Process tabs — Switch between Run, Build, Sync, Web Dev
  • Live streaming — Watch logs as they happen
  • Status indicators — See running, success, failed, or canceled
  • Log actions — Copy to clipboard or export to file

30+ Debug Actions

Press d to access powerful cleanup and diagnostic tools:

iOS/Xcode

  • Clear Derived Data
  • Clear Device Support
  • Clean iOS Build
  • Reset All Simulators
  • Deintegrate & Reinstall Pods

Android

  • Clean Android Build
  • Clear Gradle Cache
  • Stop Gradle Daemons
  • Restart ADB Server
  • Wipe Emulator Data

Node/Web

  • Clear node_modules
  • Clear NPM Cache
  • Kill Dev Server Ports
  • Clear Vite/Webpack Cache
  • Force Rebuild

Nuclear Options

  • Full Project Clean (all caches)
  • Fresh Install (clean + npm install + pod install + cap sync)

Preflight Checks

Automatic environment validation on startup:

  • Node.js, npm, npx, git
  • Xcode CLI tools & CocoaPods (macOS)
  • Android SDK & ADB
  • Capacitor CLI
  • Version compatibility checks

Monorepo Support

Working in a monorepo? lazycap discovers all Capacitor projects up to 4 levels deep and lets you switch between them with a project selector.

Self-Update

Press U when an update is available to upgrade lazycap in-place. No package manager needed.


Keyboard Shortcuts

Core Actions

KeyAction
rRun on selected device
bBuild the project
sSync Capacitor
oOpen in native IDE
wStart web dev server
KeyAction
TabSwitch between panes
Navigate lists
Switch process tabs
EnterSelect / Confirm
EscBack / Cancel

Process Management

KeyAction
xKill selected process
cCopy logs to clipboard
eExport logs to file

Panels

KeyAction
dDebug tools
PPlugins panel
,Settings
pPreflight checks
?Help

System

KeyAction
RRefresh device list
UUpdate lazycap
qQuit (press twice)

AI Integration

MCP Server

lazycap exposes functionality via the Model Context Protocol, allowing AI assistants to control your development environment.

Add to Claude Code (~/.claude/settings.json):

{
  "mcpServers": {
    "lazycap": {
      "command": "lazycap",
      "args": ["mcp"],
      "cwd": "/path/to/your/capacitor-project"
    }
  }
}

Available Tools:

ToolDescription
list_projectsList all Capacitor projects
list_devicesGet available devices/emulators
run_on_deviceRun app with optional live reload
syncSync web assets to native
buildBuild web assets
open_ideOpen Xcode or Android Studio
get_projectGet project information
get_all_logsGet logs with filtering (type, status, search, errors_only)
get_debug_actionsList debug/cleanup actions
run_debug_actionExecute a debug action

Log Filtering Options:

The get_all_logs tool supports powerful filtering:

  • type — Filter by process type: "build", "sync", "run", "web", or plugin name like "firebase"
  • status — Filter by status: "running", "success", "failed", "canceled"
  • search — Search for text in logs (case-insensitive)
  • errors_only — Only return lines containing error indicators
  • tail — Limit lines per process

Example prompts for Claude:

"Run the app on my iPhone simulator with live reload"

"Sync the project and open it in Xcode"

"The build failed, check the logs and fix the error"

"Show me only the error lines from the last build"

"What's happening with the firebase emulator?"

"Clear all caches and do a fresh install"


Plugins

lazycap features an extensible plugin system. Press P to manage plugins.

MCP Server Plugin

Exposes lazycap via Model Context Protocol for AI assistant integration.

SettingDescriptionDefault
modetcp or stdiotcp
portTCP port9315
autoStartStart on launchfalse

Firebase Emulator Plugin

Integrates Firebase Emulator Suite for local development.

Supported Emulators: Auth, Firestore, Realtime Database, Functions, Hosting, Storage, PubSub, Eventarc

SettingDescriptionDefault
autoStartStart on launchfalse
exportOnExitExport data on stoptrue
exportPathExport directory.firebase-export
uiEnabledEnable Emulator UItrue

Plugin API

Create custom plugins by implementing the Plugin interface:

type Plugin interface {
    ID() string
    Name() string
    Description() string
    Version() string

    Init(ctx Context) error
    Start() error
    Stop() error
    IsRunning() bool

    GetSettings() []Setting
    GetStatusLine() string
    GetCommands() []Command
}

Plugins can access devices, processes, logs, settings, debug actions, and the event bus.


Configuration

Settings File

lazycap supports both per-project and global settings:

LocationFilePriority
Per-project.lazycap.json in current directoryChecked first
Global~/.config/lazycap/settings.jsonFallback

When you modify settings, they're saved to the currently loaded config file (shown at the bottom of the settings panel). New settings default to per-project config in the current directory.

Press , to open the settings panel.

Run Options

SettingDescriptionDefault
liveReloadDefaultEnable live reload by defaultfalse
liveReloadPortLive reload port8100
externalHostExternal IP (auto-detect if empty)
autoSyncSync before runningfalse
autoBuildBuild before syncingfalse
clearLogsOnRunClear logs on new runtrue

Build Options

SettingDescriptionDefault
buildCommandCustom build commandauto-detect
productionBuildUse production modefalse
sourceMapsGenerate source mapstrue
buildTimeoutTimeout in seconds300

iOS Options

SettingDescriptionDefault
iosSchemeXcode scheme
iosConfigurationDebug or ReleaseDebug
iosAutoSigningAutomatic signingtrue
iosTeamIdDevelopment team ID

Android Options

SettingDescriptionDefault
androidFlavorBuild flavor
androidBuildTypedebug or releasedebug
androidSdkPathCustom SDK path

Web Dev Options

SettingDescriptionDefault
webDevCommandDev server commandauto-detect
webDevPortDev server port
webOpenBrowserAuto-open browserfalse
webHttpsUse HTTPSfalse

UI Options

SettingDescriptionDefault
compactModeCompact UI layoutfalse
showTimestampsTimestamps in logsfalse
showSpinnersAnimated spinnerstrue
colorThemedark, light, systemdark
maxLogLinesMax lines per log5000

CLI Commands

lazycap              # Launch the TUI dashboard
lazycap version      # Show version, commit, build date
lazycap devices      # List devices in table format
lazycap mcp          # Run as MCP server
lazycap --demo       # Demo mode with mock data
lazycap --verbose    # Verbose output
lazycap --config     # Custom config file path

Platform Support

PlatformArchitectureStatus
macOSApple Silicon (arm64)Tested
macOSIntel (amd64)Supported
Linux64-bit (amd64)Supported
LinuxARM64Supported
Linux32-bit / ARMv7Supported
Windows64-bit / ARM64Untested
FreeBSD64-bitSupported

Requirements

Core:

  • Node.js 18+ with npm/yarn/pnpm
  • Capacitor project (capacitor.config.ts/js/json)

iOS Development (macOS only):

  • Xcode with command line tools
  • CocoaPods
  • iOS Simulator or physical device

Android Development:

  • Android Studio with SDK
  • ADB
  • Emulator or physical device (USB debugging enabled)

Troubleshooting

Debug Log

Check /tmp/lazycap-debug.log for detailed information.

Common Issues

Devices not showing?

  • Run preflight checks (p) to verify tools are installed
  • For iOS: Ensure Xcode CLI is installed (xcode-select --install)
  • For Android: Ensure ADB is running (adb devices)

Live reload not connecting?

  • Check externalHost setting for physical devices
  • Verify firewall allows the live reload port

Build failing?

  • Use debug tools (d) to clean caches
  • Try "Fresh Install" for a complete reset

Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.

Ways to help:

  • Report bugs and suggest features
  • Submit pull requests
  • Improve documentation
  • Create and share plugins
  • Test on different platforms

Development

git clone https://github.com/icarus-itcs/lazycap.git
cd lazycap
go mod download
make build
./bin/lazycap

License

MIT + Commons Clause — Free to use, modify, and share. You just can't sell it.

  • Use lazycap for any project (personal or commercial)
  • Modify and fork the code
  • Contribute improvements back
  • Share with others

The Commons Clause prevents reselling lazycap or offering it as a paid service.

See LICENSE for details. Copyright (c) 2025 Icarus, Inc.


Acknowledgments


Made with care by Icarus, Inc.