App URL
After a deployment succeeds, Keelson automatically assigns the app a standard public URL. This page explains how that URL is formed, where to find it, and how access to it is protected.
URL format
Section titled “URL format”The standard app URL has this form:
https://{workspace-slug}--{app-slug}.keelson.runFor example, an app with the slug dashboard in the acme workspace receives:
https://acme--dashboard.keelson.runThe app slug comes from the slug field in keelson.yaml. The workspace slug is managed in the workspace settings. Together they make the hostname unique across Keelson.
Where to find the URL
Section titled “Where to find the URL”You can find the app URL in these places:
- Keelson console — The app details page displays the URL.
- Deployment result — The CLI reports the URL when deployment completes, and an AI agent can pass it back to you.
You can copy the URL and share it with team members who should have access.
Share the app URL separately with App Users. They cannot open the console, so copy the URL from one of the places above and send it to them — otherwise they have no way to learn it.
Use the URL inside your app
Section titled “Use the URL inside your app”Keelson provides the app’s own public origin to the running process as KEELSON_APP_URL. Use it when the app must construct an absolute callback or redirect URL.
Do not derive the public origin from an internal service hostname. Read KEELSON_APP_URL, or use a relative URL when the browser already knows the current origin.
Security and TLS
Section titled “Security and TLS”Access to an app URL is restricted to authorized users by default. All connections use HTTPS, and Keelson manages the TLS certificate; you do not need to request or renew one.
IP restrictions can add a network-level check before a request reaches the app. Authentication and IP restrictions remain in effect when users follow the standard URL.
For details, see:
URL changes
Section titled “URL changes”The standard hostname contains both the workspace slug and the app slug. Changing either slug can therefore change the URL. Treat the URL as configuration rather than embedding it throughout your source code.
When another system needs a callback URL, copy the current value from the console and update that system if the app URL changes.
Custom domains
Section titled “Custom domains”The Team plan lets you publish an app at your own subdomain, such as app.example.com. A workspace can register up to 10 custom domains, with one custom domain per app. Apex domains such as example.com and email domains are not supported.
Configure a custom domain in this order:
- As an Owner or Admin, register the domain in the app settings in the console, or run
keelson domains add <hostname> [--app <slug>]. Keelson then displays the CNAME target to use. - At your DNS provider, point the registered subdomain’s CNAME to the displayed target. The production target is
custom-origin.keelson.run; always use the value shown in the console or CLI. - Check the status in the console, or run
keelson domains verify <hostname> [--app <slug>], to confirm that the domain is active. Activation can take a few minutes.
Keelson automatically verifies domain ownership, issues the HTTPS certificate, and configures traffic delivery. Authentication and IP restrictions also apply through the custom domain. KEELSON_APP_URL continues to contain the standard keelson.run URL.
Read next
Section titled “Read next”- Deploy an App — Follow the complete deployment flow.
- Custom domains — Learn how to publish an app at your own domain.
- Auth and Login — Understand the access-control flow.