TypeType is a self-hosted, privacy-respecting video platform with a modern web client, private user features, and a server-side extraction boundary. It is built for people who want a clean video experience without handing watch history, subscriptions, playlists, and preferences to a public platform.
This project is still young. Expect active changes while watch, recommendations, imports, and mobile layouts continue to mature.
A TypeScript web application and self-hosting stack for TypeType. The frontend runs in the browser, talks to TypeType-Server over HTTP, and keeps extraction out of the web codebase.
The app focuses on a calm interface for watching videos, managing subscriptions, importing existing data, and keeping user state on your own instance.
- Not a YouTube frontend clone.
- Not a fork of Piped, FreeTube, LibreTube, Invidious, or NewPipe.
- Not a standalone extractor. TypeType needs a reachable TypeType-Server instance.
- Not affiliated with YouTube or any upstream video platform.
- Watch pages with subtitles, audio language selection, progress tracking, playlists, favorites, and watch later.
- Home recommendations with local privacy controls and feedback actions.
- Shorts-style vertical browsing for short-form videos.
- YouTube Takeout and PipePipe backup import flows.
- Download jobs through a separate downloader service.
- A Docker Compose stack for self-hosting the frontend, backend, cache, database, token service, and artifact storage.
| Role | Tool |
|---|---|
| Language | TypeScript |
| Runtime | Bun |
| Build | Vite |
| UI | React |
| Routing | TanStack Router |
| Server state | TanStack Query |
| Client state | Zustand |
| Player | Vidstack |
| Styling | Tailwind CSS |
| Components | shadcn/ui + Radix UI |
| Quality | Biome, Sherif, Knip |
| Deployment | Docker Compose |
| License | MIT |
The fastest path is the installer:
curl -fsSL https://raw.githubusercontent.com/Priveetee/TypeType/main/scripts/install-stack.sh | bashIt installs to ~/typetype-stack, generates local downloader credentials, chooses free ports when needed, starts the services, and bootstraps Garage.
For an interactive setup from a cloned repository:
./scripts/setup-stack.shManual setup is also supported:
cp .env.example .env
docker compose pull
docker compose up -d
./scripts/bootstrap-garage.sh
docker compose psDefault local endpoints are http://localhost:8082 for the frontend, http://localhost:8080 for the API, and http://localhost:8081 for the token service. Host ports can be changed through .env.
Install dependencies:
bun installCreate the frontend environment file:
cp apps/web/.env.example apps/web/.envSet the API URL:
VITE_API_URL=http://localhost:8080Run the dev server:
bun run devOpen http://localhost:5173.
bun run check
bun run build
bun run knip
bun run sherifImages are published to GitHub Container Registry: typetype, typetype-server, typetype-downloader, and typetype-token. Published tags include latest, main, branch tags, release tags, and sha-<short-sha>.
Update the whole stack:
docker compose pull
docker compose up -d --force-recreate
docker compose psUpdate only the frontend:
docker compose pull typetype
docker compose up -d --force-recreate --no-deps typetype- TypeType-Server is the Kotlin backend.
- TypeType-Downloader handles downloadable artifacts.
- TypeType-Token provides proof-of-origin tokens.
- TypeType-Android is the native Android client.
TypeType is a clean rewrite, but the product direction was shaped by existing open-source video clients and extractor projects.
- Piped for UX and API pattern references.
- FreeTube for video player behavior references.
- PipePipe and PipePipeExtractor for multi-service extraction behavior.
MIT. See LICENSE.