Skip to content

Quick Start

Get RivetOS running in under 5 minutes. Two paths: Docker (recommended) or bare-metal.


RequirementVersionCheck
Node.js≥ 24node --version
npm≥ 10npm --version
Gitanygit --version
Docker (optional)≥ 24docker --version

Note: npm install automatically builds all packages via postinstall. No separate build step needed.

The rivetos init wizard walks you through everything — deployment target, agent configuration, API keys, channels, and generates your config automatically.

Terminal window
git clone https://github.com/philbert440/rivetOS.git
cd rivetOS
npm install
npx rivetos init

The wizard will:

  1. Detect your environment — Docker available? Proxmox? How much memory?
  2. Choose deployment target — Docker (recommended), Proxmox, or manual
  3. Configure agents — pick a provider, enter your API key, choose a model
  4. Configure channels — Discord, Telegram, voice (Discord voice), terminal, or API-only
  5. Review and deploy — summary of your choices, then one-click deploy

After the wizard completes, your agent is running.


Terminal window
git clone https://github.com/philbert440/rivetOS.git
cd rivetOS
npm install
Terminal window
cp config.example.yaml config.yaml

Edit config.yaml with your settings:

runtime:
workspace: ~/.rivetos/workspace
default_agent: myagent
agents:
myagent:
provider: anthropic
providers:
anthropic:
model: claude-sonnet-4-6
max_tokens: 8192
channels:
discord:
channel_bindings:
"YOUR_CHANNEL_ID": myagent
memory:
postgres:
# Connection string is set via RIVETOS_PG_URL env var
Terminal window
cp .env.example .env

Edit .env:

Terminal window
ANTHROPIC_API_KEY=sk-ant-...
DISCORD_BOT_TOKEN=...
RIVETOS_PG_URL=postgresql://rivetos:rivetos@localhost:5432/rivetos

Security: Never put API keys in config.yaml. Always use .env or environment variables.

The unified Compose stack lives at infra/docker/rivetos/docker-compose.yml. You can either pass -f every time, or set COMPOSE_FILE once:

Terminal window
# (optional) so plain `docker compose ...` finds the unified stack
export COMPOSE_FILE=infra/docker/rivetos/docker-compose.yml
Terminal window
# Build container images from source
npx rivetos build
# Start everything (datahub + agent)
docker compose -f infra/docker/rivetos/docker-compose.yml up -d
# Check status
npx rivetos status
# View logs
npx rivetos logs --follow
Terminal window
# Run diagnostics
npx rivetos doctor
# Run smoke tests
npx rivetos test

Run RivetOS directly on your machine. You’ll need PostgreSQL running separately.

Terminal window
git clone https://github.com/philbert440/rivetOS.git
cd rivetOS
npm install

RivetOS needs PostgreSQL 16+ with the pgvector extension.

Terminal window
# Ubuntu/Debian
sudo apt install postgresql-16 postgresql-16-pgvector
# macOS (Homebrew)
brew install postgresql@16
brew install pgvector
# Create database
createdb rivetos
psql rivetos -c "CREATE EXTENSION IF NOT EXISTS vector;"
Terminal window
cp config.example.yaml config.yaml
cp .env.example .env

Edit both files as described in Option B, steps 2-3.

Terminal window
mkdir -p ~/.rivetos/workspace/memory

Add your workspace files (templates ship under workspace-templates/ in the repo — rivetos init copies them in for you):

FilePurposeRequired?
~/.rivetos/workspace/CORE.mdAgent identity and personalityYes
~/.rivetos/workspace/USER.mdWho the agent is helpingYes
~/.rivetos/workspace/WORKSPACE.mdOperating rules and conventionsYes
~/.rivetos/workspace/MEMORY.mdContext index for the memory systemOptional
~/.rivetos/workspace/CAPABILITIES.mdExtended tool/skill referenceOptional

See the Workspace Files section below for details.

Terminal window
npx rivetos start
Terminal window
# Generate a systemd unit
npx rivetos service init
# Start it
npx rivetos service start

Workspace files are markdown documents injected into the agent’s system prompt. They define who the agent is and how it behaves.

CORE.md — Agent identity, personality, values, and behavioral rules.

# CORE.md — Who You Are
You are a helpful AI assistant named Rivet.
## Working Style
- Be direct and concise
- Show your reasoning
- Ask before making destructive changes

USER.md — Information about the person the agent is helping.

# USER.md — About Your Human
- **Name:** Phil
- **Timezone:** America/New_York
- **Preferences:** TypeScript, Next.js, direct communication

WORKSPACE.md — Operating rules, safety boundaries, and conventions.

# WORKSPACE.md — Operating Rules
## Safety
- Don't delete files without asking
- Don't send emails without approval
- Keep secrets private
## Every Session
1. Read CORE.md, USER.md, WORKSPACE.md
2. Check recent memory files
3. Get to work

MEMORY.md — A lightweight index into the memory system. The agent uses this to know what to search for.

CAPABILITIES.md — Extended reference for tools, skills, and infrastructure. Included in the system prompt for local models where token cost isn’t a concern.

HEARTBEAT.md — Instructions for periodic background tasks. Only injected during heartbeat turns, not regular conversation.

memory/YYYY-MM-DD.md — Daily notes. The agent reads recent daily notes for context continuity between sessions.


Once your agent is running, talk to it through whichever channel you configured:

Discord: Send a message in a bound channel (one listed under channels.discord.channel_bindings). Telegram: Message your bot directly, if you configured channels.telegram.

The agent HTTP channel (POST /api/message) is an mTLS-authenticated endpoint for inter-agent / mesh delegation, not a casual chat API — it expects a { fromAgent, message } envelope over HTTPS with client certs. See Mesh Networking.

In any channel, you can use slash commands:

CommandWhat it does
/stopStop the current turn
/interrupt [message]Stop the current turn and send a new message
/steer [message]Inject guidance into the active turn
/newStart a fresh session (clears conversation history)
/statusShow runtime status
/model [provider] [model]Show or switch the current model
/think [level]Set thinking depth: off, low, medium, high
/reasoningToggle reasoning (thinking) visibility
/toolsToggle tool-call visibility
/contextShow context-window stats
/memoryShow memory system health and stats
/clearClear queued messages
/helpList available commands

Terminal window
# Setup
rivetos init # Interactive setup wizard
rivetos update # Pull latest, rebuild, re-symlink (add --mesh or --bare-metal)
rivetos doctor # Health check (config, providers, connectivity)
# Runtime
rivetos start [--config <path>] # Start the runtime
rivetos stop # Stop the running instance
rivetos status # Show runtime status and metrics
# Configuration
rivetos config show|validate|edit|path
rivetos config init # Generate a default config.yaml
# Agents & models
rivetos agent list|add|remove
rivetos model # Show providers + current models
rivetos model <provider> <model> # Switch default model (persistent)
# Providers
rivetos <provider> status # anthropic | xai | google | ollama
rivetos ollama models # List local Ollama models
# Mesh (multi-node)
rivetos mesh list|ping|status
rivetos mesh join <host> # Join an existing mesh via a seed node
rivetos keys rotate|list|status # Manage mesh keys
# Memory & database
rivetos memory queue-status # Show graphile-worker job queue
rivetos memory backfill-tool-synth # Enqueue historical tool calls for synthesis
rivetos db migrate|status # Run / inspect schema migrations
# Containers & service
rivetos build # Build container images from source
rivetos service init|start|stop|restart|status|logs
# Introspection
rivetos logs [--lines --follow --since --grep]
rivetos test [--quick] # Smoke tests (config, provider, memory, tools)
rivetos plugins list
rivetos skills list


Agent doesn’t respond?

  • Run npx rivetos doctor to check connectivity
  • Check npx rivetos logs for errors
  • Verify your API key is set in .env

Docker containers won’t start?

  • Run docker compose -f infra/docker/rivetos/docker-compose.yml logs datahub to check PostgreSQL
  • Ensure port 5432 isn’t already in use
  • Try npx rivetos build to rebuild images

Memory search returns nothing?

  • Check PostgreSQL connection: npx rivetos test --quick
  • Embeddings may still be processing — check npx rivetos status for queue depth

Can’t find config?

  • Default location: ./config.yaml or ~/.rivetos/config.yaml
  • Override with: npx rivetos start --config /path/to/config.yaml