Skip to content

hinrichb/Lexora

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚖️ Lexora

A fast, private, on-device launcher for German law — right from your menu bar.

Press ⌘U anywhere, search ~6,500 federal laws and thousands of court decisions, and ask an on-device AI assistant about any of them. No accounts, no API keys, nothing leaves your Mac.

Platform Swift SwiftUI AI Privacy


What is Lexora?

Lexora is a macOS utility for anyone who works with German law — students, lawyers, paralegals, or the legally curious. It lives quietly in the background as an accessory app (no Dock icon) and pops up as a Spotlight/Raycast-style command panel when you hit the global hotkey.

The whole point is speed and privacy:

  • Instant access — a single global shortcut (⌘U) from any app.
  • Everything on-device — search and the AI assistant both run locally using Apple's built-in frameworks. There is no backend, no telemetry, and no API key anywhere in this project.
  • Official sources — the catalog is built from the German federal government's own public open-data feeds.

The in-app AI assistant is named Noxtua — that's why you'll see the name in the UI and the bundle identifier, while the app/product itself is Lexora.

Features

🔍 Hybrid search Literal keyword matching plus semantic search, so "haftung nach autounfall" surfaces § 823 BGB and § 7 StVG even without an exact word match.
🧠 On-device AI chat Ask questions in natural German about any law. Powered by Apple's on-device Foundation Model (Apple Intelligence) — answers stream live, fully offline.
📎 Law mentions While chatting, type @ to attach any law or decision as context for the model.
📚 Huge catalog ~6,500 federal laws (gesetze-im-internet) and the 5,000 most recent federal court decisions (rechtsprechung-im-internet), fetched and cached locally.
📖 Official full text Open any entry to read the authoritative text, loaded from the official source in an embedded web view.
🕓 Recents Quickly jump back to laws and decisions you've recently opened.
🪟 Native macOS feel SwiftUI throughout, with the macOS “Liquid Glass” material, a floating non-activating panel, and a global Carbon hotkey.

How it works

Lexora deliberately uses only frameworks that ship with macOS — no third-party dependencies, no network services of its own.

                ┌──────────────────────────────────────────────┐
   ⌘U  ───────▶ │  LauncherPanel  (floating, non-activating)   │
                │   └─ LauncherView ─ SearchSection / Chat      │
                └──────────────────────────────────────────────┘
                          │                    │
                ┌─────────▼────────┐  ┌─────────▼──────────────┐
                │ LawStore         │  │ ChatView               │
                │  • seed laws     │  │  • FoundationModels    │
                │  • RemoteCatalog │  │    (on-device LLM)      │
                │  • disk cache    │  │  • streams answers     │
                └─────────┬────────┘  └────────────────────────┘
                          │
                ┌─────────▼────────────────────────┐
                │ EmbeddingIndex (NaturalLanguage) │
                │  German word embeddings → cosine │
                │  similarity for semantic search  │
                └──────────────────────────────────┘

Key building blocks

  • FoundationModels — Apple's on-device language model powers the chat. No network, no API key, no model download.
  • NaturalLanguage — the OS-bundled German word embeddings build a local vector index for semantic search.
  • RemoteCatalog — parses the official open-data TOC feeds:
    • gesetze-im-internet.de/gii-toc.xml — all federal laws
    • rechtsprechung-im-internet.de/rii-toc.xml — federal court decisions
  • HotKey — a thin wrapper around Carbon's RegisterEventHotKey for the global ⌘U shortcut, sandbox-friendly.
  • LauncherPanel — a non-activating NSPanel so the launcher floats over other apps without stealing focus.

Requirements

  • macOS 26.4 (Tahoe) or later
  • Xcode 26 or later
  • An Apple Intelligence–capable Mac for the AI chat feature (search and browsing work on any supported Mac; the chat tab will show a friendly notice if Apple Intelligence isn't available)

Getting started

# 1. Clone
git clone https://github.com/hinrichb/Lexora.git
cd Lexora

# 2. Open in Xcode
open Lexora.xcodeproj

Then in Xcode:

  1. Select the Lexora scheme.
  2. In Signing & Capabilities, choose your own Team (the project ships with the team field intentionally left blank).
  3. Build & run (⌘R).

The app launches into the background — there's no window and no Dock icon. Press ⌘U to summon the launcher.

On first launch macOS may ask permission to register the global hotkey. The catalog downloads in the background on first run and is cached on disk, so subsequent launches are instant.

Usage

Action Shortcut
Show / hide the launcher ⌘U
Move through results /
Open the selected entry Return
Open the AI chat Tab
Attach a law in chat type @
Dismiss / go back Esc

Project structure

Lexora/
├── LexoraApp.swift        App entry point (menu-bar / accessory app)
├── AppDelegate.swift      Panel lifecycle + global hotkey wiring
├── HotKey.swift           Carbon global-hotkey wrapper (⌘U)
├── LauncherPanel.swift    Floating non-activating NSPanel
├── LauncherView.swift     Root view; routes search ↔ detail ↔ chat
├── SearchSection.swift    Search field + results list
├── LawDetailView.swift    Full-text reader (embedded web view)
├── ChatView.swift         On-device AI chat ("Noxtua")
├── LawStore.swift         Catalog: seed data, fetch, merge, cache, search
├── RemoteCatalog.swift    Parses official federal open-data feeds
├── EmbeddingIndex.swift   On-device semantic search (NaturalLanguage)
├── Law.swift              Core model (laws + court decisions)
├── RecentsStore.swift     Recently-opened tracking
├── Components.swift       Shared SwiftUI components
└── WebView.swift          WKWebView wrapper

Privacy

Lexora is built privacy-first:

  • The AI assistant runs entirely on your Mac via Apple's Foundation Models — your questions and the law text never leave the device.
  • Search is local. The semantic index is built on-device from OS-bundled embeddings.
  • The only network access is fetching the public law/decision catalogs and loading official full-text pages on demand — both from the German federal government's own websites.
  • There is no analytics, no tracking, and no API key anywhere in this repo.

A note on legal accuracy

Lexora is a convenience tool for finding and reading legal texts. The AI assistant is a helpful summarizer, not a lawyer — it explicitly flags that its answers are not legal advice (keine Rechtsberatung). Always verify against the official source text, which Lexora links to directly.

License

© 2026 Hinrich Bomsdorf. All rights reserved.

This source is published for reference and demonstration. It is not licensed for reuse, redistribution, or modification without explicit permission. The German legal texts and court decisions are sourced from the official open-data services of the Federal Ministry of Justice (gesetze-im-internet.de / rechtsprechung-im-internet.de) and remain subject to their respective terms.

About

Fast, private, on-device macOS launcher for German law — hybrid keyword + semantic search over federal laws & court decisions, with an offline Apple Foundation Models assistant.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages