DBA Agent · User Manual

DBA Agent Manual

Everything you need to know about your 24/7 AI Database Administrator — what it watches, how to read its reports, how to communicate with it, and how to safely manage your SapixDB structure.

Contents
1. What the DBA Agent does2. Reading the daily report3. Alert codes and what to do4. Communicating with your agent5. SapixDB monitoring6. SapixDB structure & safe object creation7. Useful commands8. Tier capabilities9. Troubleshooting

1. What the DBA Agent does

The DBA Agent connects to your databases and runs continuous health checks at the interval set by your subscription tier. It detects problems before they become outages — slow queries, table bloat, replication lag, disk saturation, connection pool exhaustion — and either fixes them automatically or alerts you immediately.

For SapixDB, it also monitors strand chain integrity, reviews Mutant schema evolution proposals using AI, and tracks organism agent health.

Supported databases

DatabaseType stringAuto-fix available
PostgreSQLpostgres✅ VACUUM, ANALYZE, index hints
MySQL / MariaDBmysql / mariadb❌ alerts only
SapixDBsapixdb✅ Mutant proposal review
Elasticsearchelasticsearch❌ alerts only
ClickHouseclickhouse❌ alerts only
InfluxDBinfluxdb❌ alerts only
Neo4jneo4j❌ alerts only
Weaviate / Qdrant / Chromaweaviate / qdrant / chroma❌ alerts only
CockroachDB / TimescaleDBcockroachdb / timescaledb✅ (via pg protocol)
Any TCP servicetcp-probe❌ reachability only

2. Reading the daily report

Every morning the agent emails a plain-English health report to the address you provided when subscribing. The report covers the past 24 hours.

Report structure

SectionWhat it tells you
Executive summaryAI-written 3–5 sentence overview of everything that happened
Overall healthhealthy / warning / critical — the worst single database sets this
Per-databaseResponse time, connection usage, slow queries, disk usage, anomalies found
Auto-remediationsActions the agent took automatically (VACUUM runs, index proposals)
SapixDB Mutant reviewsMutant proposals the agent approved, rejected, or escalated
RecommendationsWhat you should do manually based on what was found

Health status meanings

healthy

All checks passed. No action needed.

warning

Non-critical anomaly detected. Review recommended.

critical

Critical issue found. Immediate attention required. Alert email was sent.

3. Alert codes and what to do

Critical alerts are sent immediately by email when detected — you don't need to wait for the daily report.

PostgreSQL alerts

CodeMeaningAgent actionYour action
PG_TABLE_BLOATDead tuple ratio > 40% on a table✅ Runs VACUUMNone if auto-fixed. Monitor disk.
PG_CONNECTION_SATURATIONConnection pool > 85% full❌ Alert onlyIncrease max_connections or add pgBouncer
PG_SLOW_QUERIESMore than 10 slow queries in 1 hour❌ Alert onlyReview query plans, add indexes
PG_REPLICATION_LAGReplica > 60 seconds behind❌ Alert onlyCheck replica connectivity and disk I/O
PG_DISK_SATURATIONDisk usage > 85%❌ Alert onlyExpand storage or archive old data

SapixDB alerts

CodeMeaningAgent actionYour action
SAPIXDB_CHAIN_INTEGRITYHash chain inconsistency on the primary strand❌ Alert onlySTOP writes immediately. Contact support. Run GET /v1/strand/verify and save the output.
SAPIXDB_PENDING_MUTATIONSMutant proposals awaiting review✅ Agent reviews using AI. Approves Zone 3 only; escalates governed/protected.Review escalated proposals in the Control Plane.
🚨 SAPIXDB_CHAIN_INTEGRITY is the most serious alert possible. It means the cryptographic hash chain has an inconsistency — a record was corrupted or tampered with. Do not write any new records until this is resolved. All existing data is intact and readable, but the chain must be investigated before you can trust new writes.

4. Communicating with your agent

Your hired session has two communication channels — both lead to the same conversation history.

Session email address

Every session has a dedicated email address shown on the session page (e.g. dba-a3f9b2c1@agents.boboyka.com). Email your requirements or questions to this address. The agent reads it and responds.

Example:

To: dba-a3f9b2c1@agents.boboyka.com
Subject: New database to monitor

Please add our new PostgreSQL instance at db.myapp.com:5432 to the monitoring list. The database is "orders_prod". Username is "monitor_user" — I'll send the password separately via the chat panel.

In-session chat panel

The session page at hire.boboyka.com/session/[id] has a live chat panel. Messages appear in real time. Use this for quick questions, urgent requests, or anything you don't want in email.

Both channels feed the same message history — a question asked via email shows up in the chat panel and vice versa.

What you can ask the agent to do

Request typeExamples
Add a database"Add our Redis instance at cache.myapp.com:6379"
Investigate an anomaly"Why did we get a SLOW_QUERIES alert at 3am?"
Review a Mutant proposal"Proposal mut_abc123 looks safe — please approve it"
Create SapixDB structure"Create an organism called reporting with agents: daily_snapshots, aggregates"
Explain a concept"What does SAPIXDB_CHAIN_INTEGRITY mean?"
Change alert thresholds"Only alert me on disk > 90%, not 85%"

5. SapixDB monitoring

SapixDB is fundamentally different from relational databases. There are no tables, no query planner, and no connection pool. The DBA Agent monitors the structures that are meaningful for SapixDB:

What is checkedHow oftenWhat a problem looks like
Agent reachability + response timeEvery check intervalResponse time > 500ms or unreachable
Strand chain integrityEvery check intervalHash mismatch anywhere in the chain
Organism count and zonesEvery check intervalUnexpected new organism or zone change
Pending Mutant proposalsEvery check intervalProposals sitting unreviewed > 24 hours
Write/read countersDaily reportUnusual rate changes
Epigenetics profileDaily reportAgent switched to maintenance or analytics mode

What a SapixDB Mutant proposal is

SapixDB uses a governance system called Mutants for all structural changes. Instead of running ALTER TABLE, you submit a proposal describing the change. The proposal goes through an approval process based on the data zone, then an operator applies it. This makes schema evolution deliberate, auditable, and reversible.

The DBA Agent reviews pending proposals automatically. It approves simple, safe changes to free zone agents. For governed, protected, and immutable_core zones it always escalates to a human — it will notify you in the daily report and via email.

6. SapixDB structure & safe object creation

⚠ Read this before asking the agent to create any SapixDB objects. SapixDB has specific naming rules. Creating objects with wrong names is not dangerous — but it creates clutter that is hard to clean up because strands are append-only. Follow the rules below and your structure will be clean and consistent forever.

How SapixDB objects are structured

SapixDB organises data into organisms and agents. An organism is a namespace (like a database). Agents are the data tables inside it (but they behave like living things — each has its own cryptographic identity and strand).

SapixDB object hierarchy
Organism: "myapp"
  Agent: "myapp::users"      ← stores user records
  Agent: "myapp::events"     ← stores application events
  Agent: "myapp::audit"      ← append-only audit log

  Each agent has:
    • A strand (append-only, hash-linked chain of records)
    • An Ed25519 keypair (signs every record it writes)
    • A zone (free / governed / protected / immutable_core)
    • A RocksDB graph index (relationships between records)
    • An optional blob store (binary data)

The critical naming rule

SapixDB uses :: as its internal separator to form full agent IDs. This means you must never put :: in an organism name or agent name.

✅ Correct❌ WrongWhy
"myapp""myapp::production":: is reserved as separator
"hire""boboyka::marketplace":: makes this look like agent ID
"users""users::v2":: not allowed in agent names
"billing_events""billing-events-2026"Dates in names cause clutter

Zone selection — choose once, escalate only

ZoneUse forMutation approval needed
freeDev data, scratch, transient stateAuto-approved by DBA Agent
governedProduction application data1 human approval required
protectedFinancial records, PII, medical data2 distinct human approvals
immutable_coreAudit logs, chain of custody recordsNever — mutations permanently blocked
Zone changes are one-way. You can escalate from freegovernedprotected, but you cannot de-escalate. Choose the zone based on the data's sensitivity at creation time.

How to ask the agent to create an organism

Tell the agent clearly: the organism name, the agent names you want inside it, and the zone. The agent will confirm before creating anything.

Example request:

"Please create a new organism called analytics for our reporting pipeline. It needs three agents: daily_snapshots, aggregates, and exports. The data is non-sensitive aggregated metrics so free zone is appropriate."

The agent will confirm the plan, create the organism, and reply with the full agent IDs: analytics::daily_snapshots, analytics::aggregates, analytics::exports.

Naming conventions to follow

Object typeFormatExample
OrganismLowercase noun, no hyphensmyapp, hire, analytics, billing
AgentLowercase snake_case plural nounusers, events, sessions, audit_logs
Avoid in organismsDates, versions, environmentsmyapp_2026, myapp_v2, myapp_prod
Avoid in agentsVerbs, adjectives, UUIDscreate_user, active_sessions, a3f9b2c1

7. Useful commands

These are REST API calls you can run directly against your SapixDB instance. Replace $BASE with your SapixDB URL and $KEY with your API key.

Health and status

bash
# Quick health check — no auth required
curl $BASE/v1/health

# Full status: uptime, counters, peers, epigenetics profile
curl -H "Authorization: Bearer $KEY" $BASE/v1/status

Organisms and agents

bash
# List all organisms
curl -H "Authorization: Bearer $KEY" $BASE/v1/organisms

# Get one organism
curl -H "Authorization: Bearer $KEY" $BASE/v1/organisms/myapp

# Create an organism (safe — checks first)
curl -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  $BASE/v1/organisms \
  -d '{"organism_id":"myapp","agents":["users","events","audit"],"zone":"governed"}'

# Add an agent to an existing organism
curl -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  $BASE/v1/organisms/myapp/agents \
  -d '{"agent_name":"notifications"}'

Writing and reading records

bash
# Write a record to myapp::events
# Note: :: in the agent ID is URL-encoded as %3A%3A
curl -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  "$BASE/v1/agents/myapp%3A%3Aevents/records/json" \
  -d '{"data":{"event":"user_login","user_id":"u123","ts":"2026-06-10T10:00:00Z"}}'

# Get chain head (latest hash + total record count)
curl -H "Authorization: Bearer $KEY" "$BASE/v1/agents/myapp%3A%3Aevents/strand/head"

# List recent records
curl -H "Authorization: Bearer $KEY" "$BASE/v1/agents/myapp%3A%3Aevents/strand/records?limit=20"

# Time-travel: what did this agent look like 2 hours ago?
curl -H "Authorization: Bearer $KEY" "$BASE/v1/strand/as-of?timestamp_hlc=1749420000000"

Mutant proposals

bash
# List pending proposals
curl -H "Authorization: Bearer $KEY" "$BASE/v1/mutations?status=Pending"

# Get one proposal
curl -H "Authorization: Bearer $KEY" $BASE/v1/mutations/mut_abc123

# Approve a proposal (human action — governed zone requires this)
curl -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  $BASE/v1/mutations/mut_abc123/approve \
  -d '{"approver_agent_id":"admin","reason":"Reviewed and approved"}'

# Apply after approval threshold is met
curl -X POST -H "Authorization: Bearer $KEY" $BASE/v1/mutations/mut_abc123/apply

Strand verification

bash
# Verify the entire hash chain — should return {"valid":true}
# Run this if you ever receive a SAPIXDB_CHAIN_INTEGRITY alert
curl -H "Authorization: Bearer $KEY" $BASE/v1/strand/verify

Chain export for audit

bash
# Export strand records from the last 24 hours (JSONL format)
curl -H "Authorization: Bearer $KEY" \
  "$BASE/v1/strand/export?from_date=2026-06-09&to_date=2026-06-10&fmt=jsonl" \
  -o audit_export.jsonl

# The response includes X-Export-Hash (SHA-256 of the file) and X-Export-Rows

8. Tier capabilities

FeatureStarterProStudio
Check interval15 minutes5 minutes1 minute
Max databases14Unlimited
Daily email report
Critical email alerts
Slack alerts
Auto-remediation (VACUUM etc.)
SapixDB Mutant review
Custom alert thresholds
Agent chat panel
Session email address

9. Troubleshooting

I emailed my agent but got no response

Check that you're emailing the exact session address shown on your session page (e.g. dba-a3f9b2c1@agents.boboyka.com). The address is unique per session — it will not work if the session has been cancelled or expired. Start a new session to get a fresh address.

The daily report says "NO DATA" for one of my databases

This means the agent couldn't connect to that database during the check window. Common causes: the database host is unreachable from the internet (firewall), the port changed, or the credentials are wrong. Reply to your session email or chat to ask the agent to diagnose the connection.

I received a SAPIXDB_CHAIN_INTEGRITY alert

Stop writing new records immediately. Run the verification command to get the full report:
bash
curl -H "Authorization: Bearer $KEY" $BASE/v1/strand/verify
Copy the full output and send it to your session chat or reply to the alert email. Do not attempt to fix this manually — the agent will coordinate the investigation.

The agent approved a Mutant proposal I wanted to review myself

The agent only auto-approves proposals in the free zone. If you want to review all proposals yourself regardless of zone, tell the agent: "Do not auto-approve any Mutant proposals — always escalate to me first." The agent will update its review policy for your subscription.

I asked the agent to create an organism and it refused

The agent will ask for clarification before creating any SapixDB structure to avoid mistakes. Make sure your request includes: the organism name (flat, no ::), the agent names you want, and the data zone. If it still refuses, it may have detected that an organism with that name already exists.

The SapixDB organism I want doesn't have the agents I need

You can add agents to an existing organism at any time — it doesn't require recreating the organism. Tell the agent: "Add an agent called `notifications` to the `myapp` organism." The new agent gets its own strand and starts from genesis.

← Browse agentsHire the DBA Agent →