{"id":50949999,"url":"https://github.com/scottconverse/civiccast","last_synced_at":"2026-06-18T00:30:59.321Z","repository":{"id":358696117,"uuid":"1233357410","full_name":"scottconverse/civiccast","owner":"scottconverse","description":"CivicCast - open-source civic broadcast platform (private development phase)","archived":false,"fork":false,"pushed_at":"2026-06-13T20:24:15.000Z","size":22940,"stargazers_count":0,"open_issues_count":6,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-13T22:17:42.707Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://scottconverse.github.io/civiccast/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scottconverse.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":"AUDIT_PLAYWRIGHT_INTERFACE_WIRING.md","citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":"SUPPORT.md","governance":"docs/governance/bylaws-draft.md","roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-08T21:49:56.000Z","updated_at":"2026-06-13T15:04:36.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/scottconverse/civiccast","commit_stats":null,"previous_names":["scottconverse/civiccast"],"tags_count":50,"template":false,"template_full_name":null,"purl":"pkg:github/scottconverse/civiccast","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scottconverse%2Fciviccast","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scottconverse%2Fciviccast/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scottconverse%2Fciviccast/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scottconverse%2Fciviccast/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scottconverse","download_url":"https://codeload.github.com/scottconverse/civiccast/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scottconverse%2Fciviccast/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34471638,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-17T02:00:05.408Z","response_time":127,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-18T00:30:59.089Z","updated_at":"2026-06-18T00:30:59.307Z","avatar_url":"https://github.com/scottconverse.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CivicCast\n\n**CivicCast is open-source, self-hostable civic broadcast software for public\nmeetings and community media.**\n\nIt helps a school board, city council, HOA board, nonprofit, public-access\nstation, or community media team run a meeting broadcast, preserve the record,\nreview captions and summaries, publish the replay, and keep a clear proof trail\nwithout buying a proprietary broadcast appliance.\n\n**Current release:** [`v2.1.0`](https://github.com/scottconverse/civiccast/releases/tag/v2.1.0)\n\n**Current proof boundary:** v2.1.0 is the public beta. It validates\nCivicCast-controlled local behavior — the inherited Windows new-user path from\nv2.0.8, the local FileSink and loopback SRT egress proof from v2.0.9, and E.2\negress continuity against an adversarial software headend under network\nimpairment from v2.0.10 — and adds the beta-sprint feature set (recording\nprovenance, operator repair surfaces, real trim repackaging, CDN publishing,\nconfig-gated real provider adapters, and a live caption tap) plus a\nclean-machine double-click Windows install proof that reached a running service\nwith first-admin and recovery kit on a fresh Windows 11 VM. It does not claim\nlive external-provider delivery, downstream cable-headend acceptance, QAM\nmodulation, SDI/DeckLink output, EAS behavior, CEA-708 broadcast compliance,\napp-store publication, legal certification, managed-service operation, or\nproduction analytics proof without separate field evidence.\n\n![CivicCast v2.1.0 system architecture](docs/assets/architecture/civiccast-system-architecture.svg)\n\n## Start Here\n\n### New Users\n\nUse this path if you want to try CivicCast as an operator or local tester.\n\n1. Open the [latest GitHub Release](https://github.com/scottconverse/civiccast/releases/latest).\n2. Download the release asset meant for your test path. Do not use the\n   repository source ZIP for a normal operator install.\n3. Read [Install CivicCast On Windows](INSTALL-WINDOWS.md) and\n   [Windows Release Trust And Verification](docs/install/windows-release-trust.md).\n4. Run the setup path, create the first admin, and save the recovery kit.\n5. Open **System Health**, verify backup, run restore rehearsal, then run a\n   private first-broadcast rehearsal before using CivicCast for a real meeting.\n\nThe full operator manual is here:\n\n- [User Manual](docs/USER-MANUAL.md), [PDF](docs/USER-MANUAL.pdf), and\n  [DOCX](docs/USER-MANUAL.docx)\n- [Admin Guide](docs/admin-guide.md)\n- [Meeting Operator Guide](docs/meeting-operator-guide.md)\n- [Records Clerk Guide](docs/records-clerk-guide.md)\n- [Beta Tester Start Here](docs/tester/START-HERE.md)\n\n### Technical Users\n\nUse this path if you are reviewing the software, running it from source, or\nconnecting it to a station workflow.\n\n```bash\n# One-time: install uv, then sync the workspace.\nuv sync --all-extras --group dev\n\n# Print the release version.\nuv run civiccast --version\n\n# Probe CPU, RAM, disk, GPU/VRAM, operating system, and recommended tier.\nuv run civiccast doctor\n\n# Serve the umbrella API on http://localhost:8000.\nuv run uvicorn civiccast.app:app --reload\n```\n\nWithout `DATABASE_URL`, CivicCast starts in local setup mode and prepares\ninstaller-managed durable SQLite storage. Technical deployments can set\n`DATABASE_URL` for Postgres. Throwaway in-memory stores are for tests and local\nexperiments only and require explicit acknowledgement.\n\nTechnical references:\n\n- [Technical Operations Reference](docs/technical-ops-reference.md)\n- [Architecture Overview](ARCHITECTURE.md)\n- [API Guide And Generated Reference](docs/API-REFERENCE.md)\n- [OpenAPI JSON](docs/openapi.json)\n- [Cross-Platform Installer Guide](docs/installer/cross-platform-installer.md)\n- [Channel Egress Operator And Tester Runbook](docs/ops/channel-egress-runbook.md)\n- [CI And Proof Matrix](docs/releases/ci-proof-matrix.md)\n\n## What Ships In v2.1.0\n\nCivicCast v2.1.0 is the public beta. It includes:\n\n- Public portal playback for live, upcoming, and published meetings, with\n  privacy-safe playback analytics.\n- Operator workflows for setup, upload, live room, schedule, review, publish,\n  subscribers, and system health.\n- Local captions, Spanish translation, sourced summaries, and signed record\n  exports.\n- **Recording finalization** that picks up ended live sessions, packages HLS,\n  and **publishes through a selected CDN** (Bunny / Cloudflare R2) when one is\n  configured — with an operator **Retry** control for terminal failures.\n- **Real trim repackaging**: saving a trim on a recorded asset automatically\n  re-renders (and re-uploads) the published recording.\n- **Config-gated real provider adapters** for Internet Archive, YouTube, and\n  SMTP email (`CIVICCAST_PROVIDER_*=real`), with deterministic mocks remaining\n  the default so out-of-the-box runs stay simulated.\n- A **live caption tap** (egress audio fork → durable operator review queue,\n  off by default) and an **ActivityPub dead-letter replay** control for\n  federation operators.\n- **24/7 cable channel automation** (the Cablecast-replacement lane):\n  recurring program logs, three concurrent channels with crash auto-restart\n  and join-in-progress rejoin, slate/community-bulletin gap filler,\n  headend-grade CBR SPTS over UDP with vendor presets, and BYO-TSDuck\n  stream verification — proven in a monitored unattended acceptance window\n  (24-hour soak pending; nothing is field-proven at a headend yet).\n- **Supervised BYO NDI and SDI output relays**: any channel republishes as\n  an NDI source or feeds a DeckLink card through the station's own FFmpeg\n  build (licensing means CivicCast cannot bundle those muxers), with honest\n  blocked states and a documented OBS bridge alternative.\n- Archive and reach surfaces for the resident portal (browse by meeting\n  body, year, and search), local NAS, Internet Archive, YouTube,\n  email/webhook subscribers, podcast feeds, cable file packages, and\n  default-off ActivityPub federation.\n- Local channel egress controls, production PlayoutSupervisor behavior, and\n  proof commands for FileSink continuity, loopback SRT continuity, adversarial\n  virtual-headend validation, fallback slate, live takeover boundaries, caption\n  decode-back, CG overlay lifecycle, encoder relaunch, and loudness health.\n- A **clean-machine double-click Windows install proof** (fresh Windows 11 VM:\n  install → WSL2 helper → service → first-admin and recovery kit).\n- Release evidence that distinguishes proven local paths from optional external\n  provider, app-store, live hardware, and production-operation lanes.\n\nRelease evidence:\n\n- [v2.1.0 Scope And Evidence](docs/releases/v2.1.0-scope-and-evidence.md)\n- [v2.1.0 Verification](docs/releases/v2.1.0-verification.md)\n- [CI And Proof Matrix](docs/releases/ci-proof-matrix.md)\n- [v2.1.0 GitHub Release](https://github.com/scottconverse/civiccast/releases/tag/v2.1.0)\n\n## Architecture\n\nCivicCast is a self-hostable FastAPI service with three React/Vite frontends:\nthe operator console, resident portal, and installer shell. Installer-managed\nSQLite is the default local durable store; Postgres is available for technical\ndeployments. Media, AI, publish, archive, and egress modules are kept as\nseparate surfaces so each proof claim can be tested and described honestly.\n\n```mermaid\nflowchart LR\n    Operator[\"Operator console\"] --\u003e API[\"FastAPI umbrella app\"]\n    Resident[\"Resident portal\"] --\u003e API\n    Installer[\"Installer shell\"] --\u003e API\n    API --\u003e DB[(\"Durable storage\")]\n    API --\u003e Media[\"Media packaging\"]\n    API --\u003e AI[\"Captions, translation, summaries\"]\n    API --\u003e Publish[\"Publish and archive surfaces\"]\n    API --\u003e Egress[\"Local channel egress\"]\n    Publish --\u003e Portal[\"Public portal, NAS, IA, YouTube, email, podcast\"]\n    Egress --\u003e Proof[\"FileSink, loopback SRT, caption decode-back evidence\"]\n```\n\n![CivicCast v2.1.0 channel egress proof architecture](docs/assets/architecture/civiccast-egress-proof-architecture.svg)\n\nThe architecture overview goes deeper into module boundaries, security\nboundaries, deployment posture, and the current release claim:\n[ARCHITECTURE.md](ARCHITECTURE.md).\n\n## Operator Requirements\n\n- Windows 11 with WSL2 Ubuntu 24.04 for the Windows setup path, native Linux for\n  CI-oriented operation, or macOS for source-build technical testing.\n- Durable local storage for real operator or beta use.\n- Media tooling for packaging and channel workflows.\n- Approved local model bundles for summary, translation, and caption workflows.\n- A first-admin account and saved recovery kit.\n- Provider credentials only when a station chooses to test optional external\n  services.\n\nIf a required dependency is missing, CivicCast should name the dependency,\nexplain the next action in plain English, and leave that lane unready instead\nof pretending the station is ready.\n\n## Optional Provider Lanes\n\nAs of v2.1.0, Internet Archive, YouTube, and SMTP email ship **real adapters**\nselected with `CIVICCAST_PROVIDER_*=real` plus credentials (deterministic mocks\nremain the default). They are contract-tested without live external calls and\nare **not yet field-proven** against the live services. These surfaces — and the\nremaining scaffolded lanes — require station-specific credentials, accounts,\nhardware, policies, or external systems before a public claim can be made:\n\n- Internet Archive\n- YouTube\n- Email and webhook subscribers\n- Podcast feed discovery\n- ActivityPub federation\n- Local NAS archive targets\n- Cable headend delivery beyond machine-verified SPTS (no preset is\n  field-proven against a real headend yet)\n- Receiver-side NDI proof and physical DeckLink card proof (the relays\n  ship; the station-side hardware evidence does not exist yet)\n- Streaming-TV app-store publication\n\nSee [External Provider Proof Discussion Seed](docs/public/github-discussions/provider-proof-call.md)\nfor the evidence CivicCast needs before each lane is promoted from optional to\nfield-proven.\n\n## Documentation\n\n- [Documentation Index](docs/index.html)\n- [User Manual](docs/USER-MANUAL.md)\n- [FAQ](FAQ.md)\n- [Operator Language Guide](docs/operator-language-guide.md)\n- [Public Launch Draft](docs/public/civiccast-org-holding-page.md)\n- [GitHub Discussion Seed Pack](docs/public/github-discussions/v2.1.0-community-seed-pack.md)\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md). Contributions are accepted via pull\nrequest under the Developer Certificate of Origin (DCO). Conventional Commits\nare required.\n\n## License\n\n- **Code:** [Apache License 2.0](LICENSE-CODE).\n- **Documentation:** [Creative Commons Attribution 4.0 International](LICENSE-DOCS).\n- **Combined repository license:** see [LICENSE](LICENSE).\n\n## Security\n\nTo report a security vulnerability, see [SECURITY.md](SECURITY.md). Please do\nnot open public issues for security reports.\n\n## Support\n\nSee [SUPPORT.md](SUPPORT.md).\n\n## Code Of Conduct\n\nThis project adheres to the [Contributor Covenant 2.1](CODE_OF_CONDUCT.md). By\nparticipating, you agree to abide by its terms.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscottconverse%2Fciviccast","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscottconverse%2Fciviccast","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscottconverse%2Fciviccast/lists"}