# Current Platform Totals — Single Source of Truth

> **This is the authoritative count for VisionClaw Agent.** Every other doc
> (README, SETUP, FORK-SETUP, ROADMAP, CONTRIBUTING, GitHub repo description)
> must agree with the numbers here. If you find a mismatch, fix the other doc
> — not this one.
>
> **Auto-refresh:** run `npx tsx scripts/refresh-totals.ts` to regenerate
> this file from live registries.

**Last verified:** 2026-05-21 (auto-generated by `scripts/refresh-totals.ts`)
**Verification method:** Live runtime counts from the production database
plus source-tree grep against `server/` and `shared/schema.ts`.

---

## Authoritative Counts

| Metric | Value | How it's verified |
|---|---|---|
| **AI agent personas (active)** | **16** | `SELECT count(*) FROM personas WHERE is_active=true` |
| **Built-in tools** | **361** | `rg "registerTool(...)" server/ \| sort -u \| wc -l` |
| **Skills (DB seeded)** | **62** | `SELECT count(*) FROM skills` |
| **Skills (total incl. .agents/skills/)** | **66** | DB count + 4 platform agent skills not yet seeded |
| **Database tables (declared)** | **140** | `rg -c "= pgTable(" shared/schema.ts` |
| **Database tables (live in `public` schema)** | **177** | `SELECT count(*) FROM information_schema.tables WHERE table_schema='public'` |
| **Governance rules** | **41** | `SELECT count(*) FROM governance_rules` |
| **Production indexes (non-PK)** | **335** | `SELECT count(*) FROM pg_indexes WHERE schemaname='public' AND indexname NOT LIKE '%_pkey'` |
| **AI providers** | **6** | OpenAI, Anthropic, Google, xAI, OpenRouter, Perplexity |
| **AI models (core registry)** | **36 curated** | `MODEL_REGISTRY.length` in `server/providers.ts` |
| **AI models (daily catalog discovery)** | **1000+** | Nightly OpenRouter scanner (`server/model-catalog.ts`) |

---

## Why the schema-declared vs. live-DB delta exists

The HyperAgent review of 2026-05-06 flagged the historical confusion between
`shared/schema.ts` declarations and live database table count. To remove
ambiguity:

- **140 declared** — auditable, version-controlled,
  type-safe Drizzle schema in `shared/schema.ts`. This is what `db:push`
  manages and what `tests/security/` locks down.
- **177 live** — includes the four externally-managed Stripe
  Sync mirror tables (`stripe.accounts/products/prices/payment_intents`),
  internal pgvector tables, and historical tables not yet pruned.

Use the declared number for code reviews and schema audits. Use the live
number for ops/observability. Headline marketing copy may round to a single
combined figure as long as it stays within these bounds.

---

## How to keep this current

1. After any release that adds tools/skills/tables/personas, run
   `npx tsx scripts/refresh-totals.ts`.
2. The `Auto Git Push` workflow runs the refresh on every quiet-window
   commit, so the file stays self-consistent within ~90s of any change.
3. The public mirror pulls this file through unchanged. Reference it in
   `README-PUBLIC.md` (link, not hardcoded numbers).

_Re-run with `--check` in CI to gate that the doc is up to date._
