Developer — One File Defines Your Entire Environment
asd.yamlyaml
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 devtest:-npm run test
Project root configuration file
DYNAMIC PORTS
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 Function
Description
Example Output
getRandomPort()
Allocates a random available port from OS ephemeral range (30000-65000)
47832
getRandomPort(min=X,max=Y)
Allocates a random port within a specific range
8472
getRandomString(length=N)
Generates a cryptographically secure random string
k9Xp2mLq8vNw3rTz6yBc1dFg4hJa7sMn
getRandomString(length=N,charset=X)
Random string with specific charset: alphanumeric, safe, hex
a8f2c3d4e5b6a7f8
Manifest Template Variables (*.yaml)
Syntax
Description
Example
${{ env.VAR_NAME }}
Reference an environment variable in manifest YAML
port: "${{ env.ASD_CADDY_PORT_HTTP }}"
${{ macro.bcryptEnv(VAR) }}
Bcrypt hash an environment variable (for basic auth)
1Define ports/secrets in tpl.env using macro functions
2Run asd init to expand macros into .env
3Reference generated values in manifests with ${{ env.VAR }}
4Port registry prevents conflicts across all your services
SEE IT IN ACTION
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
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
Lead Dev
Working
3
Bob
Backend
Working
2
Carol
Frontend
Away
1
Frank
Data Eng
Working
2
Eve
QA
Offline
Real-time Visibility
See who's working on what
Access Control
Role-based permissions
Environment Isolation
Separate dev environments
DEPLOYMENT OPTIONS
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
Why we recommend Dedicated:
Improved auditing, control and isolation. Freedom in usage — use 100% of server capacity. Only upgrade when capacity no longer fits your needs. Pay per developer, no tunnel-specific limits.
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
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.