Perceptron Domains
Perceptron Domains expose web servers or applications running on your
local machine to the global internet with a persistent subdomain on
*.pct.site via a HTTP tunnel. This allows anyone anywhere
with an internet connection to access your web application at a URL like
https://myapp.pct.site. The power of Perceptron Domains is
most observable when AI Agents build web applications and serve them to
a LIVE web URL in seconds, allowing you to access them from anywhere on
any device. Agents can reserve and deploy to a Perceptron Domain without
any human interaction or intervention. They simply call the Perceptron
API directly.
Quick Start
- Launch the Perceptron TUI:
pct - Navigate to the Domains page
- Press
nto reserve a new Domain - Enter a subdomain name (e.g.
myapp→myapp.pct.site), and pressenter - Open the Domain management modal by pressing
enterwith your desired domain selected, then pressenterwith “Assign Port” selected to assign the domain tunnel to the local port your web server is running on (you can choose between port 10000 and 10099) - Use the arrow keys to change the port value to the port your
application is running on, and press
enterto confirm - Once the port is assigned, reopen the domain management modal,
highlight “Connect Tunnel”, and press
enterto establish a tunnel between your local machine and the Perceptron Cloud
Your web application is now LIVE at
https://myapp.pct.site, accessible from any web browser or
HTTP client from any device with an internet connection.
You can use Perceptron Domains to host personal websites, Agent-built dashboards and kanban boards, and commercial web applications.
The web application is hosted directly on your local machine running the Domain tunnel, and requires it to be powered on and connected to the internet for as long as you want the web app to stay online. This works in principle like similar services such as ngrok or tailscale.
Note: always gate sensitive information or data behind a login screen or proper backend authentication.
API Reference
| Method | Path | Description |
|---|---|---|
GET |
/api/domains |
List all reserved domains |
POST |
/api/domains/reserve |
Reserve a subdomain |
POST |
/api/domains/{id}/assign |
Assign a local port |
POST |
/api/domains/{id}/unassign |
Remove port assignment |
POST |
/api/domains/{id}/tunnel-token |
Get a tunnel connection token |
POST |
/api/domains/{id}/connect |
Connect the tunnel |
POST |
/api/domains/{id}/disconnect |
Disconnect the tunnel |
GET |
/api/domains/tunnels/status |
List active tunnel connections |
POST |
/api/domains/release |
Release a domain |
API Authentication
Include your API key in the Authorization header:
Authorization: Bearer PERCEPTRON_API_KEY
Reservation
POST /api/domains/reserve
curl -X POST https://perceptron.cloud/api/domains/reserve \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"subdomain": "myapp"}'{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"subdomain": "myapp",
"full_domain": "myapp.pct.site",
"hourly_cost_cents": 10,
"prepaid_until": 1740000000
}Listing
GET /api/domains
curl https://perceptron.cloud/api/domains \
-H "Authorization: Bearer YOUR_API_KEY"{
"domains": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"subdomain": "myapp",
"full_domain": "myapp.pct.site",
"service_id": "domain-abc12345",
"created_at": 1740000000,
"local_port": 8080,
"tunnel_active": true
}
],
"base_domain": "pct.site",
"hourly_cost_cents": 10,
"port_range": [10000, 10099]
}Port Assignment
POST /api/domains/{id}/assign
curl -X POST https://perceptron.cloud/api/domains/{id}/assign \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"port": 8080}'{
"status": "assigned",
"port": 8080
}Tunnel Connection
POST /api/domains/{id}/connect
curl -X POST https://perceptron.cloud/api/domains/{id}/connect \
-H "Authorization: Bearer YOUR_API_KEY"{
"status": "connected",
"subdomain": "myapp",
"local_port": 8080
}Disconnection
POST /api/domains/{id}/disconnect
curl -X POST https://perceptron.cloud/api/domains/{id}/disconnect \
-H "Authorization: Bearer YOUR_API_KEY"{
"status": "disconnected"
}Release
POST /api/domains/release
curl -X POST https://perceptron.cloud/api/domains/release \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"domain_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"}'{
"status": "released"
}Subdomain Reservation Rules
- 2–32 characters
- Lowercase letters, digits, and hyphens only
- Cannot start or end with a hyphen
- First come, first served
- Billed hourly, cancel anytime
Reserved subdomains: www, api,
mail, ftp, admin,
tunnel, ns1, ns2 and common
internal service names cannot be reserved.
Pricing
Each domain is priced at a fixed rate like
$0.02/hour, billed hourly from your credits balance.
You can check the latest price on the Domains page in
the TUI, or call the /api/domains/pricing endpoint.