dev.review
Neutrality

Your agents. Your storage. Your host.

You can leave, which is the reason to stay. Nothing here is coupled to one generator, one storage backend or one git host, and the pieces that would couple it are the pieces we have decided not to build.

The whole integration

A draft is one JSON file. The schema is published and versioned, so anything that can write that file can feed this interface: a skill, a script, a CI job, a generator that does not exist yet.

A format anyone can write is a format nobody owns.

The bundled vendors cannot take this position, because each of them wants to own generation and the reading surface together. Sitting above the generators is only credible if we are not one of them.

The draft schema →

Where drafts live

A source is a name and the storage its drafts sit in. Every one of them points at storage you already own. Each has its own page: what it needs, and where it works.

SourceWhat it isWhere it works
A folder on this computer The File System Access API in a browser, the desktop app's own picker otherwise. The folder handle is remembered between sessions Chromium browsers, or the desktop app
iCloud Drive This app's own iCloud container - nothing to pick, one tap The iOS app only
A GitHub repository A repository of yours, read through the API with your own token Anywhere
A git repository Any remote you already push to. A write is a commit, so the history is the audit trail The desktop app. A browser needs a proxy, below
S3-compatible bucket Any S3-compatible endpoint: AWS, R2, MinIO Anywhere, given bucket CORS

Git in a browser is the one of these that needs a warning rather than a note. No git host sends the CORS headers a tab needs, so the requests go through a proxy you name, and the header carrying your token goes through it too. Whoever runs that proxy can read that token, and it is write-scoped, because the app commits your decisions. Run the proxy yourself, or use the desktop build, which drives the git already on your machine and needs none.

Where a review is posted is configured apart from where drafts are read, because they are independent choices. Today the destination is GitHub, with your own token. The token never leaves your browser: nothing proxies, and no credential exists anywhere but the machine you are sitting at.

What we refuse

No source points at us

Every backend reads storage the customer already owns. There is no adapter that points at our infrastructure, and adding one would be the first step in taking the position back.

No tier holds your files

Hosting the pipe would mean holding files derived from your source, and the security review the whole position avoids. What is sold is the client that syncs and coordinates a team, over storage you already have.

We are not the generator

Generation is a different business, competing on inference. This reads whatever wrote the draft and has no opinion about which agent did, which is the only reason the schema is worth publishing.

Nothing counts your visits

No analytics and no telemetry, in the app or on this page. There is no beacon, no error reporter and no third-party script anywhere in either, which is the same claim as the one above it applied to the thing that is easiest to add and hardest to notice.

You do not have to take our word for it

The source is public and the licence is Apache-2.0. The patent grant is included and there is no clause reserving anything back. Use it, fork it, ship it, sell it. That is the leaving argument in the only form that does not require trusting us.

There is no build step. package.json declares no dependencies and no devDependencies, there is no lockfile, no node_modules and no bundler, and the interface is served as the modules it is written as. Being exact about it: three MIT libraries are copied into the repository byte for byte with their licences, and only the git backend loads them. A dependency is in the repository or it does not exist, and three are.

Which is worth reading as one sentence. What is sold is the client that syncs and coordinates a team over storage they already own, and none of that needs the source closed, which is why it is not.

The source on GitHub →

The gap

This reads GitHub only today.

Seeing across the systems you are responsible for means seeing across hosts, and those systems rarely all live in one place. That is a hole in the first want, and for anyone whose work spans more than one host the product does not yet do the thing it argues for.

Adding a host is adding a file. That makes it cheap, not done.

Use it ↓ Write an adapter