veld

One command. Clean URLs. Trusted HTTPS. Every service.
Terminal
$ veld start --preset fullstack --name dev database healthy database.dev.acme.com backend healthy backend.dev.acme.com frontend ready frontend.dev.acme.com 3 services running. All HTTPS.
🔒 https://frontend.dev.acme.com
Acme
Running locally with trusted HTTPS
The problem you know
"Was it port 3000 or 3001?"
Port collision
"Your connection is not private"
Self-signed cert hell
"But it works if I start the database first..."
Dependency ordering
veld start

That's the replacement.

5-Minute Setup

From zero to running in five steps

Everything you need to go from a fresh machine to a fully orchestrated local stack.

1

Install veld

Downloads the correct binary for your OS and architecture.

curl -fsSL https://veld.oss.life.li/get | bash

No sudo required. Commands auto-bootstrap on first use. For clean URLs without port numbers, run veld setup privileged (one-time sudo).

2

Teach your agent

Install agent skills so your coding agent knows how to configure, use, and collaborate through veld. Works with Claude Code, Cursor, Codex, Windsurf, and 40+ more.

npx skills add prosperity-solutions/veld
3

Initialize your project

Creates a veld.json in your project root.

veld init
4

Configure your services

Define your stack: services, dependencies, health checks, and URL templates.

{ "$schema": "https://veld.oss.life.li/schema/v1/veld.schema.json", "schemaVersion": "1", "name": "acme", "url_template": "{service}.{run}.{project}.localhost", "nodes": { "backend": { "default_variant": "local", "variants": { "local": { "type": "start_server", "command": "npm run dev -- --port ${veld.port}", "health_check": { "type": "http", "path": "/health" } } } } } }
5

Start it up

Veld resolves the dependency graph, allocates ports, starts processes, runs health checks, and gives you HTTPS URLs.

veld start frontend:local --name dev

Agent-first by design

AI agents can generate veld.json configurations using skills and tool integrations. veld's structured output (--json) makes it fully scriptable for agent workflows.

How It Works

Automatic dependency resolution

Declare what depends on what. Veld starts services in the correct order, waits for health checks, and wires URLs together.

database :docker backend :local frontend :local
database starts backend starts frontend starts
Features

Everything you need, nothing you don't

A single tool that replaces your pile of scripts, port spreadsheets, and certificate hacks.

No port numbers

Clean HTTPS URLs for every service. No more localhost:3000.

Custom domains

Use any domain pattern: {service}.{branch}.acme.com or your own apex. Requires veld setup privileged.

Standardized schema

JSON Schema-backed veld.json with editor autocompletion and validation.

Agent-first

Every command supports --json. Built-in feedback overlay for human-agent collaboration. Agent skills teach your coding agent how to use veld: npx skills add prosperity-solutions/veld

Worktree compatible

{worktree} and {branch} variables in URL templates for git-worktree workflows.

Variant support

Same service, multiple ways to run it: local, Docker, remote URL. Switch with one flag.

Presets

Named shortcuts like fullstack or api-only for common service combinations.

Framework agnostic

Starts any process: Node, Rust, Python, Go, Ruby, Docker, shell scripts. If it binds a port, veld orchestrates it.

Dependency graphs

Declare dependencies, veld resolves startup order and parallelizes where possible.

Health checks

Two-phase verification (TCP + HTTP) before routing traffic. No more "is it ready yet?"

Named runs

Multiple environments coexist. --name feature-auth and --name feature-pay run side by side.

Auto-trusted TLS

Caddy provisions certificates. Your browser trusts them. No warnings, ever.

The Feedback Overlay

Talk to your AI agent while it works

When an AI agent is building your app, you can give it feedback directly through the browser. No context-switching. No copy-pasting screenshots.

Real Workflows

Common scenarios, solved

Expand each to see the exact config and commands.

Collaborating with Claude Code on a full-stack app

You're building a SaaS app with PostgreSQL, a Rust API, and a Next.js frontend. Claude Code reads your codebase, generates the veld.json, and starts iterating. You give feedback through the browser overlay while the agent works.

# Claude Code generates the config and starts everything: veld start --preset fullstack --name dev # You open the browser, see the app, click the feedback button: # "The auth flow is broken - the login button should redirect to /auth/login" # Claude receives it as JSON, fixes the code, server reloads: veld feedback --wait --name dev --json # Check all service URLs: veld urls --name dev

Your full stack runs at:
https://database.dev.myapp.localhost
https://api.dev.myapp.localhost
https://web.dev.myapp.localhost

The --json flag on every command makes veld fully scriptable. The agent parses structured output, checks health status, and reacts to errors programmatically.

Collaborating with Cursor on frontend styling

Your backend is stable but you're iterating fast on the UI. Cursor is making styling changes while you preview them live with trusted HTTPS -- so OAuth redirects, secure cookies, and WebSocket connections all work exactly like production.

# Start only the frontend with a mock API: veld start frontend:local --name styling # Cursor edits your Tailwind, you see changes instantly at: # https://frontend.styling.myapp.localhost # Give feedback through the overlay: # "The sidebar is too wide on mobile. Also, the hover state on # the nav links needs more contrast." # Cursor receives the feedback and updates the components

Because veld gives you real HTTPS with trusted certificates, you can test service workers, push notifications, and secure cookie flows without any browser warnings.

Running parallel feature branches with isolated environments

Two features in flight at the same time? No problem. Each --name creates a fully isolated environment with its own ports, DNS entries, and HTTPS certificates.

# Feature branch A -- new auth system veld start --preset fullstack --name feature-auth -d # Feature branch B -- payment integration (runs in parallel) veld start --preset fullstack --name feature-payments -d # See everything running side by side veld runs

Each environment gets unique URLs -- no port conflicts, no crossed wires:

https://frontend.feature-auth.acme.com
https://frontend.feature-payments.acme.com

Use {branch} in your URL template for automatic branch-based naming:

"url_template": "{service}.{branch ?? run}.{project}.localhost"
Setting up a complex microservices stack

You have 6 services: a gateway, two APIs, a worker, Redis, and Postgres. Some run in Docker, some run locally. veld resolves the dependency graph and starts everything in the right order.

{ "name": "platform", "url_template": "{service}.{run}.platform.localhost", "presets": { "full": ["postgres:docker", "redis:docker", "users-api:local", "billing-api:local", "worker:local", "gateway:local"], "api-only": ["postgres:docker", "redis:docker", "users-api:local", "billing-api:local"] } }

Then:

# Start the full platform veld start --preset full --name dev # Or just the APIs you need veld start --preset api-only --name dev # Check what's running veld status --name dev

Every service gets its own HTTPS URL. The gateway sees the real URLs of each upstream service through environment variable interpolation. No hardcoded ports anywhere.

Configuration Reference

veld.json

Your project's configuration lives in a single veld.json file. Here are the key concepts.

Nodes & Variants

Each service is a node with one or more variants (e.g., database:docker vs database:local). Variants define how to start the service: the command, health check, environment variables, and outputs.

Dependencies

Variants declare their dependencies as depends_on pairs. veld resolves the full graph, starts services in topological order, waits for health checks, and wires URLs together via variable interpolation.

Step Types

start_server runs a long-lived process with port allocation, DNS routing, and health monitoring. command runs a one-shot script (migrations, setup tasks) with optional output capture.

Presets & URLs

Presets are named shortcuts for common service selections. URL templates like {service}.{run}.{project}.localhost give each service a clean, predictable HTTPS address.

The full configuration schema is available as a JSON Schema -- use it for editor autocompletion and validation.

View JSON Schema

Add "$schema": "https://veld.oss.life.li/schema/v1/veld.schema.json" to your veld.json for IDE support.