App URLs and domains
Web apps and static sites receive a dedicated URL that you can share after deployment. You can also use a domain your company manages.
The standard URL has this format. A slug is an identifier used in URLs and other settings.
https://<workspace-slug>--<app-slug>.keelson.runFor workspace slug acme and slug: dashboard in keelson.yaml, the URL is https://acme--dashboard.keelson.run. Keelson manages the HTTPS certificate.
Find the URL on the app page in the console, in your agent’s deployment report, or with keelson status.
Who can open the URL
Section titled “Who can open the URL”Knowing the URL is not enough. A visitor must be signed in to the workspace and have permission to view the app. If IP restrictions are configured, they must also connect from an allowed network.
Share the app URL directly with App Users. They cannot open the console, so they cannot look it up there. Copy it using one of the methods above and send it to them by chat or email.
Change the URL
Section titled “Change the URL”Owners and Admins can change an app’s URL after creation. Use Public URL in the app’s console settings.
The old URL stops working and does not redirect to the new one. Share the new URL with users and update bookmarks and external service settings. Before saving, select the checkbox confirming that you understand the impact.
- The old URL is reserved for 30 days so another app cannot take it. Requests to it receive
410 Goneduring that period. It is released automatically after 30 days. - Use the console or
keelson apps rename <new_slug>to change the URL. Thesluginkeelson.yamlidentifies the deployment target; changing it alone does not change the URL. Without an explicit--app, the next deployment looks for an app matching the newslugand can no longer update the original app. If you also change the app’s identifier in the console, updatekeelson.yamlto match before deploying again.
You can also change the workspace slug in settings, but existing app URLs stay the same. To use the new workspace slug in those URLs, update each app’s public URL individually.
Custom domains
Section titled “Custom domains”The Team plan lets you use a company subdomain such as app.example.com. You need permission to change the domain’s DNS settings. If a colleague manages your domain, send them the values Keelson provides.
- Available on Team: up to 10 domains per workspace and one domain per app.
- Subdomains only. Root domains such as
example.comand email domains are not supported. To send email from your domain, see Send from your own domain. - Authentication, permissions, and IP restrictions also apply through custom domains.
Follow these steps:
- An Owner or Admin registers the domain in the app settings or with
keelson domains add <hostname> [--app <slug>]. Keelson shows the CNAME target to configure. - At your DNS provider, point the subdomain’s CNAME to that target. In production, the target is
custom-origin.keelson.run. Use the value shown in the console or CLI. - Check that the domain is active in the console or with
keelson domains verify <hostname> [--app <slug>]. Activation may take a few minutes.
Keelson automatically verifies ownership, issues the HTTPS certificate, and configures serving.
Read the app URL in your code
Section titled “Read the app URL in your code”Use this when your app needs to create links to itself, such as links in emails. You can ask your agent to configure it.
Keelson supplies the standard app URL in KEELSON_APP_URL. The request’s Host header contains an internal hostname, so use KEELSON_APP_URL for absolute URLs in emails, redirects, or og:url.
import os
base_url = os.environ["KEELSON_APP_URL"] # e.g. https://acme--dashboard.keelson.runThis variable is not set during local development. Use KEELSON_MODE to detect whether the app is running on Keelson.
Changing the public URL does not immediately update the environment of a running app. Redeploy apps that use KEELSON_APP_URL, then check that email links and redirects use the new URL.
Setting a custom domain does not change KEELSON_APP_URL: it still contains the standard URL. To use the custom domain in email links and similar places, ask your agent to store it as an app configuration value. See Environment variables and secrets.