devir
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@devirstart the admin and server services"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Devir - Dev Runner CLI
A terminal UI for managing multiple dev services with colored logs, filtering, and MCP integration.
Features
Bubble Tea TUI - Interactive terminal UI with tabs, viewport, and status bar
Colored Logs - Each service has its own color for easy identification
Service Types - Long-running, oneshot, interval, and HTTP request services
Custom Icons - Emoji icons for services with dynamic status updates
Service Filtering - View logs from all services or filter by specific service
Search - Filter logs by text pattern
Port Management - Detects ports in use and offers to kill them
MCP Server - Integrate with Claude Code via Model Context Protocol
Daemon Mode - Multiple TUI/MCP clients can connect to the same services
Chrome DevTools Extension - View logs in browser DevTools panel
Related MCP server: devctl-mcp
Installation
Quick Install (Recommended)
curl -fsSL https://raw.githubusercontent.com/productdevbook/devir/master/install.sh | bashHomebrew (macOS/Linux)
brew install productdevbook/tap/devirManual Download
Download from Releases
Platform | Download |
macOS (Apple Silicon) | |
macOS (Intel) | |
Linux (x64) | |
Linux (ARM64) | |
Windows (x64) |
From Source
go install github.com/productdevbook/devir@latestOr build manually:
git clone https://github.com/productdevbook/devir.git
cd devir
make buildQuick Start
# Create devir.yaml (auto-detects project structure)
devir init
# Start services
devirUsage
Initialize Project
devir initThis creates a devir.yaml file by detecting your project structure:
Node.js - Detects
package.jsonwithdevscriptGo - Detects
go.modRust - Detects
Cargo.tomlPython - Detects
requirements.txtorpyproject.tomlMonorepos - Scans
apps/*,packages/*,services/*
TUI Mode (default)
# Start all default services
devir
# Start specific services
devir admin server
# With filters
devir --filter "error"
devir --exclude "hmr"MCP Server Mode
devir --mcpDaemon Mode
Devir uses a Unix socket daemon, allowing multiple clients (TUI or MCP) to connect to the same running services:
# Terminal 1: Start TUI (daemon starts automatically)
devir
# Terminal 2: Connect another TUI (same services, same logs)
devir
# Terminal 3: Connect via MCP (Claude Code controls same services)
devir --mcpAll clients share the same daemon and see the same logs in real-time. When Claude Code restarts a service, you'll see it immediately in your TUI.
Keyboard Shortcuts
Key | Action |
| Cycle through services |
| Select specific service |
| Show all services |
| Search logs |
| Copy logs to clipboard |
| Restart current service |
| Scroll up/down |
| Quit |
Configuration
Create devir.yaml in your project root:
services:
admin:
dir: apps/admin
cmd: bun run dev
port: 3000
color: blue
server:
dir: server
cmd: bun run dev
port: 3123
color: magenta
defaults:
- admin
- serverService Options
Field | Description |
| Working directory (relative to config file) |
| Command to run |
| Port number (for status display) |
| Log prefix color: |
| Custom emoji/icon for the service |
| Service type: |
| Run interval for |
| URL for |
| HTTP method for |
| Request body for |
| Custom headers for |
Service Types
Devir supports 4 different service types:
service (default)
Long-running process. For web servers, APIs, etc.
web:
dir: apps/web
cmd: npm run dev
port: 3000
icon: "🌐"
color: blueoneshot
Run once and exit. For migrations, setup scripts, etc.
migrate:
type: oneshot
dir: .
cmd: npm run migrate
icon: "⚙️"
color: yellowinterval
Run periodically. For health checks, cleanup jobs, etc.
health:
type: interval
interval: 5s
dir: .
cmd: bash health.sh
icon: "💓"
color: greenhttp
Make HTTP requests. For API calls, webhooks, etc.
api-check:
type: http
url: https://api.example.com/health
method: GET
icon: "📡"
color: magentaWith POST body:
notify:
type: http
url: https://api.example.com/webhook
method: POST
body: '{"event": "started"}'
headers:
- "Authorization: Bearer token123"
icon: "📤"
color: cyanStatus Symbols
Symbol | Status | Description |
| Running | Service is active |
| Completed | Oneshot/HTTP completed successfully |
| Failed | Service failed |
| Waiting | Interval service waiting for next run |
| Stopped | Service is stopped |
Dynamic Status
Services can dynamically update their icon and status by writing to .devir-status file in their directory:
# Simple - just icon
echo "🟢" > .devir-status
# JSON - icon + message
echo '{"icon": "🟢", "message": "All OK"}' > .devir-status
# JSON - full control
echo '{"icon": "🔴", "color": "red", "status": "failed", "message": "DB down!"}' > .devir-statusDynamic Status Fields
Field | Description |
| Override icon with emoji or short text |
| Override service color |
| Override status: |
| Status message (shown in MCP response) |
Example: Health Check with Dynamic Status
#!/bin/bash
# health.sh
if curl -sf http://localhost:3000/health >/dev/null 2>&1; then
echo '{"icon": "🟢", "message": "All systems operational"}' > .devir-status
echo "Health OK"
else
echo '{"icon": "🔴", "color": "red", "message": "Service down!"}' > .devir-status
echo "Health FAIL"
fiMCP Integration
Add to your project's .mcp.json:
{
"mcpServers": {
"devir": {
"command": "devir",
"args": ["--mcp"],
"cwd": "/path/to/project"
}
}
}Note: Set
cwdto the directory containing yourdevir.yaml. The daemon socket is unique per project directory, so multiple projects can run independently.
Available MCP Tools
Tool | Description |
| Start services |
| Stop all services |
| Get service status (includes type, icon, message) |
| Get recent logs |
| Restart a service |
| Check if ports are in use |
| Kill processes on ports |
MCP Status Response Example
{
"services": [
{
"name": "web",
"running": true,
"port": 3000,
"type": "service",
"status": "running",
"icon": "🌐"
},
{
"name": "health",
"running": true,
"type": "interval",
"status": "waiting",
"icon": "🟢",
"message": "All systems operational",
"runCount": 5
}
]
}Chrome DevTools Extension
View devir logs directly in Chrome DevTools. The extension connects via WebSocket to the devir daemon.
Installation
Download from Releases and extract devir-extension.zip.
Open
chrome://extensionsEnable "Developer mode"
Click "Load unpacked"
Select the extracted extension folder
Usage
Start devir with WebSocket enabled (default port 9222):
devirOpen Chrome DevTools (F12) on any page
Click the "Devir" tab
Features
Real-time logs - Logs stream as they happen
Service tabs - Filter logs by service
Level filtering - Filter by error, warn, info, debug
Search - Filter logs by text
Service controls - Start, Stop, Restart services directly from DevTools
Status indicators - Green/yellow/red dots show service status
WebSocket Port
By default, devir starts WebSocket server on port 9222. To use a different port:
devir --ws-port 9333Note: If you change the port, you'll need to modify the extension's
useWebSocket.tsto match.
Development
# Build
make build
# Build for all platforms
make build-all
# Run tests
make test
# Lint
make lintDependencies
Bubble Tea - TUI framework
Lip Gloss - Styling
MCP Go SDK - MCP server
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Real-time chat for AI agents. Claude Code, Cursor, Cline and Codex join channels over MCP.
Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.
- MaShop MCPOAuthapp.mashop
Build, deploy and manage MaShop e-commerce projects from Claude, Cursor or any MCP client.
Claude Code / MCP skills for the dev pipeline: discover, spec, design, build, ship, operate.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA command-line interface and MCP server for managing and monitoring multiple development services through a unified terminal UI. It enables users to interact with service logs, filter messages, and control development environments directly via Model Context Protocol integration.-
- FlicenseNot gradedqualityDmaintenanceAn MCP server that lets Claude manage long-running development processes across frameworks like Flutter, Next.js, Spring Boot, and Vite, with lifecycle control, log streaming, and hot reload support.1-
- FlicenseAqualityFmaintenanceAn MCP server for coordinating multiple Claude Code sessions across related projects.11-
- AlicenseAqualityDmaintenanceMCP server for orchestrating multiple Claude Code instances via tmux, enabling spawning, reading, sending, listing, and killing sessions.56 npm2MIT