Getting started

What is what

cradle-server, the cradle CLI and the web console — the parts of the system, where each one is installed, and what you do not need to install at all.

Before installing anything, it helps to tell three things apart. The names look alike, but the roles differ — and they go on different machines.

The three components

What it isWhere it livesInstalled from
cradle-serverThe daemon. Holds the SQLite database, the models, RAG and the channels (Telegram, widget, HTTP API). The only component that actually does workon the serverthe cradle-cli package
cradleA thin HTTP client. It has no database and loads no models — every command is a call to some server's /admin/* namespaceanywhere: on the server and on your laptopthe same cradle-cli package

The package is called cradle-cli, but it ships both binaries — the daemon and the client. The name is historical: it comes from the prefix in the downloads bucket.

Why the CLI ends up on the server too

cradle is not a "client half" of some app. It is the tool for driving a server from anywhere: on the server itself it talks to localhost:31416, from a laptop to http://<server-address>:31416. The commands are identical.

It is also how deployment happens: cradle server init is not data work but an operator command that creates the database, the first API key and the systemd unit. That is why the CLI is needed on the server from the start.

What is not connected to what

The server and the console are not parts of one installation. The console is a web page; the server runs wherever you put it:

The usual sequence

  1. On the server (once) — the installer puts cradle-server and cradle in place, creates the database and issues the first admin key.
  2. Start the daemon — through systemd (with root) or by hand with cradle-server.
  3. Connect a client — either:
    • cradle login --url http://<server-address>:31416 --key ck_live_..., then cradle agents, cradle models pull, cradle health;
    • or the web console on opencradle.ai if you prefer a GUI.

Step 3 works the same from the server and from a laptop — one command, different --url.