An open API service indexing awesome lists of open source software.

https://github.com/scottconverse/civiccast

CivicCast - open-source civic broadcast platform (private development phase)
https://github.com/scottconverse/civiccast

Last synced: about 1 month ago
JSON representation

CivicCast - open-source civic broadcast platform (private development phase)

Awesome Lists containing this project

README

          

# CivicCast

**CivicCast is open-source, self-hostable civic broadcast software for public
meetings and community media.**

It helps a school board, city council, HOA board, nonprofit, public-access
station, or community media team run a meeting broadcast, preserve the record,
review captions and summaries, publish the replay, and keep a clear proof trail
without buying a proprietary broadcast appliance.

**Current release:** [`v2.1.0`](https://github.com/scottconverse/civiccast/releases/tag/v2.1.0)

**Current proof boundary:** v2.1.0 is the public beta. It validates
CivicCast-controlled local behavior — the inherited Windows new-user path from
v2.0.8, the local FileSink and loopback SRT egress proof from v2.0.9, and E.2
egress continuity against an adversarial software headend under network
impairment from v2.0.10 — and adds the beta-sprint feature set (recording
provenance, operator repair surfaces, real trim repackaging, CDN publishing,
config-gated real provider adapters, and a live caption tap) plus a
clean-machine double-click Windows install proof that reached a running service
with first-admin and recovery kit on a fresh Windows 11 VM. It does not claim
live external-provider delivery, downstream cable-headend acceptance, QAM
modulation, SDI/DeckLink output, EAS behavior, CEA-708 broadcast compliance,
app-store publication, legal certification, managed-service operation, or
production analytics proof without separate field evidence.

![CivicCast v2.1.0 system architecture](docs/assets/architecture/civiccast-system-architecture.svg)

## Start Here

### New Users

Use this path if you want to try CivicCast as an operator or local tester.

1. Open the [latest GitHub Release](https://github.com/scottconverse/civiccast/releases/latest).
2. Download the release asset meant for your test path. Do not use the
repository source ZIP for a normal operator install.
3. Read [Install CivicCast On Windows](INSTALL-WINDOWS.md) and
[Windows Release Trust And Verification](docs/install/windows-release-trust.md).
4. Run the setup path, create the first admin, and save the recovery kit.
5. Open **System Health**, verify backup, run restore rehearsal, then run a
private first-broadcast rehearsal before using CivicCast for a real meeting.

The full operator manual is here:

- [User Manual](docs/USER-MANUAL.md), [PDF](docs/USER-MANUAL.pdf), and
[DOCX](docs/USER-MANUAL.docx)
- [Admin Guide](docs/admin-guide.md)
- [Meeting Operator Guide](docs/meeting-operator-guide.md)
- [Records Clerk Guide](docs/records-clerk-guide.md)
- [Beta Tester Start Here](docs/tester/START-HERE.md)

### Technical Users

Use this path if you are reviewing the software, running it from source, or
connecting it to a station workflow.

```bash
# One-time: install uv, then sync the workspace.
uv sync --all-extras --group dev

# Print the release version.
uv run civiccast --version

# Probe CPU, RAM, disk, GPU/VRAM, operating system, and recommended tier.
uv run civiccast doctor

# Serve the umbrella API on http://localhost:8000.
uv run uvicorn civiccast.app:app --reload
```

Without `DATABASE_URL`, CivicCast starts in local setup mode and prepares
installer-managed durable SQLite storage. Technical deployments can set
`DATABASE_URL` for Postgres. Throwaway in-memory stores are for tests and local
experiments only and require explicit acknowledgement.

Technical references:

- [Technical Operations Reference](docs/technical-ops-reference.md)
- [Architecture Overview](ARCHITECTURE.md)
- [API Guide And Generated Reference](docs/API-REFERENCE.md)
- [OpenAPI JSON](docs/openapi.json)
- [Cross-Platform Installer Guide](docs/installer/cross-platform-installer.md)
- [Channel Egress Operator And Tester Runbook](docs/ops/channel-egress-runbook.md)
- [CI And Proof Matrix](docs/releases/ci-proof-matrix.md)

## What Ships In v2.1.0

CivicCast v2.1.0 is the public beta. It includes:

- Public portal playback for live, upcoming, and published meetings, with
privacy-safe playback analytics.
- Operator workflows for setup, upload, live room, schedule, review, publish,
subscribers, and system health.
- Local captions, Spanish translation, sourced summaries, and signed record
exports.
- **Recording finalization** that picks up ended live sessions, packages HLS,
and **publishes through a selected CDN** (Bunny / Cloudflare R2) when one is
configured — with an operator **Retry** control for terminal failures.
- **Real trim repackaging**: saving a trim on a recorded asset automatically
re-renders (and re-uploads) the published recording.
- **Config-gated real provider adapters** for Internet Archive, YouTube, and
SMTP email (`CIVICCAST_PROVIDER_*=real`), with deterministic mocks remaining
the default so out-of-the-box runs stay simulated.
- A **live caption tap** (egress audio fork → durable operator review queue,
off by default) and an **ActivityPub dead-letter replay** control for
federation operators.
- **24/7 cable channel automation** (the Cablecast-replacement lane):
recurring program logs, three concurrent channels with crash auto-restart
and join-in-progress rejoin, slate/community-bulletin gap filler,
headend-grade CBR SPTS over UDP with vendor presets, and BYO-TSDuck
stream verification — proven in a monitored unattended acceptance window
(24-hour soak pending; nothing is field-proven at a headend yet).
- **Supervised BYO NDI and SDI output relays**: any channel republishes as
an NDI source or feeds a DeckLink card through the station's own FFmpeg
build (licensing means CivicCast cannot bundle those muxers), with honest
blocked states and a documented OBS bridge alternative.
- Archive and reach surfaces for the resident portal (browse by meeting
body, year, and search), local NAS, Internet Archive, YouTube,
email/webhook subscribers, podcast feeds, cable file packages, and
default-off ActivityPub federation.
- Local channel egress controls, production PlayoutSupervisor behavior, and
proof commands for FileSink continuity, loopback SRT continuity, adversarial
virtual-headend validation, fallback slate, live takeover boundaries, caption
decode-back, CG overlay lifecycle, encoder relaunch, and loudness health.
- A **clean-machine double-click Windows install proof** (fresh Windows 11 VM:
install → WSL2 helper → service → first-admin and recovery kit).
- Release evidence that distinguishes proven local paths from optional external
provider, app-store, live hardware, and production-operation lanes.

Release evidence:

- [v2.1.0 Scope And Evidence](docs/releases/v2.1.0-scope-and-evidence.md)
- [v2.1.0 Verification](docs/releases/v2.1.0-verification.md)
- [CI And Proof Matrix](docs/releases/ci-proof-matrix.md)
- [v2.1.0 GitHub Release](https://github.com/scottconverse/civiccast/releases/tag/v2.1.0)

## Architecture

CivicCast is a self-hostable FastAPI service with three React/Vite frontends:
the operator console, resident portal, and installer shell. Installer-managed
SQLite is the default local durable store; Postgres is available for technical
deployments. Media, AI, publish, archive, and egress modules are kept as
separate surfaces so each proof claim can be tested and described honestly.

```mermaid
flowchart LR
Operator["Operator console"] --> API["FastAPI umbrella app"]
Resident["Resident portal"] --> API
Installer["Installer shell"] --> API
API --> DB[("Durable storage")]
API --> Media["Media packaging"]
API --> AI["Captions, translation, summaries"]
API --> Publish["Publish and archive surfaces"]
API --> Egress["Local channel egress"]
Publish --> Portal["Public portal, NAS, IA, YouTube, email, podcast"]
Egress --> Proof["FileSink, loopback SRT, caption decode-back evidence"]
```

![CivicCast v2.1.0 channel egress proof architecture](docs/assets/architecture/civiccast-egress-proof-architecture.svg)

The architecture overview goes deeper into module boundaries, security
boundaries, deployment posture, and the current release claim:
[ARCHITECTURE.md](ARCHITECTURE.md).

## Operator Requirements

- Windows 11 with WSL2 Ubuntu 24.04 for the Windows setup path, native Linux for
CI-oriented operation, or macOS for source-build technical testing.
- Durable local storage for real operator or beta use.
- Media tooling for packaging and channel workflows.
- Approved local model bundles for summary, translation, and caption workflows.
- A first-admin account and saved recovery kit.
- Provider credentials only when a station chooses to test optional external
services.

If a required dependency is missing, CivicCast should name the dependency,
explain the next action in plain English, and leave that lane unready instead
of pretending the station is ready.

## Optional Provider Lanes

As of v2.1.0, Internet Archive, YouTube, and SMTP email ship **real adapters**
selected with `CIVICCAST_PROVIDER_*=real` plus credentials (deterministic mocks
remain the default). They are contract-tested without live external calls and
are **not yet field-proven** against the live services. These surfaces — and the
remaining scaffolded lanes — require station-specific credentials, accounts,
hardware, policies, or external systems before a public claim can be made:

- Internet Archive
- YouTube
- Email and webhook subscribers
- Podcast feed discovery
- ActivityPub federation
- Local NAS archive targets
- Cable headend delivery beyond machine-verified SPTS (no preset is
field-proven against a real headend yet)
- Receiver-side NDI proof and physical DeckLink card proof (the relays
ship; the station-side hardware evidence does not exist yet)
- Streaming-TV app-store publication

See [External Provider Proof Discussion Seed](docs/public/github-discussions/provider-proof-call.md)
for the evidence CivicCast needs before each lane is promoted from optional to
field-proven.

## Documentation

- [Documentation Index](docs/index.html)
- [User Manual](docs/USER-MANUAL.md)
- [FAQ](FAQ.md)
- [Operator Language Guide](docs/operator-language-guide.md)
- [Public Launch Draft](docs/public/civiccast-org-holding-page.md)
- [GitHub Discussion Seed Pack](docs/public/github-discussions/v2.1.0-community-seed-pack.md)

## Contributing

See [CONTRIBUTING.md](CONTRIBUTING.md). Contributions are accepted via pull
request under the Developer Certificate of Origin (DCO). Conventional Commits
are required.

## License

- **Code:** [Apache License 2.0](LICENSE-CODE).
- **Documentation:** [Creative Commons Attribution 4.0 International](LICENSE-DOCS).
- **Combined repository license:** see [LICENSE](LICENSE).

## Security

To report a security vulnerability, see [SECURITY.md](SECURITY.md). Please do
not open public issues for security reports.

## Support

See [SUPPORT.md](SUPPORT.md).

## Code Of Conduct

This project adheres to the [Contributor Covenant 2.1](CODE_OF_CONDUCT.md). By
participating, you agree to abide by its terms.