Korely

Get Started

Install Self-hosted

The same code that runs as Korely Cloud, installed on your own machine with Docker.

The code is on GitHub under Apache 2.0: github.com/korely-ai/korely. Its README is the source of these steps; this page repeats them so you can read them next to the rest of the documentation, and if the two ever differ, follow the README.

Install

  1. Install Docker Desktop and open it (on Windows, use it inside WSL2 with Docker: tested). Korely needs 4 GB of free memory.
  2. Download and run the installer. Open a terminal (on a Mac: the Terminal app), paste this line and press Enter:
    Terminal window
    curl -fsSL https://raw.githubusercontent.com/korely-ai/korely/main/install.sh | sh
    curl downloads the installer and | sh runs it. The installer works in a new folder, korely, and nowhere else: it downloads Korely (about 0.7 GB to download and about 2.4 GB on disk, the first time), starts it and creates your account.
  3. Open the address it prints, http://127.0.0.1:8000, and sign in with the login and password it prints. It also prints an API key: that is what your agents use. The password and the key are shown once. The key expires after 90 days (the installer prints the date); make a new one on the dashboard's API keys page.

On a Mac, without a terminal: download Korely Installer, open it and double-click Korely Installer. It checks Docker Desktop, asks where to install and, if you want, your model key, then installs in a Terminal window you can watch, and opens your dashboard at the end. It runs the same installer as the line above.

Running the line again starts what is there and creates nothing new. To read the installer before running it: curl -fsSLO …/install.sh, then sh install.sh --help.

What the installer prints

Two programs run: Korely and its database. The other lines are Docker setting them up.

NameWhat it is
korely-api-1Korely: the dashboard, the API and the MCP server, on port 8000.
korely-db-1The database: Postgres with pgvector.
korely_pgdataThe disk the database keeps its data on. It stays when Korely is stopped, and goes with ./korely uninstall --yes.
korely_defaultThe private network the two programs talk over.
korely-facts-dir-1A one-off helper: it lets Korely write to the facts folder, then stops. "Exited" is normal.

Your model key

The one model call is the writer that turns memories into facts, and it is billed to you. Name your provider and the installer asks for the key without showing it:

Terminal window
curl -fsSL https://raw.githubusercontent.com/korely-ai/korely/main/install.sh | KORELY_PROVIDER=gemini sh

Gemini, Scaleway, Mistral, OpenAI and OpenRouter work; Scaleway writes in Europe, in Paris. Without a key the install completes and the dashboard's first screen asks for one (Skip for now works too: memories are stored and searched, and facts arrive when your agents write them).

Installing a particular release

The installer installs the release its own copy carries. To name one, add --version X.Y.Z. The installer checks the files it downloads against checksums it carries only for its own release, so any other release also needs --unverified. sh install.sh --help lists every option.

  • The oldest release it installs is 1.0.9 (since 1.0.22). An older --version stops before anything is downloaded, saying so; it also refuses --build of an older release and a --from-local checkout of one. 1.0.9 is the first release published under the repository's present name: the images before it are under the old name, which the installer does not pull, and 1.0.8 was never published. An older release is installed by hand, as its own README says.
  • Only published releases install. Up to 1.0.21 the published releases are 1.0.9, 1.0.10, 1.0.11, 1.0.17, 1.0.18 and 1.0.21; the Releases page on GitHub is the list to trust. A release's copy of the installer checks only its own release's files, so another --version stops at once, saying to use that release's own install.sh or to add --unverified; with --unverified, a version that was never published stops at the download of its files, asking whether it is a release of the repository.

Stopping, restarting and the database

  • Stopping. When Docker stops Korely, the API gives the requests still running 5 seconds, cancels what is left, and hands back the memories it was writing so the next start picks them up at once (the image's command carries --timeout-graceful-shutdown 5, inside Docker's 10-second stop timeout). If you start the API with a command of your own, add that flag with a value below your stop timeout. See what a restart does to a memory being written.
  • Connect straight to Postgres. DATABASE_URL must not go through PgBouncer, or any pooler, in transaction mode: each process holds a lock on its own database session, and that lock is how another process knows whether the memories it claimed are still being worked. A pooler in transaction mode runs each transaction on whichever session is free, so the lock would not be the process's. The compose file Korely ships connects directly. No pooler has been tested, in either mode.

After the install

  • To stop it, start it again or remove it, use ./korely in that folder. The commands are in the Install guide on GitHub, which also covers a server with your own domain and a certificate.
  • Connect an agent over MCP or the SDK with the key the installer printed: Korely MCP and the SDK. Every write names a user_id or an agent_id (why).
  • Without installing anything, the same code runs as Korely Cloud, with a free plan: the Quickstart.