Engineering design doc review, purpose-built for AI-assisted planning. Built with Rails 8, Hotwire, and a semantic operations API.
Plans get better when more eyes see them. An engineer drafts a plan — often with AI help — and CoPlan gives it a home where teammates can review it, leave inline feedback, and iterate. Domain experts catch things the author missed. AI agents respond to feedback and apply edits automatically. The result is higher-quality plans before a single line of code is written.
The editing model is intentionally asymmetric: humans comment, AI agents edit. When a reviewer leaves feedback and the author accepts it, an agent applies the change — creating a new immutable version with full provenance (who changed what, why, and which comment triggered it). This keeps the version history clean and auditable.
- Plans are Markdown documents that move through a lifecycle:
brainstorm → considering → developing → live(or→ abandoned). Brainstorm plans are private; once a plan moves to considering, it's published to the whole org. - Inline commenting — select any text in the rendered plan to leave a comment, Google Docs-style. Comments are threaded and anchor to the selected text.
- AI agents edit via semantic operations —
replace_exact,insert_under_heading,delete_paragraph_containing— not brittle line numbers. Agents acquire an edit lease (one at a time), submit operations against a base revision, and the server creates a new version. - Cloud Personas — server-side AI reviewers (security, scalability, routing) that automatically review plans when they reach certain statuses, or on demand.
- Realtime — comments, edits, and status changes broadcast instantly to all viewers via Turbo Streams.
- Full provenance — every version records the actor (human, local agent, or cloud persona), the AI model used, the prompt, and which comments triggered the change.
- Ruby on Rails 8+ — importmaps, Hotwire, Stimulus
- MySQL 8+ — UUID primary keys
- SolidQueue — background jobs
- SolidCable — ActionCable adapter
Add to your Gemfile:
gem "coplan-engine", require: "coplan"See the Host App Integration Guide for full setup instructions.
coplan-slackadds signed Slack Events API handling and rich link unfurls without coupling Slack to the core engine.
bin/setup
bin/rails db:seed
bin/devSign in with any @example.com email (stub OIDC).
For microphone dictation, start bin/dev from a shell with OPENAI_API_KEY
set, or configure openai.api_key in Rails credentials. Both the plan microphone
and the composer’s Dictate button then record audio for server transcription.
If you add the key after starting the server, restart it and reload the plan.
Without a key, dictation uses the browser’s speech service, which may be unavailable
in embedded browsers. Check configuration without printing the key:
bin/rails runner 'puts CoPlan::Ai.available?'bundle exec rspecSee CONTRIBUTING.md for pull request, spec, and visual testing requirements.
Interactive features are tested with JavaScript-enabled browser specs in spec/system/.
Agents authenticate with Authorization: Bearer <token>. Key endpoints:
GET /api/v1/plans/:id— read a planPOST /api/v1/plans/:id/lease— acquire edit leasePOST /api/v1/plans/:id/operations— apply semantic editsPOST /api/v1/plans/:id/comments— comment on a plan
See docs/PLAN.md for full architecture.
| Resource | Description |
|---|---|
| CODEOWNERS | Project lead(s) |
| GOVERNANCE.md | Project governance |
| LICENSE | Apache License, Version 2.0 |