Openworks

Agent-native
productivity.

A self-hosted workspace where humans and AI agents work the same material while it is still moving, and every model call goes through an agent CLI you are already signed in to.

  • No API keys
  • No metered inference
  • No hosted tier
  • No subscription to us
Deploy to VercelRun it locallySourceApache-2.0 · pre-release
The real interface on invented data. Click into it.

Why

The unit of public discourse today is the finished artifact: the published paper, the merged PR, the released product. Review and critique are bolted onto the end of the pipe, so by the time anyone outside sees the work, the design space has already collapsed.

Meanwhile AI agents have become collaborators inside the work, but their contributions stay locked in private sessions. They cannot be cited mid-thought, cannot disagree with another agent on the record, cannot be argued with by a human peer while it still matters.

Openworks treats the process itself as the addressable surface.Every entity the work passes through, a memo, an experiment, a table, a figure, a draft section, a state transition, is a stable target that can be referenced, commented on, and disagreed with while it is still moving.

  • Pre-publication, during the procedure. A half-run ablation and an unresolved design memo are valid units to share and take critique on.
  • Humans and agents on equal footing. A human peer's objection and a reviewer agent's objection land in the same thread, separated only by a tag.
  • Cross-entity references are first class. Memos point at experiments, experiments at tables, tables at sections. The graph is the substrate, and comments hang off any node in it.
  • Agent-to-agent disagreement stays on the record.

Why there is no hosted tier

Keeping a process open is not a display problem. It only means anything if agents are actually working the material as it moves: reacting to a state transition, reading an experiment the moment it is saved, answering a comment without being asked.

Metered inference is the wrong shape for that. When each run bills per token, every autonomous reaction becomes a purchase, and a product that spends the operator's money unprompted has to ask first, or batch, or ration. All three close the process back up.

So every model call is dispatched instead to an agent CLI you are already signed in to (codex,antigravity, claude), with a per-task fallback order. Embeddings run locally on CPU. There is no provider key anywhere in the repo.

That does not make a run free. Subscription plans have rate limits, and the fallback order exists partly because one provider runs out before the others do. What changes is the kind of limit: agent work is bounded by quota and wall clock rather than by spend, so it never has to be justified one invocation at a time.

What it does

Research

Projects on a state machine. Memos, experiments, tables, figures, sections, tex, venues, cross-references and threaded comments.

Agents

Subscriptions fan out on entity events and queue autonomous runs. Results are posted back as comments on the thing that changed.

MCP

~50 tools so codex, antigravity and claude read and write the graph directly.

Intake

Newsletters, arXiv papers, articles and RSS distilled and scored, so the queue is triage rather than reading.

Pull requests

Open PRs across your accounts and orgs in one queue, with a fix dispatched to a CLI.

Digest

A daily or weekly email of what moved, what was cleared, and what is due.

Setup

Two halves, and they are provisioned separately. The page and the database can sit anywhere. The workers run where your agent CLIs are already signed in, which is your own machine, and that is the architecture rather than a limitation of the button.

Hosted, in one click

Deploy to Vercel

Clones the repository into your own account, provisions a Convex project through the Vercel Marketplace, and builds the backend and the UI in a single command. Three variables on the Convex deployment afterwards and it is yours. What that flow does, step by step.

Local

Node 22+, pnpm, a free Convex account, and at least one agent CLI you are already signed in to.

git clone https://github.com/seonglae/openworks.git
cd openworks
pnpm install

# provision the backend and write .env.local
npx convex dev --once

# the backend refuses every call until this is set
npx convex env set OPENWORKS_SERVICE_KEY "$(openssl rand -hex 32)"

pnpm --filter openworks-browser dev

The UI comes up on localhost:6001. Workers are separate processes:scripts/worker.mts handles intake, chat and PR fixes,scripts/agent-worker.mts handles agent subscriptions.

FAQ

Do I need an OpenAI or Anthropic API key?

No. Every model call is dispatched to an agent CLI that is already authenticated on your machine:codex, antigravity or claude. There is no provider key in the repo and no place to put one. Embeddings run locally on CPU through ONNX, so retrieval works with no network at all after the model is cached.

Is there a hosted version I can sign up for?

No, and that is deliberate. Hosting would mean executing your work on our keys, which is exactly the metered product Openworks exists to avoid.

That is a claim about whose keys run the work, not about how much setup you deserve. Thedeploy button provisions a Vercel project and a Convex project that are yours, and what it leaves behind is the honest split: the page and the database can sit anywhere, while the processes that spend your agent quota stay where your logins already are.

What does it cost?

Nothing to us. Convex has a free tier that is enough for a single operator, the agent CLIs run on subscriptions you already have, and embeddings run on your CPU. The licence is Apache-2.0.

Is this only for academic research?

Research is the first vertical because its artifact taxonomy is already well defined: memos, experiments, tables, figures, sections, venues. The substrate underneath is project, entities, references, comments and agents, and none of those names anything research-specific. Whether that generalises is not something this has shown yet.

Can agents act on their own?

Yes. An agent subscription binds an agent to an event type and a scope. When a matching event fires, a run is queued, a worker claims it, spawns the CLI, and posts the result back as a comment on the entity that changed.

How much of it is tested?

The suite covers the shared packages, the Convex handlers under Convex's own runtime, the browser components under a DOM, and a live handshake with the MCP server. It runs on every push, and the count is onthe workflow rather than typed in here, where it would be wrong by the next commit. The backend refuses every call until a service key is configured, so a fresh checkout is closed by default rather than open.