All posts
#Platform#Platform Design#Agent-First

Shorter URLs for every app and page.

24 September 2026·4 min read·Rock8Cloud
Shorter URLs for every app and page. Old Rock8Cloud URLs struck through above shop.rock8cloud.app and q3-report.rock8cloud.page

Shorter, cleaner URLs were one of the most frequent requests we heard from you. Nobody wants to paste a link with an organization slug and a random suffix into a client email, so we changed it. Every new app on Rock8Cloud now lives at name.rock8cloud.app, and every page your agents publish lives at name.rock8cloud.page. The organization slug is gone from both, and nothing that already works breaks.

What changed#

BeforeNow
Appshop-acme-x12y3.apps.rock8.cloudshop.rock8cloud.app
Pull request previewpr-42-shop-acme-x12y3.apps.rock8.cloudpr-42--shop.rock8cloud.app
Pageacme-x12y3.artifacts.rock8.cloud/q3-report/q3-report.rock8cloud.page
Custom domainunchangedunchanged

The old addresses carried two things nobody asked for: the organization slug, with a random suffix, and a shared host with a path for pages. The new ones carry the name you picked and nothing else.

Apps: one name, no organization in it#

A new app gets https://<name>.rock8cloud.app. You pick the name when you create the app, or take the one derived from the service name. Names are first come, first served across the whole platform, so the good ones go to whoever claims them first. They use lowercase letters, digits and single dashes.

shop-acme-x12y3.apps.rock8.cloud becomes shop.rock8cloud.app

Pull request previews follow the same shape with a prefix, pr-42--shop.rock8cloud.app. A double dash can never appear in a name you claim, so a preview address can never collide with somebody’s app.

Custom domains work exactly as before. A verified domain keeps serving next to the platform address.

Existing apps keep their address#

Apps created before this change keep <service>-<org>.apps.rock8.cloud. We did not move anything for you, because a moved address breaks every link, bookmark and OAuth callback pointing at it.

When you want the short name, open the app’s Build settings and pick a name. Two things to know before you save:

  • The old address stops working right away. There is no redirect.
  • Environment variables that contain the old URL need updating by hand. The usual ones are BETTER_AUTH_URL, CORS_ORIGIN, PUBLIC_URL and OAuth callback URLs at your identity provider.

Pages: an address of their own#

Pages (formerly Artifacts), the static sites your agents publish, used to share one organization host with a path per page, acme-x12y3.artifacts.rock8.cloud/q3-report/. Now each page gets its own address, q3-report.rock8cloud.page, served at the root.

A page moves from a path to its own origin

The name comes from the page slug on the first publish, or from the hostname your agent passes to publish_page. You can rename a page in its Settings, and the old name is free for anyone to claim the moment you do.

Serving each page at the root of its own origin matters more than it looks:

  • Relative links, fetch('/data.json') and single-page app routing just work, because the page is not buried under a path.
  • Every page is isolated from every other page. One page cannot read another page’s localStorage or call into it, even inside the same organization.
  • Pages never share an origin with your apps or the dashboard, so a published page cannot touch your app’s cookies.

Everything else about Pages, from publishing to the dashboard, is on the Pages platform page.

Why two domains#

An app is a full application from your Git repository, with business logic, users and data behind it. A page is a simple static site that an agent publishes in one step. Giving pages their own domain keeps them safely apart from your apps.

It also means the two have separate name pools. shop.rock8cloud.app and shop.rock8cloud.page can both exist, owned by different teams, without either blocking the other.

shop.rock8cloud.app and shop.rock8cloud.page can both exist

What you need to do#

If you haveYou need to
A new appNothing. It gets name.rock8cloud.app from the start.
An existing appNothing, unless you want the short name. Then pick one in Build settings and update env vars that hold the old URL.
A new pageNothing. It gets name.rock8cloud.page on its first publish.
A custom domainNothing. It keeps serving as before.

Frequently asked questions

What URL does a new app get on Rock8Cloud?
A new app gets https://<name>.rock8cloud.app, for example https://shop.rock8cloud.app. The organization slug is no longer part of the address. Names are first come, first served across the platform and use lowercase letters, digits and single dashes.
Do my existing app URLs stop working?
No. Apps created before the change keep their https://<service>-<org>.apps.rock8.cloud address untouched. Nothing moves unless you choose to rename the app in its Build settings.
What happens when I move an existing app to a new name?
The app starts answering on https://<name>.rock8cloud.app and the old address stops working right away. Update any environment variables that contain the old URL, such as BETTER_AUTH_URL, CORS_ORIGIN, PUBLIC_URL and OAuth callback URLs, then redeploy.
What URL does a published page get?
Every page gets its own address, https://<name>.rock8cloud.page, served at the root of its own origin. The name comes from the page slug on first publish and you can rename it in the page Settings at any time.
Can an app and a page have the same name?
Yes. Apps and pages have separate name pools on separate domains, so shop.rock8cloud.app and shop.rock8cloud.page can exist at the same time, even owned by different teams.
Why are pages on a different domain from apps?
Pages are HTML and JavaScript published by users and agents. Keeping them on their own domain, one origin per page, means a page can never read another page's storage, reach your app's cookies or touch the dashboard.

Keep reading

Ship today

Your software factoryis already running.

Deploy your first app in 60 seconds. Bring your repo, bring your agents. Every station you just read is live.

30 days free. No credit card required to start.