- JavaScript 45.5%
- Svelte 34.8%
- TypeScript 17%
- CSS 1.4%
- Dockerfile 0.5%
- Other 0.8%
the frontend is a static build, so everything from $env/static/public is inlined by vite and can't be changed by whoever runs the image. that made the published image usable only for this instance. app.html now carries a __COBALT_*__ placeholder for each configurable value, and web/docker-entrypoint.sh rewrites them from env before caddy starts. $lib/runtime-config reads the result synchronously (the injected script is in <head>, so it has run before any module imports it) and treats an unsubstituted placeholder as unset, falling back to whatever was compiled in. dev builds and images with no env set behave exactly as before. configurable: WEB_INSTANCE_NAME, WEB_TAGLINE, WEB_DEFAULT_API, plus the mascot set, which is built from whatever .png files exist in /srv/meowbalt so operators can mount their own art over it. if a supplied tagline doesn't already mention "community" anywhere, the entrypoint appends "(community instance)" -- third-party instances need to be identifiable as such. the build-time default is left alone, since it's written with that in mind. build-time WEB_* are now ARGs rather than hardcoded ENV, so a different instance can be baked in with --build-arg. adds .gitattributes pinning LF on shell scripts and Dockerfiles: a CRLF shebang makes the kernel look for "/bin/sh\r" and the container won't start. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|---|---|---|
| .forgejo | ||
| api | ||
| docs | ||
| packages | ||
| web | ||
| .deepsource.toml | ||
| .dockerignore | ||
| .gitattributes | ||
| .gitignore | ||
| compose.yml | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
cobalt is a media downloader that doesn't piss you off. it's friendly, efficient, and doesn't have ads, trackers, paywalls or other nonsense.
paste the link, get the file, move on. that simple, just how it should be.
cobalt monorepo
this monorepo includes source code for api, frontend, and related packages:
it also includes documentation in the docs tree:
- how to run a cobalt instance
- how to protect a cobalt instance
- cobalt api instance environment variables
- cobalt api documentation
ethics
cobalt is a tool that makes downloading public content easier. it takes zero liability. the end user is responsible for what they download, how they use and distribute that content. cobalt never caches any content, it works like a fancy proxy.
cobalt is in no way a piracy tool and cannot be used as such. it can only download free & publicly accessible content. same content can be downloaded via dev tools of any modern web browser.
contributing
if you're considering contributing to cobalt, first of all, thank you! check the contribution guidelines here before getting started, they'll help you do your best right away.
licenses
for relevant licensing information, see the api and web READMEs. unless specified otherwise, the remainder of this repository is licensed under AGPL-3.0.