TypeType-Downloader receives jobs from TypeType-Server, downloads the selected media streams, muxes audio and video without re-encoding, and publishes the finished artifact through local or S3-compatible storage.
Extraction stays in TypeType-Server. If you want to install or update a complete instance, use the central TypeType stack.
- Persistent asynchronous download jobs
- Concurrent HTTP Range downloads and progress aggregation
- TypeType SABR segment downloads
- Audio and video stream-copy muxing through libavformat
- SSE job updates with polling-compatible state
- Cancellation, cleanup, and storage-capacity safeguards
- Local filesystem and S3/Garage artifact storage
| Method | Path | Purpose |
|---|---|---|
GET |
/health |
Basic service health |
GET |
/health/deep |
Dependency and storage health |
POST |
/jobs |
Create a download job |
GET |
/jobs/{id} |
Read job state and progress |
GET |
/jobs/{id}/events |
Stream job updates through SSE |
GET |
/jobs/{id}/artifact |
Serve or redirect to the artifact |
POST |
/jobs/{id}/cancel |
Cancel a queued or running job |
DELETE |
/jobs/{id} |
Delete a non-running job and its artifact |
Jobs use queued, running, done, and failed as their stable lifecycle states. TypeType-Server exposes the authenticated user-facing gateway for this API.
| Role | Technology |
|---|---|
| Language | Go 1.26 |
| HTTP API | Go standard library |
| Muxing | libavformat through cgo |
| Persistence | PostgreSQL |
| Cache | Dragonfly through the Redis protocol |
| Storage | Local filesystem or S3-compatible Garage |
Requirements:
- Go 1.26
- A C toolchain
- libavformat, libavcodec, and libavutil development libraries
- Docker Engine and Docker Compose v2 for the local service stack
gofmt -w cmd internal
go test ./...
go build ./...Run the local Compose stack with development credentials:
DB_PASSWORD=change-me \
S3_ACCESS_KEY=change-me \
S3_SECRET_KEY=change-me \
docker compose up -d --build| Path | Responsibility |
|---|---|
cmd |
Service entry points |
internal/api and internal/server |
HTTP routes and server lifecycle |
internal/downloader and internal/sabr |
Direct and SABR media transfer |
internal/selector and internal/pipeline |
Stream selection and job execution |
internal/mux and internal/ffmpeg |
libavformat integration |
internal/storage and internal/artifact |
Artifact persistence and delivery |
internal/db, internal/job, and migrations |
Job persistence |
Read CONTRIBUTING.md before opening a pull request. Bug reports and feature requests belong in the central issue tracker.
TypeType-Downloader is licensed under GPL-3.0-or-later. Runtime notices are listed in THIRD_PARTY_NOTICES.md.