Hippocortex — Billing & Pricing

Version: 2.0.0 Date: 2026-03-25


1. Pricing Tiers

FreeProUnlimitedTeam
Price€0/mo€9.99/mo€29.99/mo€299/mo
Captures/month5,00025,000UnlimitedUnlimited
Synthesize/day755,000UnlimitedUnlimited
Learn/day750UnlimitedUnlimited
Agents3UnlimitedUnlimitedUnlimited
Collective Brain—✓✓✓
Vault—✓✓✓
Advanced Analytics——✓✓
Seats111Up to 10
Orgs & RBAC———✓
Namespaces———✓
Audit Logs———✓
Lifecycle Policies———✓
Behavioral Intelligence———✓
API Rate LimitsStandardStandardHigherHigher
SupportTicketPriority Ticket (24h)Priority Ticket (12h)Priority Ticket (12h)
StatusAvailableAvailableAvailableComing Soon

2. Feature Comparison

FeatureFreeProUnlimitedTeam
Event Capture✓✓✓✓
Memory Compilation✓✓✓✓
Context Synthesis✓✓✓✓
Knowledge Artifacts✓✓✓✓
Gateway✓✓✓✓
SDK (JS + Python)✓✓✓✓
OpenClaw Plugin✓✓✓✓
Collective Brain—✓✓✓
Vault (Encrypted)—✓✓✓
Secret Detection—✓✓✓
Advanced Analytics——✓✓
Organizations & RBAC———✓
Memory Namespaces———✓
Policy Engine———✓
Audit Logging———✓
Lifecycle Policies———✓
Behavioral Intelligence———✓

3. Billing Unit: Events

An event is a single capture() call that passes the dedup guard and is ingested into the memory pipeline.

Counted as events:

  • Messages, tool calls, tool results, file edits, test runs, command executions, browser actions, API results
  • Each event in a batch counts individually

NOT counted:

  • Duplicate events (rejected by dedup guard)
  • Failed ingestion attempts
  • learn() calls (counted separately, included in plan)
  • synthesize() calls (counted separately, included in plan)
  • GET /artifacts or GET /metrics calls (read-only)
  • Vault queries and reveals (read-only)

4. Metering Architecture

┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│   Capture    │────▶│   Redis      │────▶│   Billing    │
│   Service    │     │   Counter    │     │   Service    │
│              │     │   (atomic)   │     │   (hourly    │
│  increment   │     │              │     │    flush)    │
│  on ingest   │     │  per-tenant  │     │              │
└──────────────┘     └──────────────┘     └──────┬───────┘
                                                  │
                                           ┌──────▼───────┐
                                           │   Postgres   │
                                           │   usage_     │
                                           │   counters   │
                                           └──────┬───────┘
                                                  │
                                           ┌──────▼───────┐
                                           │   Stripe     │
                                           │   (monthly   │
                                           │    invoice)  │
                                           └──────────────┘

4.1 Real-Time Counting

# Redis key pattern
hippocortex:usage:{tenant_id}:{yyyy-mm}:events → INCR on each ingest
hippocortex:usage:{tenant_id}:{yyyy-mm}:syntheses → INCR on each synthesis
hippocortex:usage:{tenant_id}:{yyyy-mm}:compilations → INCR on each learn
hippocortex:usage:{tenant_id}:daily:{yyyy-mm-dd}:events → INCR (for daily caps)

4.2 Hourly Flush

A billing worker flushes Redis counters to PostgreSQL hourly:

INSERT INTO usage_records (tenant_id, period_hour, events, syntheses, compilations)
VALUES ($1, date_trunc('hour', now()), $2, $3, $4)
ON CONFLICT (tenant_id, period_hour)
DO UPDATE SET
    events = usage_records.events + EXCLUDED.events,
    syntheses = usage_records.syntheses + EXCLUDED.syntheses,
    compilations = usage_records.compilations + EXCLUDED.compilations;

4.3 Quota Enforcement

On each capture request:
1. INCR Redis counter → get current count
2. If count > plan.eventsLimit:
   - Free tier: Return 429 quota_exceeded
   - Pro/Unlimited: Return 429 quota_exceeded (hard cap)
   - If count == 80% of limit: Queue webhook "quota.warning"
   - If count == 100% of limit: Queue webhook "quota.exceeded"

5. Stripe Integration

5.1 Products & Prices

Products:
  hippocortex_pro:
    price: €9.99/mo (recurring)
    metadata: { events_limit: 25000, tier: "pro" }

  hippocortex_unlimited:
    price: €29.99/mo (recurring)
    metadata: { events_limit: -1, tier: "unlimited" }

  hippocortex_team:
    price: €299/mo (recurring)
    metadata: { events_limit: -1, tier: "team", seats: 10 }

5.2 Billing Cycle

Monthly cycle (subscription anniversary date):
1. Day 1: Reset event counters
2. Day 1: Charge base subscription
3. Invoice sent via Stripe

5.3 Upgrade/Downgrade

  • Upgrade: Immediate. Prorated charge for remaining days. New limits apply instantly.
  • Downgrade: End of current billing period.
  • Cancel: End of current billing period. Data retained for 30 days, then purged.

6. Free Tier Limits

The free tier is designed for evaluation and prototyping:

ResourceLimitEnforcement
Captures5,000/moHard cap (429 after)
Synthesize75/dayHard cap
Learn7/dayHard cap
Agents3Hard cap
Storage30-day retentionAuto-purge
DashboardBasic metrics onlyFeature gate

Free tier purpose: Get developers to experience the capture → learn → synthesize loop. Convert to Pro when they need production volume or advanced features.


7. Usage Dashboard

The billing section of the developer dashboard shows:

┌────────────────────────────────────────────────────────┐
│  Current Period: Mar 1 – Mar 31, 2026                  │
│  Plan: Pro (€9.99/mo)                                  │
│                                                        │
│  Captures:   ████████░░░░░░░░░░░░  18,500 / 25,000    │
│  Synthesize: ████░░░░░░░░░░░░░░░░   2,100 / 5,000/day │
│  Learn:      ██░░░░░░░░░░░░░░░░░░      12 / 50/day    │
│                                                        │
│  Next billing date: Apr 1, 2026                        │
│                                                        │
│  [View detailed usage] [Download invoice] [Upgrade]    │
└────────────────────────────────────────────────────────┘

8. Billing Data Model

CREATE TABLE subscriptions (
    id              UUID PRIMARY KEY,
    tenant_id       UUID NOT NULL REFERENCES tenants(id),
    stripe_sub_id   TEXT NOT NULL,
    plan            TEXT NOT NULL,           -- free, pro, unlimited, team
    status          TEXT NOT NULL,           -- active, past_due, canceled
    current_period_start TIMESTAMPTZ NOT NULL,
    current_period_end   TIMESTAMPTZ NOT NULL,
    created_at      TIMESTAMPTZ NOT NULL,
    canceled_at     TIMESTAMPTZ
);

CREATE TABLE usage_records (
    tenant_id       UUID NOT NULL,
    period_hour     TIMESTAMPTZ NOT NULL,
    events          BIGINT DEFAULT 0,
    syntheses       BIGINT DEFAULT 0,
    compilations    BIGINT DEFAULT 0,
    PRIMARY KEY (tenant_id, period_hour)
);

CREATE TABLE invoices (
    id              UUID PRIMARY KEY,
    tenant_id       UUID NOT NULL,
    stripe_inv_id   TEXT NOT NULL,
    period_start    TIMESTAMPTZ NOT NULL,
    period_end      TIMESTAMPTZ NOT NULL,
    base_amount     INTEGER NOT NULL,       -- cents (EUR)
    total_amount    INTEGER NOT NULL,       -- cents (EUR)
    status          TEXT NOT NULL,           -- draft, open, paid, void
    created_at      TIMESTAMPTZ NOT NULL
);