Skip to content

Introduction

Corral is a native desktop application and CLI that provides a complete local development environment for JavaScript and TypeScript projects. It started with first-class Cloudflare Workers support and now works with Next.js, Nuxt, Remix, Astro, SvelteKit, Vite, and any Node.js project with a dev script. Think of it as Laravel Herd for the JS ecosystem — register your projects, and Corral handles the rest.

What Corral Does

  • Manages your dev servers. Start, stop, and monitor dev servers for all your projects from a single interface. Corral detects your framework, runs the right command, and handles port allocation, crash recovery, and process lifecycle automatically.

  • Routes custom local domains. Access your projects at my-worker.test instead of localhost:8787. Corral sets up DNS resolution and a reverse proxy with automatic HTTPS — no manual /etc/hosts editing required.

  • Handles Node.js versions. Install, switch, and pin Node.js versions per project. Corral respects .node-version and .nvmrc files, or you can set versions through its own settings.

  • Inspects local data. Browse your D1 databases, KV namespaces, R2 buckets, Durable Objects, Workflows, and Secrets Store directly — no SQL clients or extra tools needed.

  • Works your way. Use the native macOS app with its menu bar integration and GUI, or drive everything from the terminal with the corral CLI. Both interfaces share the same engine.

How It Works

When you start a project, Corral orchestrates several services behind the scenes:

my-worker.test
  → macOS resolver sends DNS to dnsmasq (127.0.0.1:5353)
  → dnsmasq resolves *.test → 127.0.0.1
  → Caddy on port 443 reads the Host header, terminates HTTPS
  → Routes to the correct wrangler dev instance (e.g., localhost:8787)

dnsmasq handles DNS resolution for your chosen TLD (.test by default). Caddy acts as a reverse proxy with automatic HTTPS using a locally-trusted certificate authority. Wrangler runs your Cloudflare Workers in local development mode. Corral vendors its own copy of Wrangler and manages Node.js installations, so you don't need to install anything globally.

Two Interfaces, One Engine

Corral uses a background daemon to manage all running processes. Both the macOS app and the CLI connect to this daemon, which means they always share the same state — projects started in the app are visible to the CLI and vice versa.

macOS App — Lives in your menu bar. Start and stop projects with a click, browse data visually, and manage Node.js versions through a native GUI. The daemon starts automatically when the app launches. See the macOS App overview for details.

CLI — Full control from your terminal. Every feature available in the GUI is also available via the corral command, with JSON output for scripting. The daemon starts automatically on the first command. See the CLI reference for all commands.

Next Steps