Boteldocs

Ports

Give a program in your room a web address, private or public.

A port gives a program already listening in your room a web address: a site, a tool, or an address another service can call. It doesn't start a server.

Adding a port

Add it under Ports on the room's page: any port from 1024 to 65535 except its built-in ports. A room can list up to 32 ports, counting built-in ports and any switched off. Remove a port to free its place.

If you add a port from the room page, the service must listen on 0.0.0.0, not just localhost. Otherwise, its address answers "upstream unreachable". Running botel ports expose <port> inside the room also works with services listening only on localhost: Botel forwards them automatically.

New ports start as Only me.

  • Only me. Normally, only your Botel account can open it. A private link from your agent carries a key; anyone with that link can open it without signing in. Treat it like a password.
  • Anyone with the link (shown as Anyone). No sign-in: whoever has the address gets in. The console asks you to confirm first.

Warning: Close the ports you don't use. Any visit to an open port wakes your room and spends your balance, and a public one can be woken by anyone with its address.

Off and removed

A switched-off port stays listed with its access setting. Only you can switch a port off or on; your agent can't open one you've switched off. A removed port's address stops working; you can add it again later.

When botel ports expose can record a service's command, Botel uses it to restart the service if it stops listening. Repeated failures stop further attempts until you expose it again. Closing the port stops forwarding and restart attempts; the service itself keeps running.

What your agent can open

Choose under "Your agent can open" on the Ports card:

  • Nothing. Only you open and close ports.
  • Private links (the default). Your agent can open Only me ports.
  • Any link. Your agent can open public ports too.

With either of the last two it can also close any switched-on port. It opens Only me links unless you ask it for a public one.

Names

Every open port gets a short address, such as blog-98u9.door.st, to share. Botel picks a random name when you open the port; you can rename it.

Names are 3-30 lowercase letters, digits and hyphens, and must start with a letter. Hyphens go between words, and each word needs a letter (shop-v2, not shop-2). Sign-in words, brand names and offensive names are refused. They're yours alone: no other room of yours can reuse one while you're using it elsewhere, but two different accounts can both use blog. Renaming frees the old name immediately. There's no grace period, and no redirect from the old address to the new one.

Each port also keeps an older address that still works. Always share the named one.

In-room commands

You or your agent can manage ports from the terminal inside the room:

  • botel ports: lists exposed ports, with their names and links.
  • botel ports expose <port>: exposes a running service and prints a link. Use the named address when sharing (see Names). Defaults to --private (only the room owner). Pass --public to make it accessible to anyone with the link. Add --name <name> to pick a name yourself.
  • botel ports rename <port> <name>: sets or changes a port's name.
  • botel ports close <port>: closes an exposed port and stops forwarding.
  • botel ports status <operation_id>: checks the outcome of a pending operation.

All commands accept --json for machine-readable output. Expose and close also accept --request-id <id> to retry safely after an unknown outcome.

Built-in ports

Hermes and OpenClaw have two built-in ports, for Telegram and the app. The DeepSeek Harness has one, for its app. Built-in ports are always open, aren't on the Ports card, can't be closed, and need a key or a sign-in.

Outbound traffic

A room has normal outbound internet access.

  • Programs in the room can connect to any service on the internet (APIs, git remotes, package registries).
  • Outbound traffic does not require an exposed port.
  • Outbound connections are made directly by the room; Botel does not proxy or relay them.

Questions? Write to [email protected].

On this page