Welcome to CivicRecords AI #1
scottconverse
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Hey everyone! 👋
CivicRecords AI is an open-source, locally-hosted AI system that helps municipal staff respond to open records requests (FOIA, CORA, and state equivalents). Every piece of data stays on your city's own hardware — no cloud, no subscriptions, no vendor lock-in.
Current status: v1.2.0 — released 2026-04-23. CI green on commit
cc06abc. 617 backend pytest + 36 frontend vitest, all passing. Installer, onboarding, seeding, model picker, portal switch, and at-rest encryption all landed together.Headline: ENG-001 closed. Connector credentials in
data_sources.connection_configare now encrypted at rest via a Fernet envelope (AES-128-CBC + HMAC-SHA256).pg_dumpoutput, restored backups, and DB-superuser sessions see ciphertext only. Runtime code still sees a plain dict — zero API/admin-UI surface change. Operator breaking change: setENCRYPTION_KEYin.envbefore restart (the installer auto-generates one on fresh installs and prints a loud "BACK IT UP SEPARATELY FROM YOUR DATABASE" banner). Losing the key means losing credential access — key rotation is a future slice.New in v1.2.0 — Tier 5 (installer + onboarding + seeding + model picker + portal switch):
CityProfileand transitionsonboarding_statusthrough its lifecycle. Skip advances the walk truthfully.app/main.lifespanauto-seeds 175 state-scoped exemption rules, 5 compliance templates, and 12 notification templates on first boot. Idempotent via skip-if-exists; admin customizations survive re-seeds.gemma4:e4b. Fake tagsgemma4:12bandgemma4:27bhave been purged repo-wide. Larger tags (gemma4:26b,gemma4:31b) remain selectable but require an explicit "stronger hardware" acknowledgement against the locked 32 GB baseline.PORTAL_MODEenv var (privatedefault,publicopt-in). Public mode exposes exactly three surfaces — landing page, resident-registration path, and authenticated records-request submission forUserRole.PUBLIC. Anonymous walk-up submission is intentionally out of scope..exeshipped as a GitHub Release asset (CivicRecordsAI-1.2.0-Setup.exe+.sha256). Unsigned by design — SmartScreen shows "Windows protected your PC — Unknown publisher" on first run. Click More info → Run anyway, confirm UAC. macOS/Linux continue on the guidedinstall.shscript.Carried from v1.1.0 / v1.0.x (unchanged):
Roadmap (current, per canonical spec):
Public portal clarification. v1.2.0 ships a minimal public surface (T5D) only when the deployment explicitly opts in via
PORTAL_MODE=public. That surface is three screens — public landing page, resident registration, and authenticated records-request submission. It is not a full public portal. The older statement in this thread that "v1 is internal-only" is now partially obsolete — staff-only private mode remains the default, but a minimal public mode exists as a deliberate opt-in.Release + docs:
If you're a city clerk, records officer, or civic technologist — we'd love to hear from you.
— Scott
All reactions