Self-host setup

Prepare for your own Kinjot deployment.

You run this deployment. Kinjot never holds your database, deployment credentials or notes. Start with synced notes; add AI or your own web host later.

What you will operate

  • A Supabase project for authentication, your database, and app functions.
  • The included byo.kinjot.com app, or your own static host.
  • Your backups and migration updates.

What you will bring

Kinjot Self-host is licensed under the Kinjot Self-host License; setting it up means you accept it.

  • Your receipt license key, stored as KINJOT_LICENSE_KEY.
  • A Supabase database URL in KINJOT_DATABASE_URL.
  • A classic Management API token in SUPABASE_ACCESS_TOKEN to deploy app functions.
  • The project reference in the KINJOT_SUPABASE_PROJECT_REF repository variable.

The classic token is account-wide across every Supabase organization and project you can reach. Keep it only in your deployment secret store. Read Supabase’s access-token guide.

OpenAI, Voyage AI, and Cloudflare credentials are not needed for the first note.

Installing

Purchasing has not opened yet. These steps apply once you have a license key. You can use local mode or compare the hosted plans on the pricing page in the meantime.

Your license key arrives in your Lemon Squeezy receipt email. Keep it private. It never appears in this URL, and this page does not ask you to paste it.

  1. Generate your own private repository from the deployment template. It contains reviewable workflows and a public signature trust root. Create a Supabase project for it. When you create it, untick Automatically expose new tables under Security; left on, it grants every new table in public to the Data API roles. Keep the repository private because Actions logs can contain provider diagnostics.
  2. Add the three repository secrets and project-reference variable above. The workflow uses backend-only by default. In Supabase Auth, set the Site URL to https://byo.kinjot.com and allow https://byo.kinjot.com/app as a redirect.
  3. Open Actions → Kinjot deployment → Run workflow and select setup. It checks the target, links an unlinked license, installs the signed release, runs core diagnostics, and then updates to the newest release. Safe retries resume the recorded release and skip completed license work.
  4. After setup installs the schema, create one confirmed operator account in Supabase Auth with signups closed. Existing Auth users are backfilled during installation.
  5. Open byo.kinjot.com, enter your receipt license at its access gate, then Connect with the public project URL and publishable key from Supabase. Sign in with the operator account.
  6. Save your first note, open a second browser session, connect and sign in, and confirm the note appears there.
Cloudflare is optional: host the web app yourself

Create a Direct Upload Pages project first. Add CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID as secrets; set KINJOT_PAGES_PROJECT and KINJOT_DEPLOYMENT_MODE=full as variables. Set KINJOT_PAGES_BRANCH if your production branch is not main. Use that Pages origin and its exact /app redirect in Supabase Auth. Moving an installed backend-only deployment to full mode requires a newer signed release.

AI comes later

Notes and sync work without provider keys. When you want Recall and Tidy, add OPENAI_API_KEY and VOYAGE_API_KEY only in Supabase secrets, then use Recheck in Kinjot’s Settings → AI provider → Enable AI. Do not duplicate those keys in GitHub.

Updates use the same durable workflow. An ambiguous activation stops with explicit recovery instructions. Moving the deployment itself requires unlinking first.