No description
  • Go 97.3%
  • Shell 2.3%
  • Makefile 0.4%
Find a file
zemdregon 7472708eae
Some checks are pending
CI / lint (push) Waiting to run
CI / test (push) Waiting to run
CI / build (push) Waiting to run
feat: fold local module work
2026-08-17 09:35:23 -05:00
.github/workflows ci: add self-hosted workflow without -race 2026-08-10 11:34:59 -05:00
cmd feat: fold local module work 2026-08-17 09:35:23 -05:00
internal feat: fold local module work 2026-08-17 09:35:23 -05:00
proto feat: distributed transcoder pool coordinator scaffold (v0.1.0) 2026-08-10 06:31:16 -05:00
scripts feat: fold local module work 2026-08-17 09:35:23 -05:00
.gitignore feat: distributed transcoder pool coordinator scaffold (v0.1.0) 2026-08-10 06:31:16 -05:00
CHANGELOG.md feat: fold local module work 2026-08-17 09:35:23 -05:00
COMPATIBILITY.md feat: fold local module work 2026-08-17 09:35:23 -05:00
go.mod feat: fold local module work 2026-08-17 09:35:23 -05:00
go.sum feat: fold local module work 2026-08-17 09:35:23 -05:00
LICENSE feat: distributed transcoder pool coordinator scaffold (v0.1.0) 2026-08-10 06:31:16 -05:00
Makefile feat: fold local module work 2026-08-17 09:35:23 -05:00
muxcore.json feat: fold local module work 2026-08-17 09:35:23 -05:00
README.md feat: fold local module work 2026-08-17 09:35:23 -05:00

Media Transcoder Pool

Distributed transcoding pool coordinator for MuxCore — registers mesh workers (GPU/CPU), heartbeats, and assigns enqueue jobs to the least-loaded matching worker.

v0.2.0 persists workers and the job queue in SQLite (modernc.org/sqlite, WAL) and can dispatch assigned jobs to a worker TranscodeService (real media-transcoder or offline mock).

Ports

Service Default
gRPC :9720
Health :9721

Config

Env Default Meaning
POOL_DB_PATH data/pool.db SQLite durable queue + worker registry
POOL_STALE_AFTER_SEC 60 Heartbeat age before worker marked stale
POOL_DISPATCH off When 1/true, forward assigned jobs to worker gRPC
MUXCORE_HTTP_ADDR :9721 Health listen address

Local single-worker demo (laptop, no GPU)

Offline mock (default — no FFmpeg):

./scripts/local-single-worker-demo.sh
# or: go run ./cmd/local-demo

Point at a sibling media-transcoder instance:

# terminal A
cd ../media-transcoder && TRANSCODER_GRPC_ADDR=127.0.0.1:9520 go run ./cmd/module
# terminal B
MEDIA_TRANSCODER_ADDR=127.0.0.1:9520 ./scripts/local-single-worker-demo.sh

Integration coverage: TestLocalSingleWorkerDemo and TestFakeWorkerRegisterHeartbeatEnqueue.

Status

Durable job queue, fake-worker gRPC tests, and local single-worker demo (offline mock / optional real transcoder) are in place.