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.
Loopback-only apps are forwarded automatically when you run botel ports expose <port> in the room. A port added from the room page needs the app bound to 0.0.0.0 (not only localhost), or the address answers "upstream unreachable".
Adding a port
Add it under Ports on the room's page: any port from 1024 to 65535 except the two built-in ones. A room can list up to 32 ports, counting the built-in two and any switched off. Remove a port to free its place.
Only me or Anyone with the link
New ports start as Only me.
- Only me. The address asks for a Botel sign-in, and only you get in.
- Anyone with the link (shown as Anyone). No sign-in: whoever has the address gets in. The console asks you to confirm first.
A private link your agent gives you carries its key: anyone you pass it to gets in without signing in. Treat it like a password.
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.
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.
In-room commands
You or your agent can manage ports from the terminal inside the room:
botel ports: lists exposed ports.botel ports expose <port>: exposes a running app and prints its link. Defaults to--private(only the room owner). Pass--publicto make it accessible to anyone with the link.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
Two ports are always open, for Telegram and the dashboard. They 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].