Skip to main content

lium signup

Create a Lium account from the terminal and store the API key it mints.

Use this when you have no account yet. lium init authenticates an account that already exists — it cannot create one.

lium signup --email you@example.com

Options​

FlagEffect
--email ADDRESSYour real email address — the confirmation link is sent there. Required.
--name NAMEDisplay name (defaults to the local part of the email)
--password PASSWORDAccount password. One is generated when you omit it.
--jsonPrint machine-readable JSON

Prefer the LIUM_SIGNUP_PASSWORD environment variable over --password: a flag value is left behind in your shell history and in ps output.

What it does​

  1. Creates the account.
  2. Writes the minted API key to ~/.lium/config.ini under api.api_key.
  3. Sets up an SSH key locally: picks the first of ~/.ssh/id_ed25519, id_rsa, id_ecdsa that exists, generates id_ed25519 when none does, and records the path in the config. Nothing is uploaded yet — the public key reaches your Lium account on the first lium up.

After it finishes, lium ls and lium up work with no further setup. The command prints the password — it is your login at lium.io and is not stored anywhere else.

Confirm your email before renting​

Renting stays blocked until you click the link in the "Please confirm your email" message. The separate "Welcome to Celium!" message carries no link.

When an account already exists locally​

lium signup refuses to run while an API key is already in effect, rather than creating a second account you cannot reach. Where the key comes from decides how to clear it — the error message names the right one:

# Key stored in ~/.lium/config.ini
lium config unset api.api_key

# Key exported in the environment — `lium config unset` will not help here
unset LIUM_API_KEY

lium signup --email you@example.com

Examples​

lium signup --email ada@example.com
lium signup --email ada@example.com --name Ada
lium signup --email ada@example.com --json
LIUM_SIGNUP_PASSWORD=... lium signup --email ada@example.com

--json output:

{
"api_key": "sk_...",
"email": "ada@example.com",
"next_steps": ["...", "...", "..."],
"password": "generated-or-supplied",
"signup_credit_granted": true,
"ssh_key_configured": true
}

signup_credit_granted answers whether the signup credit landed: true granted, false not granted, null not reported by the backend — read lium balance --json in that case.

If the command fails after the account was created, the error still reports the email and password, so you can log in at lium.io and copy an API key from the dashboard.

See also​