QUICKSTART
Get from zero to a live security score in under ten minutes. CONTROL reads your on-chain and operational state, runs eight control checks, and keeps the result continuously updated.
- Connect your admin wallet with WalletConnect or email sign-in.
- Add your protocol's wallets — treasury Safe, multisigs, deployer.
- Invite your team and assign roles.
- Run the first scan. Your baseline score appears in minutes.
A typical first scan surfaces 5–15 findings. Don't panic — most protocols start in the 55–70 range. The register turns each finding into an owned, dated task; teams that work it daily usually cross 85 within a month.
CORE CONCEPTS
CONTROL treats operational security as a continuous process, not a point-in-time audit. Three objects make up the system:
Automated verifications of a control — multisig thresholds, key age, backup restorability. Each is PASS or FAIL, never "in progress".
Tracked work items with severity, owner and deadline. Open risks reduce your score in proportion to severity.
Live security events with a timeline, on-call assignment and post-mortem requirement before closing.
SECURITY SCORE
The score starts at 100 and subtracts penalties: each failing check costs its weight (4–8 points), each open risk costs by severity (critical −6, high −4, medium −2). Scores map to grades: A ≥ 90, B ≥ 75, C ≥ 60, below 60 is flagged.
− Σ failing_check.weight
− Σ open_risk.penalty
// recalculated on every state change
CHECK WEIGHTS
Every protocol runs the same eight core checks with the same weights, so scores stay comparable across the ecosystem.
ACCESS CONTROL
CONTROL builds a permission graph of who can touch what: contract admin roles, multisig signers, GitHub maintainers, cloud IAM and Discord elevated roles. Each grant carries an owner, a justification and a review date.
- Quarterly reviews — every grant must be re-approved or revoked; overdue reviews fail the check.
- Ghost detection — accounts with access but no activity in 60 days are flagged automatically.
- Least privilege — role templates (Admin, Security, Engineer, Ops) keep grants minimal by default.
TREASURY & WALLETS
Register every protocol wallet — treasury Safe, ops multisigs, deployers, hot wallets. CONTROL watches them on-chain and fails the check on drift:
- Signer set or threshold changed without a logged approval.
- Funds above a policy cap held in a single-signer wallet.
- Deployer EOAs that still hold upgrade rights after launch.
- Unusual outflow velocity versus a 30-day baseline.
RISK REGISTER
Log risks manually or from failed checks. Every risk needs an owner and a due date — unowned risks escalate to admins after 48 hours, and overdue criticals page the on-call. Closing a risk requires a resolution note, which feeds your audit trail.
"Deployer key past rotation window"
lifecycle: OPEN → IN REVIEW → CLOSED (resolution note required)
INCIDENT RESPONSE
Declare an incident from any alert or manually. CONTROL opens a timeline, notifies the on-call rotation, and pins the relevant runbook. Incidents can't be closed without a post-mortem — the discipline is the product.
- Severity ladder — SEV-1 (funds at risk) pages everyone; SEV-3 notifies the channel.
- Runbooks — pre-written playbooks for bridge pause, oracle halt, key compromise, governance attack.
- Drills — a quarterly tabletop drill is required to keep the INCIDENT PLAN check passing.
KEY ROTATION
Every credential gets an age: deployer keys, API tokens, webhook secrets, cloud keys. Policy defaults to 90 days (configurable in Settings). At 80% of the window the owner is nudged; past the window the KEY ROTATION check fails and a risk is auto-logged with the owner pre-assigned.
BACKUPS
A backup that has never been restored is a hope, not a control. CONTROL tracks snapshot freshness for configs, secrets and off-chain state, and requires a verified restore test weekly — the check fails on stale snapshots or failed restore drills, not just missing backups.
CI/CD CHECKLIST
The pipeline is an attack surface. With the GitHub connector installed, CONTROL verifies on every deploy:
- Two-person review enforced on protected branches.
- Signed, reproducible builds — artifact hash matches source.
- Secrets kept out of CI logs and env files.
- Staging → production separation with distinct credentials.
TRUST BADGE
Enable the public profile in Settings to publish your score at control.xyz/<slug>. Embed the live badge anywhere:
The public profile shows only the score, grade and PASS/FAIL per check — never risk details, wallet addresses or team members. The badge updates within 60 seconds of any state change.
CONNECTORS
Feeds the CI/CD check: branch protection, review rules, signed builds, secret scanning. Read-only OAuth scope.
Pushes critical alerts and incident pages to your channels; audits elevated-role 2FA for the ACCESS check.
Safe and WalletConnect. Watches signer sets, thresholds and outflows across BNB Chain, Ethereum and Base.
AWS / GCP read-only roles for the BACKUPS and KEY ROTATION checks: snapshot age, IAM key age, restore jobs.
WEBHOOKS
Subscribe to events from Settings → API. Payloads are JSON, signed with an HMAC-SHA256 header X-Control-Signature.
check.failed // a control flipped to FAIL
risk.opened · risk.closed
incident.declared · incident.resolved
API
Everything in the dashboard is available over REST at https://api.control.xyz. Authenticate with a scoped API key from Settings: Authorization: Bearer ctl_…
GET /v1/checks // 8 checks with status + evidence
GET /v1/risks · POST /v1/risks
PATCH /v1/risks/:id // assign, close, re-rank
POST /v1/incidents // declare with severity + runbook
GET /v1/wallets // registered wallets + drift status
{
"score": 82, "grade": "B+",
"checks_passing": 6, "checks_total": 8,
"open_risks": { "critical": 2, "high": 3, "medium": 2 },
"updated_at": "2026-08-10T14:02:11Z"
}
ERRORS & LIMITS
Standard HTTP codes with a JSON body: {"error": {"code", "message"}}. Rate limits: 120 req/min per key (Genesis), 600 req/min (Mainnet+). 429 responses include Retry-After.
API keys are scoped: read, write:risks, write:incidents. Keys inherit the rotation policy — an aged key fails your own KEY ROTATION check.
FAQ
No. Audits cover code at a point in time; CONTROL covers operations continuously. Most recent exploits were operational — you need both.
Never. All connectors are read-only; CONTROL observes and scores, it cannot move funds or change permissions.
Yes — attach evidence to the check; a human review resolves it within 24h. Disputed checks show a ⚑ on the public profile in the meantime.
BNB Chain first-class, plus Ethereum and Base for wallet watching. More networks land with the Phase 02 connectors.