Roadmap
Building the Complete Graph Database
Anvil is built phase by phase with full test coverage at every step. Track our progress across 1471 planned tasks.
1213 of 1471 tasks82%
22 Complete6 In Progress2 Planned
0
Project Scaffolding
Complete8/8
Rust workspace with Cargo
React Router 7 browser app
CI pipeline (clippy, test, fmt)
Rust edition 2024, MSRV pinned
1
Core Graph Data Model
Complete33/33
Primitive Types- NodeId, RelationshipId, LabelId, PropertyValue enum
Graph Entities- Node, Relationship, Path structs
Schema & Constraints- Unique, existence, composite key constraints
Graph API- Full CRUD trait with traversals and statistics
2
Storage Engine
Complete30/30
Page-Based Store- Fixed-size pages, LRU cache, mmap option
Record Stores- Node, relationship, property, string, array stores
ID Allocation- Sequential with free-list recycling
Write-Ahead Log- Segmented WAL, fsync, crash recovery, checkpointing
File Layout- graph.db, properties.db, WAL directory, lock file
3
Indexing
Complete19/19
B+ Tree- On-disk, range scans, bulk loading, concurrent access
Index Types- Unique, composite, full-text (BM25), spatial (R-tree)
Index Management- CREATE/DROP INDEX, automatic maintenance
4
Transaction Engine
Complete17/17
Transaction Manager- Begin/commit/rollback, savepoints
Concurrency Control- MVCC, 3 isolation levels, deadlock detection
Recovery- ARIES-style redo/undo, WAL replay
Garbage Collection- Version chain pruning
5
Cypher Query Language
Complete78/78
Lexer- 40+ token types, Unicode, nested comments
Parser- Full grammar: MATCH, CREATE, MERGE, DELETE, SET, WITH, UNWIND, FOREACH, CALL, UNION
Semantic Analysis- Variable scoping, type inference
Built-in Functions- 30+ functions: aggregation, scalar, string, math, list, path
Query Planner- Cost-based optimizer, index selection, join ordering
Query Executor- Volcano model, 25+ operators, multi-hop BFS, ALL SHORTEST
6
GraphQL API
Complete36/36
Schema Generation- Auto-generated from graph, Relay connections
Queries & Mutations- Filtering, ordering, pagination, nested traversals
Subscriptions- Real-time via graphql-transport-ws
Cypher Passthrough- Raw Cypher via GraphQL
7
Server
Complete39/39
HTTP Server- Axum/Tokio, CORS, REST + GraphQL + WebSocket
Authentication- JWT RS256, JWKS, Argon2id, per-request sessions
Configuration- TOML config, env vars, CLI flags, system path detection
Multi-Database- Schema isolation, database routing
7.2.1
Email Verification & Passwordless Login
Complete17/17
SMTP / Email Provider- SMTP with STARTTLS, webhook alternative, HTML templates
Email Configuration- [auth.email] TOML section, 12 env vars, configurable TTLs
Account Verification- Verification token, GET /auth/verify, POST /auth/resend-verification
Login Verification Gate- Blocks login when require_email_verification=true and unverified
Passwordless OTP- POST /auth/otp/request + /auth/otp/verify, 6-digit codes, brute-force protection
Auto-Create User on OTP- New users auto-created with reader role on first OTP login
Rate Limiting- Max 5 OTP requests per email per hour, max 3 attempts per code
JWT Integration- Both flows produce identical JWTs, auth_method in refresh token
Hammer UI- Password/Email Code tabs, OTP flow, resend verification on error
Email Templates- Built-in verification, OTP, password reset templates with custom override
Document Collections- auth.email_verifications, auth.otp_codes with TTL
Unit Tests- 16 tests: OTP generation, verification, login gates, email templates
User Node Sync- Sync email_verified to :User graph node
Token Cleanup- Auto-delete expired verification tokens and OTP codes
Integration Tests- End-to-end OTP and verification flows in test-cypher.sh
8
CLI
Complete20/20
Server Management- start/stop/status, daemon mode, log file
Interactive Shell- Cypher REPL, history, parameter binding
Data Operations- Import Cypher scripts, config init
9
Hammer UI
Complete65/65
Query Editor- Cypher highlighting, table/JSON/graph/plan views
Graph Visualization- Force-directed, focus mode, lasso, minimap, export
Schema Browser- Labels, types, keys, indexes, schema dropdown
Document Manager- Collection CRUD, sync rules, schema-filtered
Admin Panel- User/role management, event log, alerts (admin-only)
Data Import- Cypher script upload with creation counts
Role-Based Access- Admin-only nav, schema protection, JWT roles
10
Graph Algorithms
Complete16/16
Centrality- PageRank, betweenness, closeness, degree
Pathfinding- Dijkstra, A*, BFS/DFS, ALL SHORTEST
Community Detection- Louvain, label propagation, connected components
Other- MST, triangle counting, node similarity
11
Performance & Scalability
Complete19/19
Query Performance- Plan caching, result caching, parallel operators
Storage Performance- LZ4/Zstd compression, tiered storage
Benchmarking- Criterion benchmarks, LDBC SNB workload
12
Operations & Reliability
Complete13/13
Backup & Restore- Online snapshots, incremental, point-in-time
Observability- Prometheus metrics, structured logging, OpenTelemetry
Data Integrity- CRC32 checksums, consistency checks
13
Clustering & Replication
Complete7/7
Raft Consensus- Leader election, log replication
WAL Streaming- Leader-follower replication, read replicas
Sharding- Hash/label-based, rolling upgrades
14
Ecosystem
Complete22/22
Client Drivers- Rust, TypeScript, Python, Go
Migration Tooling- Neo4j Cypher dumps, CSV, GraphML
Documentation- mdBook site, API docs, tutorials
Testing- 3,345+ tests across 14 crates
15
Plugin System
Complete98/98
Plugin Framework- Rust + Lua/Python/WASM/JS/TS/Starlark, sandboxed, hot-reload
APOC Library- 55 built-in functions: geo, text, collections, math, date
16
Native Document Store
Complete57/57
Document Model- Schema-namespaced collections, composite keys, TTL
Query API- Filters, batch ops, paginated scan, REST endpoints
Graph-Document Sync- Bidirectional rules, conflict resolution, INCLUDE clause
Storage Modes- Unified, split, shared/separate WAL
17
Row-Level Security
Complete48/48
Policy DDL- CREATE/DROP POLICY, ENABLE/DISABLE/FORCE RLS
Predicates- current_user(), current_roles(), session()
Sync Pairs- Label policies auto-protect paired collections
Schema Protection- Label reservation, cross-schema mutation blocking
18
Database Functions
Complete33/33
Function DDL- CREATE/DROP/SHOW, typed parameters, defaults
Execution- CALL...YIELD, inline in expressions, body caching
Hammer UI- Create/edit/delete, test panel, call log
19
Triggers
Complete39/39
Trigger DDL- CREATE/DROP/ENABLE/DISABLE, priority ordering
Event Types- BEFORE/AFTER on INSERT/UPDATE/DELETE
Trigger Body- OLD/NEW variables, RAISE, cascade detection
Hammer UI- Management, activity log, dependency analysis
20
Observability
Complete46/46
Event Log- Ring buffer with configurable retention
Query Analytics- p95/p99 latency, slow query detection
Alerts- Configurable rules, error rate thresholds
Dependency Analysis- Trigger cascades, function calls, sync interactions
21
Data Import & Export
In Progress7/57
Cypher Script Import- CLI, REST, browser UI, Neo4j-compatible
CSV Import- Header mapping, type inference, batch loading
JSON Import- Nested document to graph mapping
GraphML Import- Standard graph interchange format
Export- Cypher dump, CSV, JSON, GraphML
Example Datasets- Movies, social network, recommendations
22
Edge Functions
In Progress6/64
Function Runtime- Deno/Node.js subprocess, HTTP triggers
Deployment & Management- Versioning, rollback, resource limits
Database Access- Graph/document queries from function context
Secrets- Encrypted environment variables
Local Development- Hot reload, debug logging, test harness
Hammer UI- Editor, logs, deployment status
23
Hooks
Planned0/44
Hook Definition- CREATE/DROP/ENABLE/DISABLE HOOK DDL
System Events- ON SERVER START/SHUTDOWN, CONNECT/DISCONNECT, SCHEMA CHANGE
Scheduled Hooks- Cron expressions, distributed lock
Webhook Integration- HTTP POST, retry policy, signature verification
Hammer UI- Hook management, execution history
24
Bolt Protocol
Planned0/76
PackStream Serialization- Binary encode/decode for all Cypher types
Chunked Transport- TCP framing with Tokio async
Bolt Handshake- Version negotiation (v4.4/v5.0)
Authentication- HELLO/LOGON, credential validation
Query Execution- RUN/PULL/DISCARD streaming
Transactions- BEGIN/COMMIT/ROLLBACK, state machine
Driver Compatibility- Official Neo4j drivers (Python, JS, Java, Go)
TLS Support- Optional bolt+s://
25
File Storage
In Progress14/16
25.1 Storage Schema- Protected :storage.Bucket / :storage.Object / :storage.Upload labels, unique + content-hash indexes
25.2 Pluggable Backends- Local content-addressed FS done; S3 / GCS / Azure scaffolded, return NotImplemented
25.3 RESTful API- 30+ /storage/v1 endpoints: bucket CRUD, object CRUD, copy/move/list, public, signed, render, usage, TUS
25.4 Cypher Integration- Bucket DDL + file_url / signed_url / file_size / file_hash helpers shipped; MATCH FILE / CREATE FILE deferred
25.5 Access Control (RLS)- RLS auto-enabled on :storage.* labels, public-bucket short-circuit, service_role bypass, default policy set
25.6 Signed URLs- HMAC-SHA256 tokens, separate signing key, configurable TTL, bucket-versioned revocation
25.7 Image Transformations- Pure-Rust pipeline (image crate), width/height/resize/format/quality, content-addressed variant cache
25.8 Resumable Uploads (TUS 1.0.0)- creation / expiration / checksum / termination extensions, staging-dir chunk merge, atomic finalize
25.9 Trigger Integration- BEFORE/AFTER INSERT/UPDATE/DELETE on :storage.Object - reject by MIME, kick off thumbnails, block referenced deletes
25.10 Event Logging- StorageObjectCreated/Updated/Deleted/Accessed, BucketCreated/Deleted, QuotaExceeded, SignedUrlIssued
25.11 Quotas & Limits- Per-bucket / per-user / global byte caps, pre-flight Content-Length check, atomic doc-store accounting
25.12 Storage Configuration- [file_storage] anvil.toml block, 16 ANVIL_STORAGE_* env vars, duration + size suffix parsing
25.13 Client SDK (anvilent)- TypeScript / Rust / Python / Go drivers - storage namespace, .from() builder, TUS, signed URLs, transforms, streaming download
25.14 CLI- anvil storage create-bucket / list-buckets / upload / download / ls / rm / sign / usage / gc - 41 tests
25.15 Browser UI (Hammer)- Bucket browser, drag-drop upload (auto-TUS), inline preview, signed URL generator, public-link panel, usage dashboard
25.16 Documentation- 12 in-route docs sections under File Storage group: overview, quickstart, buckets, objects, cypher, rls, signed, transforms, resumable, backends, triggers, tutorials
26
Service Accounts & Long-Lived Tokens
In Progress37/45
Service Account Model- Non-login principals with scoped roles, optional service_role flag, full AuthStore lifecycle
API Key Model- anvil_sk_ keys, SHA-256 hashed, one-time secret display, opaque server-side lookup for instant revocation
Management API- Admin-only /auth/service-accounts CRUD + key mint/list/revoke, persisted to auth.* collections
Middleware Integration- Bearer key auth, throttled last-used stamping, scope/role narrowing, service_role RLS bypass
Security & Auditing- Prefix-only audit events, privilege-escalation guard, scope-subset enforcement
CLI- anvil service-account create/ls/show/rm + key create/ls/revoke
Hammer UI- Accounts panel, create dialog, key drawer, audit tab
Documentation- Overview, quickstart, security guide, config reference
27
Index Integration
In Progress383/402
Write-Path Maintenance- CREATE/DROP INDEX DDL kept consistent via a single MemGraph IndexObserver hook covering executor, WAL replay, and sync-engine paths
Query Planner Integration- Index-backed fast paths for single-property equality and range predicates
Full Index Type Coverage- Composite, fulltext, relationship-property, spatial-radius, and covering/index-only scans
Production Scale-Out- Disk-backed index stores, online ALTER INDEX REBUILD, non-blocking populate, replica convergence, snapshot v7 restart
IndexAdvisor- Slow-query attribution + suggestion engine with memory-budget recommendations
Documentation- Indexes guide and reference
Hammer UI- IndexAdvisor admin panel polish
Checks & Hardening- Phase 27 testing-gap closeout and open items
28
Apps & Projects
In Progress6/7
App Model & Membership- system.apps + auth.app_members, :App nodes and MEMBER_OF edges, reader/editor/admin privileges, X-Anvil-App request scoping
Schema Isolation- app_<slug> schemas with explicit label bindings, membership-gated reads/writes, cross-schema edge rule (auth exception), DROP APP cascade
Settings & Email- app.<id>.<key> overrides with global fallback, per-app verification/OTP/reset templates with {{app_name}}, app-aware auth mail flows
Hammer UI- /apps page: members, labels, settings, email templates with preview; app schemas in the schema switcher
Cypher DDL- CREATE APP, DROP APP [CASCADE], SHOW APPS, SHOW APP MEMBERS|LABELS, APP … ADD|REMOVE MEMBER, APP … BIND|UNBIND LABEL
Backup & Restore- GET /apps/{id}/export self-contained JSON backup; POST /apps/import restores it as a new app with id remapping and auth re-linking; Hammer download/import buttons
Password Reset Flow- App-aware /auth/forgot-password + /auth/reset-password using the per-app password_reset template