An all-in-one downloader, archiver, and asset manager; built for an archivists' mind.
-
Frontend
client- the Electron desktop clientweb_dashboard- A dashboard similar to what the desktop client offerscli- command line version of the Python sidecar
-
Backend
sidecar- the Python background process responsible for communicating between the desktop client and OS-native APIs such as task schedulingserver- Python server written in FastAPI, which can also be used to be remote controlled via the desktop client or accessed via a browser that accessesweb_dashboard
-
Shared code
kyron_shared- shared Python code for the backend and sidecarweb_shared- shared code and Svelte components
Caution
Kyron requires an external runtime dependencies for FFmpeg and yt-dlp separately since Kyron doesn’t come bundled with the insaller or the source code of this repository.
In other words, the end user must have FFmpeg and yt-dlp installed on their system for Kyron to function properly, even during development.
Warning
pnpm should be at version 10.x, since there is a strange quirk with electron-forge
not resolving other Electron dependencies, failing to run and build the
application despite having node-linker=hoisted defined from the project's .npmrc.
- Python 3.13
- Node 22, LTS or higher,
- pnpm package manager
- Docker (optional but recommended for running or hosting the server)
At the root of this repository, install the necessary dependencies:
pnpm install
python -m venv venv
pip install -e .You can run a development build of the desktop client via:
pnpm run startFor running the server, you'll need to generate a private and public API tokens:
python server/generate-token.pyKYRON_API_TOKEN: This will be solely be interfacing the client or elsewhere you'd use this on, this token can be safely regenerated from the dashboard
Note
During development, once KYRON_API_TOKEN is regenerated, the API token from the .env upon
initial setup is ignored and no longer valid. So please make sure your token
reflects from your .env file.
KYRON_PRIVATE_TOKEN: A private token used on the server for performing destructive actions such as performing tasks in bulk and deleting files- This, however, can't be regenerated unless the server has shut down, then you can run the token script but with the
--force-regen privateflag to regenerate the private token
- This, however, can't be regenerated unless the server has shut down, then you can run the token script but with the
The frontend, its desktop and web clients, and Python sidecar, are licensed under GPL-3.0, its backend is licensed under AGPL-3.0.