Docmost Out, Outline In — an API License Gate and a Railway Gotcha
Docmost lasted four hours in the palmer-ai stack: gorgeous product, API keys locked behind Enterprise. We swapped in Outline the same evening — and found a Railway deploy trap worth its own delta entry.
Why Care?
Every Lossless stack sells the same promise: your tools, your data, and an agent that can reach all of it through APIs. That third clause is a hard requirement, and today it disqualified a tool we'd already deployed. Docmost is arguably the most polished self-hosted Notion alternative — and its self-hosted edition greys out API keys unless you buy an Enterprise license. Michael hit the gate in the settings screen within hours of the deploy. No API, no agent, no deal.
The evaluation cost us almost nothing — the per-client deploy discipline meant standing Docmost up took one pass, and tearing it down took minutes. Cheap experiments are the point of the pattern.
What's New?
Docmost retired from palmer-ai (all three services + volumes deleted, secrets purged, runbook marked retired). README's Knowledge Management section now carries the post-mortem so we don't re-evaluate it later.
Outline 1.9.2 deployed in its place:
https://outline-production-3d8d.up.railway.app— full REST API and API keys free in self-hosting, markdown-native, Notion-adjacent UX. First-run "Create workspace" screen verified by browser-drive; workspace creation (the gate) is the operator's.New runbook
docs/outline/setup.md; palmer-ai folder of record and secretspec updated.
Under the Hood — the Railway redeploy trap
Docmost's exit was hastened by a debugging session that produced the most
useful finding of the day: railway redeploy re-runs the PREVIOUS
deployment's spec. Start-command and config changes made after a deploy
are silently dropped by redeploys — only a NEW deployment (cheapest trigger:
set a throwaway CONFIG_EPOCH variable without skipping deploys) picks
them up. Variables, by contrast, ARE re-resolved on redeploy, which is why
our Twenty deploys seemed to confirm redeploy worked.
We proved it with an in-network diagnostic service that interrogated the live redis: bone-stock config, 204 of 204 background saves failed, every write rejected — while the service config page showed the "applied" start command the process never received. The finding is now stamped into both the Twenty and Outline runbooks.
What's Next
Operator gate: create the palmer-ai workspace on the Outline URL.
Wire an auth provider for post-bootstrap logins (Google OAuth or SMTP magic links — Plunk is the natural SMTP answer once deployed).
Mint the API key and stand up MCP access — the reason Outline won.
