One source. Every screen.
Atlas is a headless CMS. Define the shape of your content once, then read it from anywhere you build.

Your content, finished.
Every word and image on this page came out of a content type somebody set up in a few minutes.

Built once. Fits everywhere.
The same content, laid out for a desk, a lap and a pocket. You write it one time.






Phone
Tablet
Desktop
Five sites. One Atlas.
All of them are live right now, and all of them read from the same instance.

Kaze no YadoVisit
Rooms, dining and seasonal offers for a small inn in Hakone.

Yamato BussanVisit
A trading company in Japanese and English, with a newsroom and careers.

Kyoto Cultural MuseumVisit
Exhibitions, artists and events across five languages.

Forma StudioVisit
A software studio, built on case studies and services.

Dev InsightsVisit
Articles, tutorials and snippets, rendered on the server with Astro.
What you get.
Eight things. The three that can be shown are shown.
Content types
Name the fields once and every entry follows them.
Entries
Drafts, scheduling and publishing, with a record of who changed what.
Media library
Upload once, reuse anywhere, served straight from object storage.
Pages
Compose a page out of blocks without redeploying the frontend.
Public API
Read-only, scoped to a key, cached and built to sit in front of real traffic.
TypeScript SDK
Point the CLI at your workspace and it writes the interfaces for you, so a typo in a field name fails the build instead of the page.
Agent access
Install the plugin and a coding agent works in your workspace the way a teammate would: defining types, writing and publishing entries, uploading media, composing pages, and previewing a field change before it runs.
Webhooks
Tell your build or your cache the moment something changes.
Content types
The field editor, where a type is named once.

Entries
The same type from the other side, with status and edit times.

TypeScript SDK
What the CLI writes from a type like that one.
npx @latellu/atlas-cli generate --api-key=atlas_live_xxx --output=./srcsrc/atlas.types.ts// Generated by @latellu/atlas-cliexport type Locale = "en" | "ja"; /** Article (content type: "article") */export interface Article { title: string; category?: "News" | "Event"; published_at?: string; cover_image?: string;} /** Maps each content-type slug to its entry interface. */export interface AtlasContentTypes { "article": Article;}
One entry. Five languages.
Translations live on the entry itself, not in a second copy of your site. Ask for Japanese and you get Japanese, with a fallback for anything nobody has translated yet.





箱根の風に吹かれて、心洗われる休日を。
Blown by the Hakone wind, a holiday that cleanses the soul.
Tertiup angin Hakone, liburan yang membersihkan jiwa.
Porté par le vent de Hakone, des vacances qui purifient l'âme.
Vom Wind Hakones umweht, ein Urlaub, der die Seele reinigt.
Start with one content type.
Open the dashboard and make your first one. It takes a few minutes.