HOW IT WORKS

The Shared Access Layer for Modern Engineering Teams

Select your role to see how ASD fits your workflow.

ARCHITECTURE

Software developer illustration Developer — Five Layers. One Platform.

ASD provides a unified architecture that adapts to your needs. See how each layer works together.

Developer Focus

Your code runs in the Application Layer. Caddy handles routing and HTTPS automatically. Focus on building, not infrastructure.

  • Hot reload works through tunnels
  • Auto-HTTPS for all local services
  • Share dev URLs with teammates instantly
THE FLOW

Software developer illustration Developer — What happens when you run `asd start`

Your Machine
localhost:3000
ASD CLI
Reads asd.yaml
Tunnel Server
SSH reverse tunnel
Result: Result: https://your-project.tunnel.asd.host → localhost:3000
CORE COMPONENTS

Software developer illustration Developer — What Each Part Does

.ASD CLI

DevOps automation framework. Portable Git submodule.

Core — Automation runner, macros, sandbox
Network — Service registry, health checks
Caddy — Ingress routing, TLS, auth
Tunnel — SSH reverse tunnels, credentials
Runtime: Bun + Just + Golang

Caddy Server

Local reverse proxy with automatic HTTPS.

Path-based routing to services
Automatic TLS via Let's Encrypt
Basic auth per route
Live config via Admin API :2019
One domain, many services

Tunnel Server

SSH-based reverse tunnel relay. EU hosted.

Relay only — no data stored
Ephemeral tokens per session
Custom CNAME domains
HTTP/HTTPS + TCP + SNI tunnels
Hetzner, Amsterdam NL

ASD Dashboard

Zero-backend PWA. Runs entirely in browser.

Service status at a glance
One-click URL sharing
Fragment-based state (no server)
Works offline after first load
Static files only
THE MANIFEST

Software developer illustration Developer — One File Defines Your Entire Environment

asd.yaml yaml
network:
  services:
    app:
      dial: "127.0.0.1:5173"
      tunnelPrefix: "demo"
      path: "/"
    api:
      dial: "127.0.0.1:8080"
      path: "/api"
    code:
      dial: "127.0.0.1:8443"
      path: "/code"

automation:
  dev:
    -  npm run dev
  test:
    -  npm run test
Project root configuration file
DYNAMIC PORTS

Software developer illustration Developer — No More Port Conflicts

ASD automatically allocates ports and generates secure passwords. Never fight with 'port already in use' again.

Dynamic Port & Secret Allocation

Used in tpl.env template files

1 Template (tpl.env)

ASD_CADDY_PORT_HTTP=getRandomPort()
MY_PORT=getRandomPort(min=X,max=Y)
ASD_BASIC_AUTH_PASSWORD=getRandomString(length=N)

2 Generated (.env)

ASD_CADDY_PORT_HTTP=???
MY_PORT=???
ASD_BASIC_AUTH_PASSWORD=???
Reference Tables

Template Macros (tpl.env)

Macro FunctionDescription
getRandomPort()Allocates a random available port from OS ephemeral range (30000-65000)
getRandomPort(min=X,max=Y)Allocates a random port within a specific range
getRandomString(length=N)Generates a cryptographically secure random string
getRandomString(length=N,charset=X)Random string with specific charset: alphanumeric, safe, hex

Manifest Template Variables (*.yaml)

SyntaxDescription
${{ env.VAR_NAME }}Reference an environment variable in manifest YAML
${{ macro.bcryptEnv(VAR) }}Bcrypt hash an environment variable (for basic auth)

How It Works

  1. 1 Define ports/secrets in tpl.env using macro functions
  2. 2 Run asd init to expand macros into .env
  3. 3 Reference generated values in manifests with ${{ env.VAR }}
  4. 4 Port registry prevents conflicts across all your services
SEE IT IN ACTION

Software developer illustration Developer — Watch the Workflow

See how to go from zero to deployed in under 5 minutes.

Developer Workflow Demo

See how to go from zero to deployed in under 5 minutes

4:32
Coming Soon
TEAM DASHBOARD

Software developer illustration Developer — See Your Team in Real-Time

Monitor who's working on what, manage access, and keep your team connected.

5
Team Members
3
Active Now
8
Active Tunnels
Team Hub
Alice - Ship features faster

Alice

Lead Dev

Working
3
Bob - Debug production safely

Bob

Backend

Working
2
Carol - Share UI instantly

Carol

Frontend

Away
1
Frank - Schema changes made easy

Frank

Data Eng

Working
2
Eve - Find bugs first

Eve

QA

Offline

Real-time Visibility

See who's working on what

Access Control

Role-based permissions

Environment Isolation

Separate dev environments

DEPLOYMENT OPTIONS

Software developer illustration Developer — Choose Your Infrastructure Model

Shared

Multi-tenant tunnel server. Fastest to start.

No infrastructure to manage
Instant setup
EU data residency
Shared bandwidth pool
Best for
Individual devs, small teams
We Recommend

Dedicated

Your own tunnel server. We manage it.

Isolated resources
Custom domain branding
SLA guarantees
Priority support
Best for
Growing teams, agencies

Self-Hosted

Run everything on your infrastructure.

Full control
Air-gapped deployments
Compliance friendly
No external dependencies
Best for
Enterprise, regulated industries
SECURITY MODEL

Software developer illustration Developer — Your Code Stays on Your Machine

Your Machine

Code, data, secrets stay here

Relay

Pass-through only

Collaborator

Sees only what you expose

What stays local

  • • Your source code
  • • Database contents
  • • Environment variables
  • • API keys and secrets
  • • All application data

What touches relay

  • • HTTP request headers (routing)
  • • TLS handshake (encrypted)
  • • Connection metadata only
  • • No logging of payloads
  • • Session-scoped tokens

Zero-backend dashboard: The ASD Dashboard is a static PWA. No server. State lives in URL fragments — we literally cannot see your service list.

Ready to Get Started?

Join thousands of developers who have simplified their development workflow with ASD.