PlainJoin waitlist

Launching June 2026

The developer platform that finally feels whole.

Code, issues, docs, pipelines, and packages under one roof — fast, reliable, and quietly run by AI agents. Stop stitching tools together.

 

plain·Pull requestsMerge

#482 · opened by Jamie Davenport · 6 hours ago

Stream replica writes through a regional cursor

feat/edge-syncmain
src/sync/replica.ts+2 −1
40·async function pull(region, since) {
41· await replica.connect(region)
42return replica.pull({ since })
43+const cursor = await replica.cursor(since)
44+return replica.stream(cursor, { mirror: true })
45·}
Atlasagenton line 43

replica.cursor(since) returns null right after a region fails over — guard it before the stream call or the mirror write throws.

Conversation2 replies
Atlasagent3h

Read the whole diff. The cursor swap keeps the mirror in a single round trip — nice. I left one blocking comment on the failover path and opened PLN-491 to backfill the reconnect test before this merges.

Leave a comment. Markdown works.

Comment

// The platform

Six surfaces, one source of truth.

Each one replaces a tool you already run. Together they share a graph, a search index, and a permission model — so your work actually connects.

01replaces GitHub

Git

A Git host that keeps up with you. Repositories are mirrored to every region and synced in milliseconds, so clone, push, and fetch feel local no matter where your team sits.

  • Globally mirrored, conflict-free replication
  • Stacked diffs and inline code review
  • Signed commits and protected branches by default
plain · git
Open

Edge-region sync for stacked diffs

feat/edge-syncmain#482
src/sync/replica.ts+142 −38
41 await replica.connect(region)
42- return replica.pull({ since })
43+ const cursor = await replica.cursor(since)
44+ return replica.stream(cursor, { mirror: true })
45}
JDMK2 approvals
signed · 7 regions

02replaces Linear

Issues

Planning that never makes you wait. Every keystroke lands instantly and works offline, then syncs the moment you reconnect — issues, cycles, and roadmaps that feel like a local app.

  • Sub-50ms, fully keyboard-driven tracking
  • Offline-first with seamless reconnect sync
  • Issues auto-linked to commits and PRs
plain · issues

Cycle 24

May 6 – May 20

18 / 27
  • PLN-482

    Edge-region sync for stacked diffs

    JD
  • PLN-486

    Warm runner pool autoscaling

    MK
  • PLN-491

    Backlink index for docs blocks

    AR
  • PLN-494

    Signed provenance on artifacts

    JD

Sub-50ms · pressCto create

03replaces Notion

Docs

Documentation that lives next to the code it describes. Specs, runbooks, and decisions are versioned with every release and one keystroke away from the work they explain.

  • Block editor with slash commands
  • Versioned alongside every release
  • Backlinked to issues, code, and builds
plain · docs
specs / edge-syncv2.4

Edge Sync — Spec

Goals

Replicas resolve conflict-free and stream from the nearest region. A cursor lets clients resume mid-flight without a full pull.

Decision

Stream over cursor; mirror writes to all regions.

filter…
  • Heading##
  • Code block```
  • Callout
backlinksPLN-482replica.ts

04replaces GitHub Actions

CI

Continuous integration with no cold start. Pipelines begin the instant you push, runners are always warm, and caches are shared across your whole organisation.

  • Zero cold-start, always-warm runners
  • Org-wide shared build cache
  • Pipelines defined as composable code
plain · ci
a1b2c3d· feat/edge-sync
47s total
  • install3s
  • build18s
  • test21s
  • deploy5s
cache hit · 1.2 GB restoredno cold start

05replaces npm

Artifacts

A registry for everything you ship. Packages and build outputs are content-addressed, edge-cached worldwide, and carry signed provenance back to the commit that produced them.

  • Content-addressed, deduplicated storage
  • Edge-cached installs worldwide
  • Signed provenance on every artifact
plain · artifacts

@plain/edge-sync

published 2 min ago

v2.4.1
$plain add @plain/edge-sync⌘C
  • Content hashsha256:9f3a…e21
  • Provenancesigned → a1b2c3d
  • Served from7 edge regions

06replaces your busywork

AI Agents

Agents are a first-class primitive, not a bolted-on chatbot. Because every surface lives in Plain, an agent can read and write across all of them with full context — and a complete audit trail.

  • Acts across Git, Issues, Docs, CI, and Artifacts
  • Triggered by events, schedules, or chat
  • Full audit trail and rollback per run
plain · agents
triage-botrunning
  • Issues Triaged PLN-482, labelled bug

    0:00

  • Docs Updated the edge-sync runbook

    0:06

  • Git Opened PR #483 with the fix

    0:11

  • CI Pipeline green in 44s

    0:55

full audit trailrollback run

// What we optimise for

<50ms

Fast

Local-first sync. Every action lands before you lift your finger.

99.99%

Reliable

Uptime backed by a real SLA, not a status page apology.

Built in

AI-first

Agents are a primitive, woven through every surface from day one.

⌘K

Keyboard-native

Every command a keystroke away. The mouse is optional.

Early access

Reserve your place in the first wave.

Tell us a little about your setup and we'll prioritise the teams we can help most.

Where does your code live today?
How big is your team?
What slows you down most?