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

  1. Launch the Perceptron TUI: pct
  2. Navigate to the Domains page
  3. Press n to reserve a new Domain
  4. Enter a subdomain name (e.g. myappmyapp.pct.site), and press enter
  5. Open the Domain management modal by pressing enter with your desired domain selected, then press enter with “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)
  6. Use the arrow keys to change the port value to the port your application is running on, and press enter to confirm
  7. Once the port is assigned, reopen the domain management modal, highlight “Connect Tunnel”, and press enter to 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

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.