| Operation | Requests | Tokens | Cost |
|---|---|---|---|
| {{ op.operation }} | {{ op.requests.toLocaleString() }} | {{ op.total_tokens.toLocaleString() }} | ${{ op.cost_usd.toFixed(4) }} |
| No activity yet — make your first chat call! | |||
| ID | Name | User | Stage | Trust | Friendship | Created |
|---|---|---|---|---|---|---|
{{ c.id }} |
{{ c.name }} | {{ c.external_id }} |
{{ c.stage }} | {{ c.trust.toFixed(1) }}/10 | {{ c.friendship.toFixed(1) }}/10 | {{ shortDate(c.created_at) }} |
| No characters yet. | ||||||
Pre-paid credit covers overage past your monthly quota. Charged once, no recurring.
Change card, view invoices, cancel — Stripe-hosted.
| Date | Kind | Amount | Description | Invoice |
|---|---|---|---|---|
| {{ shortDate(r.created_at) }} | {{ r.kind }} | {{ r.amount_eur < 0 ? '-' : '+' }}€{{ Math.abs(r.amount_eur).toFixed(4) }} | {{ r.description }} | — |
| No payment activity yet. | ||||
Edit JSON. Saved on Apply.
{{ flagsHelp }}
| Label | Key | Created | Active | |
|---|---|---|---|---|
| {{ k.label || '—' }} | {{ k.key }} |
{{ shortDate(k.created_at) }} | {{ k.is_active ? '✓' : '—' }} |
Tenant gate is off — even granted consent won't activate intimate mode.
{{ pgEditReadonlyJson }}
| Tenant | Plan | Balance | 30d cost | vs prev 30d | Joined | |
|---|---|---|---|---|---|---|
| {{ u.email }} | {{ u.tenant_name }} | {{ u.plan }} | €{{ u.balance_eur.toFixed(2) }} | ${{ u.cost_30d_usd.toFixed(4) }} | ↑ ↓ → {{ u.delta_pct >= 0 ? '+' : '' }}{{ u.delta_pct.toFixed(1) }}% | {{ shortDate(u.joined_at) }} |
No registered admins yet.
Total revenue: €{{ adminUsers.totals.revenue_eur.toFixed(2) }} · LLM cost (30d): ${{ adminUsers.totals.cost_usd_30d.toFixed(4) }} · LLM cost (all-time): ${{ adminUsers.totals.cost_usd_all_time.toFixed(4) }}
| Status | Sends | Last sent | From IP | |
|---|---|---|---|---|
| {{ p.email }} | link still valid link expired opened {{ p.status }} | {{ p.sends }} | {{ shortDate(p.last_sent_at) }} | {{ p.last_ip || '—' }} |
No pending sign-ups — all magic-link recipients converted.
{{ adminUsers.clone_stats.demo_snapshot_clones }}
successful clone-demo build(s)
Active demo characters in DB:
{{ adminUsers.clone_stats.demo_characters }}
(auto-deleted after 24h)
{{ adminUsers.clone_stats.user_snapshot_clones }}
successful Snapshot Import(s)
Total characters (all tenants except demo):
{{ adminUsers.clone_stats.user_characters }}
⚠️ Failed snapshot jobs (all tenants): {{ adminUsers.clone_stats.snapshot_failed }}
| Source | Events | Unique visitors | OK | 4xx | 5xx | avg in→out |
|---|---|---|---|---|---|---|
| {{ s.source }} | {{ s.events }} | {{ s.unique_visitors }} | {{ s.ok }} | {{ s.client_err }} | {{ s.server_err }} | {{ s.avg_msg_in || '—' }} → {{ s.avg_msg_out || '—' }} |
No demo events recorded in the window.
| Reason | Count |
|---|---|
{{ r.reason }} |
{{ r.count }} |
| Visitor | Errors | Total |
|---|---|---|
{{ v.visitor_id.slice(0, 12) }}… |
{{ v.errors }} | {{ v.total }} |
Scheduler: {{ adminHealth?.scheduler_running ? 'running' : 'down' }}
| Job | Next run |
|---|---|
{{ j.id }} |
{{ j.next_run_time || '—' }} |
| ID | Name | Users | Chars | Keys | Tokens (lifetime) | Cost (lifetime) | Created |
|---|---|---|---|---|---|---|---|
{{ t.id }} |
{{ t.name }} | {{ t.users }} | {{ t.characters }} | {{ t.api_keys }} | {{ t.total_tokens.toLocaleString() }} | ${{ t.cost_usd_total.toFixed(2) }} | {{ shortDate(t.created_at) }} |
| Tenant | Requests | Tokens | Cost |
|---|---|---|---|
| {{ row.tenant_name }} | {{ row.requests.toLocaleString() }} | {{ row.total_tokens.toLocaleString() }} | ${{ row.cost_usd.toFixed(2) }} |