Wikilinks and backlinks in Documents.
Type [[document name]] in any Document and Council builds the link, then surfaces backlinks on the other side. The document graph fills in as you write.
Early access is invite-only. Tell us a bit about you and we’ll send an access code to your inbox within 1–2 business days.
We’re in private alpha. We ship every week. Here’s what’s new.
Not in the alpha yet? Request an invite.
Type [[document name]] in any Document and Council builds the link, then surfaces backlinks on the other side. The document graph fills in as you write.
Callouts, highlights, accent carets, prose typography, cleaner canvas. Markdown that feels like a real writing surface, not a chat output.
A migration heals corrupted update times and the sync no longer bumps a conversation’s timestamp on every list refresh. Threads stop rearranging themselves for no reason.
v0.2.2 of the Council extension shipped to the Chrome Web Store. One-click install, no developer mode required. Install Council.
When a one-off chat is starting to look like a workflow, one click graduates it into an editable chain — with the prompts, model selections, and step structure preserved.
Refresh a Document and Council shows what changed since the last version inline at the top — no extra step, no separate report to open.
A new artifact for living research output. Stitch sources together, version on refresh, share, email, or publish to a public viewer. The destination for chain runs that should outlive their conversation.
The chain runner result toolbar gets an “Edit as document” CTA that converts the run into a Document you can keep iterating on without losing the original.
Documents version themselves on refresh, with delta briefs surfacing what changed between runs. Living briefs without manual diffing.
Three-pane layout: setup on the left, steps in the center, historical runs in a right rail. Chains open in the runner first — edit is one click away when you need it.
Validate the structure of a chain end-to-end against a fast model before paying for the real run. Catches broken steps and bad templates without burning the budget.
Add expectations to any step. The chain fails fast if an output doesn’t meet the bar — instead of cascading garbage into the next step.
When one model fails or produces something off, retry just that step against a different provider — without rerunning the whole chain.
Stages with no dependency between them now execute concurrently. Serial dependencies still wait their turn. Faster runs, same outputs.
Chain outputs extract citations from markdown links and verify URLs end-to-end. Inline citation spans get synthesized on the fly; dead links get flagged.
New users get a guided tour of conversations, chains, profiles, and schedules. You can replay it any time from settings if you want a refresher.
Chain steps using Claude can hit live web search natively. Sources show up alongside the output, not in a separate tool tab.
A full audit pass: HttpOnly cookie auth, route-level authorization fixes, double-submit protection on admin actions, billing idempotency, sync error handling, schema tightening. Quiet but load-bearing.
The extension fetches your ChatGPT conversation list via the GraphQL endpoint instead of scraping. Faster, more reliable, and survives ChatGPT UI changes.
Re-runs hydrate variables and propagate prior step context to the model, so you can retry one piece without rebuilding state from scratch.
Per-step run buttons in both the chain editor and the runner. Test one prompt in isolation while you’re building, or re-run just one step from a finished report.
Action buttons wrap gracefully at narrow widths instead of clipping.
The notes panel now lives at the workspace level and autosaves, so it survives thread jumps.
Floating scroll controls plus j/k/Home/End to fly through long outputs.
Tone and style dropdowns are gone. Nobody used them.
First pass at mobile responsiveness: the sidebar and report TOC become drawers below 900px, safe-area insets respect the notch, and most app surfaces work at 375px-width. File a note if something feels off.
Public landing page with pricing, early-access flow, and this changelog — domain, DNS, and SSL came up in a single afternoon.
Provider access tokens now stored encrypted on our servers; privacy policy is live at /privacy.
Side-by-side layout state now persists across reloads.
The sync toast now only appears for real changes or errors.
Chat responses worth keeping auto-file as artifacts you can reference, re-run, or drop into a chain.
Continuous-scroll report reader with a TOC sidebar — jump sections, keep your place.
Click the gear on any profile row to edit name, instructions, or model.
Schedules now take a start date, end date, and max-run count.
Filter tool-use noise at the API layer and sort by createdAt — out-of-order threads and weird gaps are gone.
Synced GPTs show up as profiles you can run against Claude, Gemini, or back to GPT — one mental model, all providers.
Open Runner, Cancel, and Save unified into a single bar.
Reports can be deleted from the runner behind a confirmation modal.
Paste a key and Council checks it against the provider before storing — bad keys surface immediately.
An incident last week: a failed scheduled chain retried itself for hours, burning API tokens. We shipped a same-day fix, then hardened the whole execution path with a circuit breaker and per-run token tracking. Runaway jobs now stop themselves before they cost you.
Settings has a danger zone — no emails to support required.
Internal tools for user management, promo codes, system stats, and analytics — not user-facing, but why we respond to bug reports faster.
Click any schedule for full run history, cron editing, pause, and one-shot “schedule ahead” runs.
Profiles can be favorited and moved into folders.
Conversation images now live in Cloudflare R2 with automatic backfill — no more missing gallery after a deploy.
Updated from gemini-2.x to the gemini-3.1-* family, with flash-lite-preview as the default.
The cluster of changes that got Council ready for real users, shipped in the same week: full-text search across every conversation (Postgres GIN, ranked, highlighted snippets), a first-run onboarding flow, a full accessibility pass (ARIA, focus traps, keyboard nav end-to-end), five critical security patches, and proper error states for expired provider sessions instead of silent failures.
Self-healing sync engine moves server-side, calling the extension only when it needs a provider-bound browser context — no more service-worker flakiness.
Settings shows live sync state across providers — last sync, failures, counts, plus a Sync Now button.
ChatGPT Canvas and Claude Artifacts captured into one searchable library with inline rendering, folders, and move-to actions.
Gemini joins ChatGPT and Claude as first-class — conversations, branches, gems, images, and code-execution results all sync.
The reporting engine hit feature-complete: scheduled chains produce dated reports stored server-side, with a viewer, side-by-side diff, cosine-similarity drift detection, and master documents that bundle related runs. The thing that made us realize Council was actually an MLOps tool for humans.
Projects got a real home: detail view, scoped system prompts, knowledge sources with PDF and URL extraction, templates, and auto-grounding when sources are attached. MLA citations, because researchers asked.
Re-run the same chain twice and Council tells you what changed, with side-by-side diff and alerts on every run.
Chrome extension hits the Web Store, the web app goes live on Railway, and the first ten testers get invite emails.
Docker image, single-container architecture, periodic sync polling, incremental message fetch.
Edited messages and regenerated responses track their parent correctly; branch navigation is one click.
Two-column workbench for building and testing prompts, scheduled chain execution, and the first pass at drift detection on outputs.
Click any image to see it full-size with source conversation and metadata.
New sidebar with a persistent icon bar, inline folder panel, and a dedicated chain-editor view for multi-step prompts.
Upload, download, and inline-render files inside conversations.
Images, tool outputs, code-execution results, and Claude artifacts all captured from streaming responses and rendered inline.
Cookie-based session auth, request rate limits, and CORS tightened ahead of any external access.
A single day that turned a chat UI into a product: background sync daemon pulling ChatGPT, Claude, and Gemini conversations into one app; Council Mode for side-by-side model comparison; prompt chains with smart steps and template variables; conversation branching and keyboard navigation; unified Profiles page covering GPTs and projects; time-grouped sidebar with folder CRUD and color picker; gallery, search, markdown rendering, palette, speech, and export. 165 passing tests landed the same day.
First web client, streaming responses, multi-provider chat, and a Docker build that could deploy anywhere.
First commit.