Nothing closed. No mandatory SaaS.

Self-host the whole thing in about 15 minutes, or use our hosted version.

Create your Kytelink

Skip a service, nothing breaks

Every optional capability degrades to a calm fallback — never a crash.

AnalyticsCLICKHOUSE_URL

Beacon endpoints return 202 and drop. No Analytics tab. Everything else works.

UploadsAWS_*

Avatars fall back to generated initials. No upload tiles.

Email deliveryRESEND_API_KEY / SMTP

OTPs and invites print to the server console instead.

ModerationOPENAI_API_KEY

Publishes auto-approve. The moderation UI is invisible.

Google loginGOOGLE_CLIENT_ID/SECRET

Button hidden. Email OTP always works.

GitHub loginGITHUB_CLIENT_ID/SECRET

Button hidden. Email OTP always works.

Custom domainsCUSTOM_DOMAIN_* or VERCEL_*

Custom-domain settings hidden. Profiles stay on /username.

Self-host in three commands

$ git clone <this repo> && cd kytelink/v2
$ pnpm install
$ pnpm run setup
$ pnpm dev
→ live at localhost:3000 🪁
Read the full self-hosting guide →
110

stars on GitHub

View the source

No mandatory SaaS

R2, Resend, ClickHouse Cloud, Neon, OpenAI, Vercel — every one has a self-hostable swap-in.

Runs without ClickHouse or S3

Analytics and uploads switch off cleanly if you skip them. Nothing breaks.

Real code, not a demo

The exact code behind kytelink.com — no gated "enterprise" fork.

Open source, without the asterisk

Kytelink's entire codebase is public on GitHub — the same code that runs kytelink.com, not a stripped-down community edition with the good parts held back. Read it, fork it, fix it, or run it yourself.

Free and open source isn't a growth tactic here; it's the point. Your page, your data, and the software it runs on all stay in your reach.

Self-host in three commands

Clone the repo, run the setup wizard, and start the app. The wizard asks which optional services you want — Postgres is the only must — then writes your config, starts Docker, migrates the database, and seeds sample data. The self-hosting guide walks through production deployment step by step.

Every third-party service Kytelink can use has a self-hostable swap-in, so a full deployment never requires signing up for anyone's cloud.

Optional services, graceful fallbacks

Skip ClickHouse and analytics quietly turn off. Skip S3 and avatars fall back to generated initials. Skip the email provider and OTPs print to the server console. Every optional capability degrades to a calm fallback instead of a crash — so a minimal install is genuinely minimal.

Frequently asked questions

Is Kytelink really free?
Yes. The hosted version is free with every feature included, and the source code is public so you can verify there's no catch waiting.
Can I self-host Kytelink?
Yes. Clone the repository, run the interactive setup wizard, and the full product runs on your own server in minutes — three commands end to end.
What do I need to run it?
Docker and a server. Postgres and Redis come up via docker compose; everything else — analytics, uploads, email — is optional and switches off gracefully if you skip it.
Is the hosted version the same code?
Yes. kytelink.com runs the exact code in the public repository — there is no gated enterprise fork.
Can I export my data and leave?
Anytime. Your links and analytics export as JSON, and since the software is open source, you can take them to your own deployment.
Can I contribute or report a bug?
Yes. The repository is public on GitHub — open an issue, send a pull request, or fork it and take the project in your own direction.

Ready to build your kyte?

Or use the hosted version — also free.