Weft Repos

A repo per agent session, and dormant repos are free.

Sessions that spin up and tear down in seconds should not leave infrastructure running up costs behind them. Create a repository per user or per session in under 100 ms, commit every action, undo with a single request — and when the session ends, what is left is a repository rather than an idle disk. Every one of them is still a real git remote.

Commit over REST, no checkout anywhere

POST /v1/orgs/acme/repos/session-1/commits
{
  "branch": "main",
  "expected_parent": "3f2a…",   // 409 + current tip on conflict
  "message": "agent step 12",
  "context": { "run": "r-42" }, // your audit blob
  "operations": [
    { "op": "put", "path": "src/app.js", "content": "…" },
    { "op": "delete", "path": "notes.txt" }
  ]
}

Undo is a primitive, not a project

Branch, reset, and revert over REST. Reset the agent's branch back to commit A and its later commits stay reachable by SHA until garbage collection — undo without destroying the audit trail.

Reads are version-native: any file at any ref with content-addressed ETags, tree listings, diffs, and paginated history.

Still git, always

Every repo is clonable and pushable with stock git and a scoped token, over HTTPS or SSH. Export any repo — or the whole org — as standard bundles at any time. No lock-in is a stated product principle.

Fleet-scale by construction

Batch create and delete a thousand repos per call; list millions with keyset pagination. A dormant repo is a handful of cold objects —dormant repos are free.

Workflows

A commit made here can run CI here

A .weft/*.yml file in the repository runs on our runners, and it starts from the commit route above just as it starts from agit push — so an agent that commits over REST gets the same checks a person pushing a branch gets. One throwaway container per job, a log you can read while it is still being written, and a verdict on the commit that the land queue waits for. What runs, and what is refused.

Quickstart: first commit over RESTOpenAPI spec