Install guide

From your key
to your first project.

Three steps: get your key, run one command, claim your installation.

Lyriks runs on your own machine, in containers. The installer checks what is there, names anything missing and asks for your consent before touching it: nothing is installed silently, and re-running it is always safe.

Before you start

What you need

  • A 64-bit x86 machine (Intel or AMD). Apple Silicon works through Rosetta: the installer requests the amd64 images for you.
  • 2 CPU cores, 4 GB of RAM and 20 GB of free disk for a Community install.
  • Docker. Missing? The command offers to install it and waits for your consent. On Windows that means WSL2 and Docker Desktop, offered the same way.
  • Outbound HTTPS to registry.lyriks.io, which is where the appliance images come from. This is the one network dependency, and the installer probes it before pulling anything.
  • Your licence key, which the next section is about.

Everything else (the database included) ships inside the containers. Nothing is written outside ~/lyriks and Docker volumes.

Step 1

Get your key

Ask for a free Community licence key on get.lyriks.io: an address is all it takes. The mail comes from support@lyriks.io, usually within a minute, and carries the key, the command below and a link back to this page. Keep the key private, as you would a password.

It goes to that address and to no other, because the key names it: your installation later asks for the pair and checks one against the other, so receiving the mail is what makes the installation yours rather than someone else's.

Asking twice is harmless. The same address always receives the same key. Nothing is duplicated, and no second licence is ever issued.

If the email does not arrive

Give it five minutes first: the mail leaves the moment you submit the form, but a relay can hold it briefly. After that, work down this list. It is in the order these things actually happen.

  1. Search the whole mailbox for lyriksNot just the inbox. A mail carrying a licence key and a shell command is exactly what a filter puts aside: look in Spam and Junk, and in the places that hide mail without telling you, like Gmail's Promotions tab or Outlook's Other tab.
  2. Re-read the address you typedOne wrong letter and the key went to a mailbox that is not yours. The form refuses a domain that can receive no mail at all, and offers a correction for the usual slips, but ada@compagny.com is a perfectly deliverable address that simply is not yours. Ask again with the right one.
  3. Ask again from the formThe same address always receives the same key: a second request re-sends it, and never issues a second licence. Three sends an hour per address is the ceiling; past it the form answers too many requests and the wait is an hour.
  4. Allow the sender, then ask againAdd support@lyriks.io to your contacts or to your allow list. On a company mailbox that is often the whole story: the mail was quarantined by a rule you never see, and whoever runs your mail can release it.
  5. Try an address you own personallyIf a corporate filter is eating it, a personal address proves it in a minute. Choose it deliberately: the licence names the address, and changing it later means asking us to re-issue the key.
  6. Write to us, and we send it by handMail support@lyriks.io, from the address you asked with or quoting it. A person reads that mailbox: we can see whether the key was issued and whether the send failed, and re-send it ourselves.
Installing while you wait is fine. The command needs no key, and the appliance comes up and waits. What it cannot do is let anyone in: a fresh installation is claimed with the address and the key together, so a Community install stays closed until the mail lands. /activate, inside the app, is a later thing: it is where an administrator replaces or renews a key on an installation that is already claimed.
Step 2

Run one command

No folder to make, no flags to pass, no account to create. Run it from wherever your terminal opens: the installer creates its own folder, ~/lyriks, in your home directory and installs everything there. Pick your system.

In a terminal:

$ curl -fsSL https://get.lyriks.io | sh

Run it as yourself, not with sudo: it asks for your password itself, only for the steps that need it (installing Docker, letting your user use it, a kit directory outside your home).

Docker missing? It is proposed, and the official Docker install script runs only after you consent (it will ask for your password). On macOS the same question installs Docker Desktop: through Homebrew when you have it, otherwise straight from Docker's own installer. A Mac on macOS 12 or 13 gets the last Docker Desktop that still runs there, installed the same way.

In a normal PowerShell window, not an administrator one: Lyriks must land in your own session, next to the browser you will use it from.

> irm https://get.lyriks.io/windows | iex

Lyriks runs Linux containers, so Windows needs WSL2 and Docker Desktop. Both are proposed (through winget) and each waits for your consent. Installing WSL needs one administrator window and a reboot, after which you run the command again from a normal window. You never have to touch WSL yourself: the script hands over to the Linux installer inside your distribution and Lyriks ends up at ~/lyriks in there, used from your Windows browser.

The one thing it asks you. Before downloading anything, the installer offers to take your licence key if you already have it. Press Enter to skip: the claim screen asks for the key either way, so nothing later depends on answering here.

What the command does, in order

  1. Checks the machineArchitecture, operating system, Docker and Docker Compose. Nothing is downloaded before the checks pass.
  2. Proposes what is missingEach install is named and waits for your consent. Prefer to do it your own way? Decline, install it, run the command again.
  3. Fetches the appliance and installs itThe kit lands in ~/lyriks, then runs its own doctor and install: containers, database, everything.
  4. Proves the install worksA smoke test runs last. Success is announced only after it passes, so a green message means a working appliance.
  5. Tells you where to goYour Lyriks is at http://localhost:3000, ready to be claimed.
Want to see it first? Both scripts are plain text, here: install.sh and install.ps1. And --dry-run prints every command the installer would run, without running any of them.

Useful variants

  • --yes consents to every proposed install up front (Windows: $env:LYRIKS_YES = '1' before the command).
  • --port 8080 serves Lyriks on another port (Windows: $env:LYRIKS_PORT = '8080').
  • --license-key lyk_... activates the licence during the install (Windows: $env:LYRIKS_LICENSE_KEY = 'lyk_...'). Optional, and it does not shorten the claim: that screen asks for your address and your key either way.
  • --reinstall destroys an existing install, data included, then installs fresh. Without it, re-running repairs in place and keeps your data.

Flags go after sh -s --, like this: curl -fsSL https://get.lyriks.io | sh -s -- --yes --port 8080.

Step 3

Claim your installation

The installer creates no account and asks for no identity, on purpose: the person who owns the licence is the person who claims the box, and they prove it themselves. So a fresh Lyriks has no user at all until you open it.

Open http://localhost:3000. Under Claim this installation:

  1. Your address and your keyThe address the licence was issued to, which is the one that received the mail, and the key itself. Both are checked against each other, and the key never leaves the machine.
  2. Your passwordChoose it now. This creates the administrator account for that address, signs you in, and the installation is claimed: the claim window closes for good.
Claim it before anyone else can. On a machine others can reach, the first person to open a fresh install is the one who claims it. The licence pair is what stops them doing so under their own address, so do this step right after installing.
Day one

Once you are in

You land in your workspace, ready for a first project. Two things worth knowing straight away.

Connect your AI client

Lyriks speaks MCP, so your assistant can read and author your projects directly instead of you copying things between windows. It is optional and never a dependency: Lyriks works exactly the same without it.

Register it once for your machine, not for one folder. Most clients default to the current project, and the server then disappears the moment you open another one.

Clients with a command

$ claude mcp add --scope user --transport http lyriks http://localhost:3000/mcp

Claude Code

$ codex mcp add lyriks --url http://localhost:3000/mcp

OpenAI Codex

$ gemini mcp add --transport http lyriks http://localhost:3000/mcp

Gemini CLI

$ code --add-mcp '{"name":"lyriks","type":"http","url":"http://localhost:3000/mcp"}'

VS Code and GitHub Copilot

Clients configured by file

Add the server to the file your client reads, then restart it.

  • Cursor, ~/.cursor/mcp.json:
    { "mcpServers": { "lyriks": { "url": "http://localhost:3000/mcp" } } }
  • Antigravity, ~/.gemini/config/mcp_config.json:
    { "mcpServers": { "lyriks": { "serverUrl": "http://localhost:3000/mcp" } } }
  • Windsurf, ~/.codeium/windsurf/mcp_config.json: same shape as Antigravity.
Any other client. Anything that speaks MCP over HTTP takes the same URL, http://localhost:3000/mcp. A client that only drives local servers goes through the mcp-remote bridge: npx -y mcp-remote http://localhost:3000/mcp.

Manage the install

Everything happens from the kit directory, ~/lyriks (inside your WSL distribution on Windows):

  • ./lyriks status shows what is running, start and stop do what they say.
  • ./lyriks update moves to the current release, keeping your data, and ./lyriks rollback steps back to the previous one.
  • ./lyriks backup create takes a backup you can restore later.
  • ./lyriks destroy --confirm removes the stack and its data. That one is final.

After a reboot

Nothing to launch. Lyriks is set to restart with Docker, so the whole appliance comes back on its own. The only thing that has to start is Docker, and only Linux does that for you:

  • macOS: open Docker Desktop (Cmd+Space, type Docker, Enter, or open -a Docker in Terminal). It is ready when the whale in the menu bar, top right, stops animating.
  • Windows: open Docker Desktop from the Start menu, wait for the whale in the notification area to settle.
  • Linux: sudo systemctl enable --now docker, once, and Docker starts with the machine from then on.

On macOS and Windows, Docker Desktop, Settings, General, Start Docker Desktop when you sign in makes even that disappear. Then reopen http://localhost:3000: same account, same password, same data.

Lyriks is not inside the Docker Desktop window. Docker Desktop runs the engine; the product is the browser tab. Launching it and seeing "nothing happen" is what success looks like, and the containers need a minute, longer on an Apple Silicon Mac, before the page answers.
When it goes wrong

The usual suspects

I restarted my machine and Lyriks does not answer any more

Start Docker: it is what your reboot switched off, and Lyriks restarts by itself right after. On a Mac, press Cmd+Space, type Docker, press Enter, and watch the whale icon in the menu bar at the top right until it stops animating. On Windows, open Docker Desktop from the Start menu. Then reload http://localhost:3000, giving it a minute. Nothing appears inside the Docker Desktop window itself, and nothing should: it runs the engine, the app is the browser tab. Details in After a reboot.

Still nothing once Docker is running? The stack was stopped at some point. From Terminal, cd ~/lyriks && ./lyriks up, then ./lyriks status.

The email with my key never arrived

Search the whole mailbox for lyriks, spam and the hidden tabs included, then ask again on get.lyriks.io: the same address always receives the same key, so a second request costs nothing. If your company filters mail hard, an address you own personally settles it in a minute.

Still nothing? Write to support@lyriks.io and we send the key by hand. The full list, cause by cause, is in If the email does not arrive.

The claim screen refuses my key

It says which of the four it is, and each has its own fix:

  • Issued to a different address. The key and the address you typed do not name the same person. Use the address the mail was sent to, spelled exactly as it appears there. Want a different address on the licence? Ask again on get.lyriks.io with that one, and claim with the key that comes back.
  • Not valid for this installation. Nearly always a copy that lost characters. Copy the key from the mail whole, from lyk_ to the last character, with no space before or after.
  • The system clock is set in the past. The machine's date is wrong, so a valid key reads as not yet issued. Correct the date and time, then try again.
  • Issued under a signing key we have retired, or too old to name an address. Both mean the key is genuine but superseded: write to support@lyriks.io and we re-issue it.

Several wrong tries in a row are throttled for a few minutes. That is the claim screen protecting itself, not your key being refused: wait, then try again.

Docker is installed but the command says it cannot reach it

The daemon is not running, or your user is not allowed to use it yet. The installer tells the two apart: it starts Docker for you, or adds you to the docker group and bridges the rest of the run (with sg docker, or sudo where that cannot work). Group membership takes effect at your next login, so open a new shell before running ./lyriks by hand. If Docker itself is stopped: sudo systemctl enable --now docker. On macOS and Windows, start Docker Desktop and wait for its whale icon to settle.

Windows: it asks for WSL, or nothing appears in the browser

Say yes to WSL, reboot when asked, let Ubuntu finish its first-run setup, then run the command again. Use a normal PowerShell window, never an elevated one: an elevated install lands in the administrator's session, invisible from your own browser. If Docker Desktop is running but the distribution cannot see it, enable it under Settings, Resources, WSL integration.

The registry is unreachable

The installer needs outbound HTTPS to registry.lyriks.io. Behind a corporate proxy or a captive portal, that is usually what fails. Authorise the host, or configure Docker's proxy settings, then run the command again.

Something failed halfway

Run the same command again. Every step reconciles, your data lives in Docker volumes and is preserved, and a repair is the default. Use --reinstall only when you truly want to start from zero, data included.

I installed without a key

Nothing is lost and nothing has to be reinstalled: the appliance is running and waiting to be claimed. What it will not do is open, because claiming asks for your address and your key together. Get the key on get.lyriks.io, it takes a minute, then claim the install that is already there.

Not arriving? If the email does not arrive walks the causes.

Still stuck

Reply to the email that carried your key: it reaches us. No email to reply to? Write to support@lyriks.io, which is the same mailbox and is read by a person. From inside Lyriks, the Leave us feedback button in the header files the same thing with your versions attached.

No key yet?

The Community licence is free, never expires and covers one operator seat. An email address is the whole form, and the key arrives with the command that installs Lyriks.

Get your key See what Lyriks does