Titentiten.devꦠꦶꦠꦺꦤ꧀
v0.10.0 · stableGitHub
DocsStart hereInstall Titen

Install Titen

Install the Titen CLI on macOS, Linux, WSL, or Windows, or add the SDK with your JavaScript package manager.

macOS · Linux · WSL · WindowsBun 1.2+titen-memory 0.10.0current user only

macOS, Linux, and WSL

The installer adds Bun when it is missing or older than 1.2, then installs the titen command for your current user. It does not use sudo, start a service, or create a Titen database.

curl -fsSL https://titen.dev/install.sh | bash

The default installer succeeds only when titen resolves by name after the install. If Bun’s global bin directory is not on PATH, it prints a predictable TITEN_BIN=/absolute/path/to/titen line and exits non-zero instead of reporting a ready CLI that another process cannot start.

Automation that intentionally invokes the absolute binary can request only that path on stdout:

TITEN_BIN="$(curl -fsSL https://titen.dev/install.sh | bash -s -- --print-path)"
"$TITEN_BIN" --version

Installation progress and errors stay on stderr in --print-path mode. The installer does not edit a shell profile; add the printed directory to PATH yourself only when command-by-name use is desired.

To review it first:

curl -fsSL https://titen.dev/install.sh -o install.sh
less install.sh
bash install.sh

Windows

Run this in Windows PowerShell 5.1 or PowerShell 7. The installer does not need Administrator access and does not change your execution policy.

irm https://titen.dev/install.ps1 | iex

To review it first:

irm https://titen.dev/install.ps1 -OutFile install.ps1
Get-Content .\install.ps1
& .\install.ps1

Pin a version

Installers accept latest or one exact stable version. A pin never accepts a range or prerelease by accident.

curl -fsSL https://titen.dev/install.sh | bash -s -- --version 0.5.7
& ([scriptblock]::Create((irm https://titen.dev/install.ps1))) -Version 0.5.7

Both installers finish by running titen --version. Installing the CLI alone does not bootstrap an organization, print an API key, or start a server.

Package managers

The npm package is named titen-memory; the executable is named titen. Bun must be on PATH for every one of these commands: the published binary is a Bun program, so on a Node-only machine it exits with titen: error: bun was not found on PATH. The install.sh and install.ps1 above add Bun when it is missing; a package manager does not.

Use Bun npm pnpm
Global CLI bun add -g titen-memory@latest npm i -g titen-memory@latest pnpm add -g titen-memory@latest
One command bunx --bun titen-memory@latest --version npx titen-memory@latest --version pnpm dlx titen-memory@latest --version
Project SDK bun add titen-memory npm i titen-memory pnpm add titen-memory

Yarn can install the SDK with yarn add titen-memory. Its Node-owned yarn dlx runner cannot execute Titen’s Bun TypeScript CLI, so use bunx --bun for a one-off CLI command instead.

Update or remove

Rerun the installer to update to npm latest, or pass an exact version to move to that release. Remove the package with the manager that installed it:

bun remove -g titen-memory
# npm uninstall -g titen-memory
# pnpm remove -g titen-memory

Removing the package does not delete a Titen database, configuration, backup, or API key. Those files belong to you and remain where you created them.

Start Titen

There is nothing left to configure. With neither TITEN_MCP_URL nor TITEN_API_KEY in the environment, titen mcp opens or creates ~/.titen/memory.db, provisions its own organization, workspace, project, and owner as real rows, and speaks MCP over stdio in the same process:

titen mcp

No key to paste, no HTTP hop, nothing sent off the machine. Retrieval is lexical FTS in this mode. Point an agent host at it with the agent integration guide.

Or run the service over HTTP

Several agents, several machines, the REST API, or the dashboard need the served path instead. Create the first organization once, save the printed key, then run the local service:

titen bootstrap --org "My Org"
titen serve

Both commands resolve the same user-scoped ~/.titen/service.db from every working directory. bootstrap prints the absolute path it created; serve refuses a missing store instead of starting an empty database that rejects the key. Existing ./titen.db stores from releases before 0.8.0 remain usable with an explicit absolute --db on every service command and are never moved automatically.

Start the packaged dashboard

The npm package includes the dashboard build and same-origin adapter from that exact release. With the API running on loopback, start the dashboard on its separate loopback port:

TITEN_DASHBOARD_LIVE=true \
TITEN_DASHBOARD_AUTH=session \
TITEN_API_URL=http://127.0.0.1:8787 \
titen dashboard

Open http://127.0.0.1:4322/dashboard/. For remote access, keep both processes on loopback and use the documented private HTTPS ingress; the installer never publishes either listener or stores dashboard credentials.

Continue with the Quickstart to check readiness. Setting TITEN_MCP_URL and TITEN_API_KEY then switches titen mcp from the local store to that instance; setting exactly one of the two is an error rather than a guess.

↑↓ navigate↵ open