Documentation Index
Fetch the complete documentation index at: https://docs.opencomputer.dev/llms.txt
Use this file to discover all available pages before exploring further.
A preview URL is a public HTTPS endpoint that routes traffic to a port inside your sandbox. Start a web server and access it immediately via the sandbox’s domain.
Quick Access
Every sandbox has a built-in domain property that gives you instant access to port 80 without creating a preview URL explicitly:
const sandbox = await Sandbox.create();
await sandbox.exec.run("python3 -m http.server 80 &");
console.log(sandbox.domain);
// → sb-abc123-p80.workers.opencomputer.dev
// For other ports:
console.log(sandbox.getPreviewDomain(3000));
// → sb-abc123-p3000.workers.opencomputer.dev
The domain and getPreviewDomain(port) properties construct the preview hostname directly — no API call needed. Traffic is routed through the control plane proxy to the correct sandbox.
Explicit Preview URLs
For tracking, custom domains, or auth configuration, use the preview URL API:
import { Sandbox } from "@opencomputer/sdk";
const sandbox = await Sandbox.create();
await sandbox.exec.run("npx create-next-app@latest /app --yes", { timeout: 120 });
sandbox.exec.start("npm run dev -- --port 3000", { cwd: "/app" });
const preview = await sandbox.createPreviewURL({ port: 3000 });
console.log(preview.hostname); // sb-abc123-p3000.workers.opencomputer.dev
API Reference
Create Preview URL
const preview = await sandbox.createPreviewURL({
port: 3000,
domain: "preview.myapp.com", // optional custom domain
});
| Parameter | Type | Required | Description |
|---|
port | number | Yes | Container port to expose (1–65535) |
domain | string | No | Custom domain |
authConfig | object | No | Authentication configuration |
List Preview URLs
const previews = await sandbox.listPreviewURLs();
for (const p of previews) {
console.log(`Port ${p.port}: https://${p.hostname}`);
}
Delete Preview URL
await sandbox.deletePreviewURL(3000);
Custom Domains
Pass a domain when creating a preview URL. SSL is provisioned automatically via Cloudflare. Custom domain verification is configured at the organization level through the dashboard — not through the SDK.
Persistence
Preview URLs persist across hibernation and wake cycles. If you hibernate a sandbox and wake it later, the preview URLs are still active.
Multiple Ports
Expose multiple services from the same sandbox:
// Frontend
await sandbox.createPreviewURL({ port: 3000 });
// API server
await sandbox.createPreviewURL({ port: 8080 });
// Database admin
await sandbox.createPreviewURL({ port: 5432 });