Supra AI 1.0.0
Supra AI is a local, MLX-powered macOS research and drafting assistant for legal work. It runs large language models entirely on-device and pairs them with source-grounded legal research and a document-intelligence pipeline — with citation verification built in so the model never presents unverified authority as settled law.
⚖️ Not legal advice. Every citation, quotation, and proposition must be independently verified by a qualified attorney before any reliance.
✨ Highlights
- Fully local generation — models load and run in a sandboxed MLX XPC service; no prompt, document, or query leaves the device for generation.
- Source-grounded legal research —
/researchand/legalretrieve authority from CourtListener, rank it (jurisdiction, court level, recency, precedential status), and constrain the model to the retrieved packet. Fabricated or unsupported citations are flagged and quarantined behind a "do not rely" banner instead of being shown as good law. - Document intelligence — import PDF/DOCX/XLSX/RTF/EML/images with OCR, chunking, on-device embeddings, hybrid retrieval, source-cited Q&A, fact chronologies, and exportable structured outputs, all scoped per matter.
- Matter workspace — organize chats, research sessions, authorities, documents, and outputs by matter, with an audit trail.
- Privacy by default — privileged query terms are redacted to stable fingerprints in logs and diagnostics unless explicitly enabled; the CourtListener token is Keychain-stored and device-bound.
🔒 Pre-publish hardening
This release went through four rounds of adversarial security/correctness review (converged to zero findings), hardening legal-citation safety, path-traversal and zip-bomb handling in document import, XPC parameter validation, generation concurrency, and data-integrity on delete. 242 package tests pass and the full app scheme builds.
📋 Requirements
macOS 15+ on Apple Silicon · Xcode 16+ (Swift 6) · local MLX model weights · optional free CourtListener API token for research.
See the README for setup and configuration.
What's Changed
- Milestone 1: model selection, persisted chat, cross-process file access, validation runner by @cadespivey in #1
- App shell: model downloader, Settings, sidebar fix; remove Tasks by @cadespivey in #2
- Matters: folders that group chats by @cadespivey in #3
- Surface load-failure detail; guard downloads by model_type by @cadespivey in #4
- Fix XPC runtime service registration (missing XPCService Info.plist key) by @cadespivey in #5
- Handle reasoning-model output: suppress + strip chain-of-thought by @cadespivey in #6
- Validation run reliability: fail-fast on service drop + reconcile stranded runs by @cadespivey in #7
- Make the generation preset actually affect sampling by @cadespivey in #8
- Milestone 2: legal research layer (checkpoint — WO 19–24) by @cadespivey in #9
- Milestone 2 polish: close out all caveats / minor items by @cadespivey in #10
- Silence unused-try? warning (zero-warning build) by @cadespivey in #11
- Add Milestone 3 plan (Matter Document Intelligence) by @cadespivey in #12
- Silence unused-try? warning in ModelDownloadController by @cadespivey in #13
- Milestone 3: Matter Document Intelligence by @cadespivey in #14
- UI/UX quick wins: tab order, All Documents, chat list, import-failure banner by @cadespivey in #17
- App shell overhaul: sidebar restructure, runtime reconcile, drop Limited Mode, toolbar by @cadespivey in #18
- Explain Structured Outputs + clarify Context (#10, explainer half) by @cadespivey in #19
- Fix M3 validation OCR scenario (decodable fixture image) by @cadespivey in #16
- Seeded 3-matter test corpus + validation suite (incl. live CourtListener) by @cadespivey in #15
- Research/Authorities XCUITest: target, a11y IDs, seeding hook (#4) by @cadespivey in #20
- Ground Structured Outputs in chosen documents (#10 follow-up) by @cadespivey in #21
- Unify matter tab layouts (shared MatterTabScaffold) by @cadespivey in #22
- Model load state: real Loaded vs Default + auto-load selected model on startup by @cadespivey in #23
- Remove in-app Milestone 1/3 validation triggers by @cadespivey in #24
- App logo, launch splash, and "See Supra" brand (§) by @cadespivey in #25
- Show CourtListener API token status in Settings by @cadespivey in #26
- Chat status bar: model/processing state + generation settings switcher by @cadespivey in #27
- Global chat attachments: files/images/screenshots into context (OCR-to-text, ≤10) by @cadespivey in #28
- Add Assistant Profile ("soul document") in Settings by @cadespivey in #29
- Adversarial code audit: fixes for bugs, dead code, and abandoned branches by @cadespivey in #30
- Audit follow-ups: fix/remove remaining identified issues by @cadespivey in #31
- Pin ad-hoc signing to keep the sandbox container (and its data) stable by @cadespivey in #33
- Collapsible reasoning view in chat by @cadespivey in #32
New Contributors
- @cadespivey made their first contribution in #1
Full Changelog: https://github.com/cadespivey/Supra-AI/commits/v1.0.0