How it fits together
- Steward — runs in your VPC. Handles all LLM traffic. Writes bodies to your bucket. Reports metadata to Butler.
- Butler + dashboard — runs in Majordomo’s cloud. Backs the web UI, manages API keys, dispatches replay and eval jobs. Never receives prompt content.
What you need
- Docker (or Kubernetes) in your VPC
- PostgreSQL 14+ (not bundled — use RDS, Cloud SQL, or self-managed)
- An S3 bucket (AWS) or GCS bucket (GCP) for body storage
- A Majordomo Enterprise account
Setup
This section covers running Steward in your VPC with Postgres and optional S3/GCS body storage.Prerequisites
- Docker (or Kubernetes)
- PostgreSQL 14+
- Optional: S3 or GCS bucket for body storage
- Majordomo Enterprise account and a Steward token (
mdm_st_...)
1) Build or pull the image
From source:2) Configure environment
Set the minimum required environment. You can pass these viadocker run -e or your orchestrator.
LOG_LEVEL, PRICING_REMOTE_URL, PRICING_ALIASES_FILE, provider *_BASE_URLs.
3) Initialize the database
4) Register with Butler
Create a Steward token in the Majordomo dashboard or via the CLI (majordomo stewards create --name "prod"). The token has the format mdm_st_... and is shown once at creation time — store it in your secrets manager. Then:
5) Run Steward
6) Configure body storage (optional but recommended)
In the Web dashboard, set up Cloud Body Storage at the Personal or Organization scope. Steward will upload request/response bodies there; Majordomo receives metadata only.7) Verify
Point your SDK at the Steward and send a test request withX-Majordomo-Key. The request should appear in the dashboard with tokens, cost, and latency.
Notes
- See Request Headers for tagging and provider override options.
What gets logged where
| Data | Destination | Who controls it |
|---|---|---|
| Prompt content | Your S3 / GCS bucket | You |
| Completion content | Your S3 / GCS bucket | You |
| Token counts, cost, latency | Majordomo Cloud | Majordomo |
| Provider API keys | Your Steward’s Postgres, encrypted at rest | You |