Columbia Pages
A small self-hosted service that lets agents publish polished HTML reports and return a shareable public URL.
Overview
Columbia Pages combines a Go server, SQLite, a command-line client, an embedded report theme, and an agent skill. Agents send body-only HTML through an authenticated API; the service stores it, applies the house theme, and serves it at an unguessable public URL.
Reports, comparisons, tables, analyses, and status summaries become durable pages instead of oversized chat messages.
Feature set
| Area | What it provides |
|---|---|
| Publishing | Themed body HTML or complete raw documents, plus create, list, get, update, delete, slugs, and optional expiry. |
| Agent workflow | A repository skill, stdin-first CLI commands, structured JSON reads, and an agent-oriented setup guide. |
| Presentation | Responsive typography, navigation, stats, tables, callouts, facts, code blocks, light/dark mode, and print support. |
| Authentication | Browser-approved device login with read or read/write scopes, finite token lifetimes, revocation, and logout. |
| Administration | Owner login, device review, token inventory, and token revocation on a dedicated control origin. |
| Operations | Railway-first self-hosting, SQLite persistence, health checks, expiry sweeps, backups guidance, and graceful shutdown. |
How it works
An agent publishes through the private control plane. Readers only touch the public content origin.
Repository signals
Measured from the current repository checkout.
| Signal | Count |
|---|---|
| Go packages | 5 |
| CLI commands | 8 |
| Test functions | 36 |
Security model
Published HTML is active content, so Columbia Pages separates authoring authority from public viewing at the origin boundary.
- Device grants expire after 10 minutes and are single-use.
- Device tokens default to 90 days and can be scoped, listed, and revoked.
- The database stores hashes rather than raw device and API secrets.
- Admin forms use host-only cookies, CSRF protection, origin checks, and rate limits.