EP

Limits

Elastic Projects is an alpha experiment on AT Protocol Spaces. Treat every limit below as intentional until the docs say otherwise.

Alpha scope

What is not deployed

Expectation Reality today
Public elasticprojects host Not live from this repo. You run locally or link your own Vercel project
Org PDS “host here” Updates SQLite only. No PDS is provisioned on Elastic Projects infrastructure
Git remote on Elastic Projects Git ships the app. The labs/elastic tree is a separate product workspace
Vercel pull from Spaces Build still comes from git. No ep pull in CI with auth yet
Durable cloud replica DATABASE_URL / Neon is documented but not wired

Storage and files

Limit Value
Text document size 100 KB per file (lib/repo/replica.ts)
Path depth 12 segments max
Path length 180 characters max
Allowed path characters Letters, numbers, dots, dashes, brackets, slashes
Text kinds in UI and ep md, json, sql, txt, csv, ts, tsx, js, jsx, mjs, cjs, css, html, svg, yaml, yml, toml, sh
Binary kinds png, mp4, bin — placeholder hashes only; no blob upload to PDS yet
Local database Single SQLite file (DATABASE_PATH). WAL mode on disk

Sync and version control

Behavior Detail
Pull Merges published heads into your checkout. Skips dirty paths (no clobber)
Push Sends only dirty files as a pack, not a full tree clone
Incremental pull listRepoOps and cursor-based fetch are not implemented. Live pull scans listRecords
remoteCursor table Stored but not used for incremental ops yet
Commit model Local commit chain over dirty packs. Not Git packfiles or ATProto commit objects
Binary push/pull Not supported end-to-end
Delete propagation Removing a file from disk with ep does not delete remote paths

Live Spaces

Limit Detail
Space authority on create Signed-in person DID, not organization ODS
Network on demo/guest No XRPC. SQLite only
Credential errors Usually means you are not on the member list
Full record scan Every pull may walk all file records per writer repo

Organizations (ODS)

Limit Detail
Preview org DIDs did:plc:hearthorg2… and *.elasticprojects.test are local fabrications, not PLC-registered production identities
Acquire / nest Parent pointer in SQLite. Not a file copy between orgs
Readiness checklist Six checks in UI; several are manual or preview-only
Local pack You operate compute and storage, or set HOSTED_ODS_PROVIDER=fly for one-click machines

Web UI

Limit Detail
Guest mode Guest DIDs (did:plc:guest…) are local. Good for share-link testing
Invite flow Demo invites use fixed test accounts; live invites need Spaces accounts
File editor Text only. Binary files show hash metadata
Cloud wallpaper Requires WebGPU. Falls back to CSS gradient without it

ep CLI

Limit Detail
Modes Local demo replica only
OAuth / live Not wired
Default viewer Demo user unless EP_VIEWER_DID is set
Import scope Walks --dir for text files. Does not delete removed paths from the replica
npm scripts Pass CLI flags after --: npm run ep -- pull labs/elastic --dir ./tree

Vercel and production hosting

Limit Detail
Session persistence Ephemeral without Neon
SQLite on serverless Not viable. Functions do not share a durable disk
OAuth Requires stable UI_PUBLIC_URL matching deployment origin
Staging No separate staging project assumed. Use Vercel preview URLs per branch

Security notes (alpha)

See security.md for the alpha audit and deploy checklist.

What we are building toward

Until those land, use local preview + ep for dogfooding version control, and git for shipping the host.