One Link to Send: palmer-ai.didi.sh, the Client Hub with a Real Domain
You can't send a client a raw railway.app URL and expect trust — so now there's one branded, bookmarkable page per client: open your CRM, connect your AI, and a didi-account teaser for what's coming.
One Link to Send: palmer-ai.didi.sh, the Client Hub with a Real Domain
Why Care?
The first thing a client stakeholder ever sees of their stack is a link in
a message. If that link reads twenty-server-production-4b1e.up.railway.app,
the product feels rented before it's even opened. Phase 5 got pulled
forward for exactly this reason: https://palmer-ai.didi.sh now lands
on a branded page that says, in order — here's your CRM, here's how to
connect Claude to it in two minutes, ChatGPT is coming, and one didi
account will hold all of this soon.
What's New?
A tiny Astro hub site (
hub/— pure Astro + CSS + one vanilla-JS copy button, per the tech hierarchy): CRM button, the four-step Claude connector walkthrough with copy-paste URL, the "let Claude walk you through it" agent-doc fallback, an honest ChatGPT stub, and the didi-account coming-soon card. One codebase; aCLIENTenv picks the client per deployment.Deployed inside each client's Railway project (D1 discipline), both verified live; palmer-ai additionally carries the custom domain
palmer-ai.didi.shwith its own cert.Verified on mobile — the page and the path to Twenty work from a phone, which is where half the real usage lives.
A new agent skill from the trenches:
context-v/agent-skills/custom-domain-cutover/— the full DNS-cutover playbook (Vercel-DNS zone, wildcard override, the--resolvetruth probe, and the browser-cache theater that makes live domains look dead).
The one gotcha worth retelling
The cutover was server-complete minutes after the DNS records landed — and still showed a 404 locally for a while longer. Hard-refresh doesn't fix that: the browser caches DNS itself and keeps sockets open to the old server. Full browser quit (or a phone on cellular) is the honest test. It's in the skill now, so the next cutover costs zero confusion.
What's Next
Twenty member invites for the first palmer-ai stakeholders, then the real acceptance test: a terminal-poor human, one link, "help me set this up." The hub content stays deliberately portable into the lossless.group site (its eventual pretty home), per the spec's disposable-stopgap intent.
