zgbrenner/gary
U.S.-focused fork of MikeOSS targeting solo lawyers; self-hostable with your own API keys, Clerk auth, and a triage workflow that connects document extraction to task launch.
zgbrenner/gary is a deliberate fork repositioned for U.S. solo attorneys and small firms. The foundational work Americanizes terminology and copy throughout, adds a plain-English setup guide and legal disclaimer, and ships a full documentation set including a Vercel deployment walkthrough. The fork introduces eight U.S.-focused Saved Legal Tasks (Contract Review, Litigation Memo, Case Chronology, Discovery Summary, Deposition Prep, Demand Letter Draft, Client Intake Summary, Privilege Review) and a Matter Document Review template that extracts eight columns per document, with column prompts tuned to be conservative about privilege calls and to default the attorney-review flag to Yes under uncertainty.
The auth layer was migrated from Supabase Auth to Clerk, keeping Supabase for the database. The frontend migration is complete; the backend JWT verification follow-up is documented as a separate step. Export was extended with Copy Draft, Download Markdown, and Download Word Draft actions. A setup progress tracker guides first-time deployments.
The most technically interesting addition is the row-to-task launch: a Review Table cell in the Suggested Saved Legal Task column can open the assistant with the matching task prefilled, the document attached, and extracted row values in the prompt - staged for human review, not auto-sent. The mapping is strict exact-match against the eight built-in task names; unrecognized values produce no button.
Coding-agent instruction files (AGENTS.md, CLAUDE.md) indicate the fork is being actively developed with AI assistance.
What's in it
- Review Tables for matter documents A lawyer-friendly way to organize and make sense of uploaded matter documents, reusing a familiar tabular layout rather than inventing a new system.
- Run suggested legal tasks from a row When Gary spots that a document calls for a known task, you can open the row and launch the assistant on it directly - turning a passive suggestion into one-click action.
- Built-in U.S. legal task library A curated set of pre-built legal tasks with the prompt-engineering already done, so lawyers can start working instead of configuring.
- Export drafts to Word and Markdown Every AI answer gets a one-click path out of the chat window into clean, formatted documents - no copy-paste cleanup.
- Bring-your-own-key with Test Connection Connect your own AI provider account, then confirm it actually works with a single click before you depend on it.
- One-person self-hosting Clerk login, Supabase data, and a Vercel deployment guide make standing up your own instance a realistic solo project, no Cloudflare required.
Direction
brandingi18ninfrastructure
Activity
zgbrenner ↗ analysis ↗ GitHub zgbrenner ↗ analysis ↗ GitHub zgbrenner ↗ analysis ↗ GitHub zgbrenner ↗ analysis ↗ GitHub zgbrenner ↗ analysis ↗ GitHub zgbrenner ↗ analysis ↗ GitHub Show 5 more
Threads of work (detailed view)
zgbrenner cuts the gary stack from three outside vendors to two
An auth swap and a storage merge leave this fork leaning on two hosted services instead of three.
Clerk replaces Supabase Auth across the full stack; Supabase takes over storage
zgbrenner replaced Gary's Supabase Auth with Clerk across both the frontend and backend, and consolidated the data layer on Supabase so the fork can run without any Cloudflare dependency. The migration spans six commits and rewrites auth middleware, session verification, identity lookup, account deletion, and the object storage configuration.
zgbrenner collapses Gary down to two vendors
A self-hosting cleanup that swaps three outside services for two, making Gary far easier for a small team to stand up.
Backend Clerk token verification and Supabase data layer, in one commit
`a7ea67d0` completes the Clerk migration on the backend side and consolidates document storage on Supabase, dropping the Cloudflare R2 requirement. It rewrites auth middleware, schema constraints, account deletion, user-lookup endpoints, and object storage configuration in 492 additions across 19 files.
zgbrenner swaps Gary's front door from Supabase to Clerk
The sign-in and sign-up screens now run on a hosted identity service, with the database left untouched underneath.
Supabase auth removed; Clerk takes over login and session management
zgbrenner replaces Gary's hand-rolled Supabase auth UI with Clerk, motivated by deployment fit rather than feature gaps. The old login system is gone; the data layer stays on Supabase. There's an explicit incomplete backend piece left for a follow-up PR.
zgbrenner turns document-review rows into one-click legal tasks
A new matter-review template doesn't just summarise documents - it hands you the next move on each one.
zgbrenner makes Gary's task suggestions clickable
A column that used to just suggest a next step now launches it.
Review Table rows can now launch a Saved Legal Task directly
zgbrenner wires the Suggested Saved Legal Task column in a Review Table to actually open the assistant. A lawyer clicks a cell, confirms a modal, and the assistant opens prefilled with the matching task, the document attached, and extracted row values in the prompt - nothing auto-sends.
Review Tables: Matter Document Review template and row-to-task launch, end to end
Two merged PRs together make document triage actionable in zgbrenner/gary. The first renames Tabular Review to Review Tables and adds an eight-column U.S. legal intake template; the second wires the Suggested Saved Legal Task column to open the assistant directly from a row.
zgbrenner writes the manual for self-hosting Gary
A new deployment guide spells out exactly how to stand up this fork yourself - and where the usual shortcuts break.
Vercel deployment guide and a clearer missing-env error for Supabase
`0b6ee888` is mostly documentation: a new `docs/VERCEL_DEPLOYMENT.md` (222 lines) covering how to deploy Gary's frontend on Vercel with the backend staying on a separate host. The single code change makes a missing Supabase URL fail with the variable name rather than a cryptic prerender crash.
Vercel deployment guide and named Supabase env errors
zgbrenner adds a 222-line Vercel deployment walkthrough and tightens the Supabase client initialization to name the missing variable when the app fails to start. Both changes target someone self-hosting Gary without a DevOps background.
zgbrenner gives Gary a face and plants a flag in U.S. soil
A branding-and-readiness pass turns Gary from an unlabelled fork into something that introduces itself as the American version of Mike.
zgbrenner turns a Mike clone into Gary, and draws hard lines around what it won't do
A rename on the surface; underneath, a deliberate stance on where a legal AI's responsibility starts and stops.
Gary branding cleanup: UI copy, AI prompts, DOCX author, and metadata
zgbrenner swept Mike branding out of every user- and model-facing surface in one commit: the app wordmark, global-error title, AI self-description in prompts, tracked-change author in exported Word files, and the page metadata. No new functionality; all cleanup.
Gary branding pass: identity strings, metadata, and visual assets
Commit `9d868c4` finishes the Mike-to-Gary rename across every user-facing surface - app shell, AI-identity prompts, DOCX tracked-change author, Open Graph cards, and a new test suite that will catch future regressions. zgbrenner flags this as no new functionality, and the diff confirms it.
zgbrenner gives lawyers a one-click document triage table
A new default template in the gary fork turns a pile of uploaded matter documents into a structured, attorney-reviewable table.
Review Tables: rename from Tabular Review and add Matter Document Review template
zgbrenner renames the upstream "Tabular Review" feature to "Review Tables" across all user-facing surfaces, then adds a built-in eight-column template tuned for U.S. legal intake. The plumbing is unchanged; the substance is in the column prompts.
zgbrenner builds a draft export that won't touch your text
Drafts now leave the tool as Word or Markdown files - copied out word for word, with a deliberate promise not to scrub them.
zgbrenner gives Gary's drafts a one-click door into Word
Three export buttons under every AI answer move a draft into Word, email, or a template without a copy-paste mess.
Three export actions below every Gary response: clipboard, Markdown, Word
zgbrenner added Copy Draft, Download Markdown, and Download Word Draft buttons beneath completed assistant responses. The feature ships with a 677-line export module, a 317-line test suite, and a deliberate design constraint: the wrapper never redacts or scrubs AI content, but also never injects credential-shaped tokens into the exported file.
Isolated export module: clipboard, Markdown file, and Word doc from any chat response
`b4345deb` adds `frontend/src/lib/exportDraft.ts` - 677 lines of pure export helpers covering clipboard writes, filename sanitization, Markdown wrapping, and Markdown-to-docx conversion. A 317-line test suite ships alongside it. The module is shared by both chat views with no side effects on the chat state.
zgbrenner turns Gary into a U.S. legal-work machine with eight ready-made task presets
A fork that ships with the everyday jobs of an American practice already wired up and prompted.
Eight U.S. legal task presets added to the built-in workflow catalog
`fb699b29` replaces Gary's upstream workflow definitions with eight U.S.-focused Saved Legal Tasks, adds an onboarding checklist component, and updates the terminology map to surface "Saved Legal Tasks" as the user-facing label. The task prompts are the importable artifact - they're in `builtinWorkflows.ts` on both the frontend and backend, decoupled from Gary's branding.
zgbrenner adds a does-my-key-actually-work button
A one-click test that tells you whether your AI provider key is live - and why it isn't, in plain English.
Test Connection endpoint validates provider API keys before saving
`3fb09bb3` adds a `POST /user/test-connection` backend route that fires a minimal live request against a user's API key before it's committed, and rewrites the account models page into a provider-card "Connect AI Account" flow. The test route is the reusable piece; the page rewrite is Gary-specific styling.
zgbrenner is Americanizing Mike and calling him Gary
A new fork rebrands the open-source legal-AI codebase as a deliberately U.S.-focused tool named Gary.
Mike to Gary: U.S. localization pass on willchen96/mike
zgbrenner's first substantive commit positions the fork for solo U.S. lawyers, swapping out UK-oriented terminology and setting up three new docs that make the self-hosting path clearer. The rename itself is fork-specific, but the artifacts it produces are worth a look on their own.
Pull requests (detailed view)
✅ Merged (8)
zgbrenner · opened 2mo ago · merged 2mo ago by zgbrenner zgbrenner · opened 2mo ago · merged 2mo ago by zgbrenner zgbrenner · opened 2mo ago · merged 2mo ago by zgbrenner zgbrenner · opened 2mo ago · merged 2mo ago by zgbrenner zgbrenner · opened 2mo ago · merged 2mo ago by zgbrenner zgbrenner · opened 2mo ago · merged 2mo ago by zgbrenner zgbrenner · opened 2mo ago · merged 2mo ago by zgbrenner zgbrenner · opened 2mo ago · merged 2mo ago by zgbrenner