Berth

Deploy and manage code from your Mac. v0.4.3

Berth is a macOS app that lets you deploy and manage code — especially AI-generated code from Claude Code, Cursor, or Codex — to local machines and remote Linux servers. Paste code, pick a target, and it's running.

Key Capabilities

Local Execution

Run Python, Node.js, Go, Rust, and shell scripts locally with automatic runtime detection and dependency installation.

Remote Deployment

Deploy to Linux servers via a lightweight Rust agent. Zero inbound ports required — communication flows through NATS.

AI-Controllable

Full MCP server with 26 tools. Claude Code can deploy, run, stop, and monitor projects programmatically.

Public URLs

Publish any running project to a public URL via Cloudflare Quick Tunnels. One click, no account needed.

Scheduling

Cron-like scheduling with @every, @hourly, @daily, or standard cron expressions. Runs independently on agents.

Environment Variables

Per-project secrets with .env import, log masking, and management via UI, CLI, and MCP.

Supported Runtimes

Runtime Detected By Entrypoint Dependencies
Python *.py, requirements.txt, pyproject.toml main.py, app.py, or first .py pip install -r requirements.txt
Node.js package.json, *.js, *.ts package.json main/start, or index.js npm install
Go go.mod, *.go main.go go mod download
Rust Cargo.toml, *.rs cargo run cargo build
Shell *.sh, shebang (#!/bin/bash) First .sh file None

Get Started

Architecture

YOUR MAC Desktop App Tauri 2.0 — React 19 + Rust Projects Log Viewer Code Editor Targets Env Vars Settings Rust Backend: commands.rs + berth-core + SQLite Embedded Local Agent (UDS) CLI berth <cmd> MCP Server 26 tools · stdio Claude Code / AI Agent berth-core · berth-proto · SQLite (berth.db) macOS Keychain Menu Bar Tray Synadia Cloud NATS Messaging JetStream tls://connect.ngs.global outbound TLS LINUX SERVERS Remote Agent berth-agent · systemd service NATS Handler gRPC Server Executor Scheduler Deploy Mgr Tunnel Mgr SQLite: agent.db · ~/.berth/deploys/ outbound TLS Agent 2 staging.example.com Agent N prod.example.com Data Flow Code Input Detect Target Deploy Run Monitor paste/dir/AI → python/node/go/rust/shell → local/remote → agent → process → logs/status Security HMAC-SHA256 signing Challenge-response pairing Direct gRPC mTLS fallback cloudflared *.trycloudflare.com Public Internet
Desktop App
CLI
MCP / AI
Agent
NATS
Security
gRPC fallback

How It Works

Berth has three entry points that share a common Rust core:

ComponentDescriptionConnection
Desktop App Tauri 2.0 macOS app (React 19 + Rust). Project management, log viewer, code editor, settings. Embedded local agent via UDS; remote via NATS or gRPC
CLI berth command-line tool. Same capabilities as the GUI. Same transport layer as the desktop app
MCP Server 26-tool server for AI agents. Claude Code spawns it via stdio. Same transport layer as the desktop app

Communication

Local

An embedded agent runs inside the desktop app, communicating over Unix domain sockets. No network required.

Remote via NATS (recommended)

Both sides connect outbound to Synadia Cloud. Zero inbound ports. Works behind NAT, firewalls, and VPNs. All commands HMAC-signed.

Remote via gRPC (fallback)

Direct connection to agent IP:port over mTLS. Requires port 50051 reachable. Use on trusted LANs or via SSH tunnel.

Public URLs

Running services can be published via cloudflared tunnels, exposing a temporary *.trycloudflare.com URL to the internet.

Berth v0.4.3 — GitHub