SkeinAdmin (Standalone Management Console)¶
Status: Implemented embedded admin panel + active roadmap Last updated: 2026-05-16
SkeinAdmin is a standalone management console for SkeinDB. It is intentionally separate from the SkeinDB server binary, so administrators can host it independently (IIS/Apache/Nginx/static hosting) and manage multiple SkeinDB servers or clusters from one UI.
SkeinDB now ships an embedded SkeinAdmin build at:
- /admin for full control-plane administration
- /console for SQL/workspace-first operation
The same UI bundle powers both routes, with mode-aware navigation and controls.
In-app Help Center (v0.3.8)¶
The console now includes a dedicated Help & Docs panel reachable from the
left nav, the top tab strip, the topbar ? Help button, and the ? keyboard
shortcut. The Help Center contains:
- A 5-step quick-start checklist (connect, pick a database, browse/design, run queries, operate).
- A panel reference table that lists every panel with its purpose, key actions, and a one-click "Open" jump button.
- A research-track index covering all twenty R01-R20 tracks with their current
hardness state (
hardenedvsprototype) and primary RPC methods. - Keyboard-shortcut reference and a deep-link hash table (
#<panel>). - Direct links to the canonical documentation site (Getting Started, SkeinQL, API Reference, MySQL/PG compatibility, Time Travel & Replay, CDC, Index Advisor, research backlog, and the True Status Matrix).
- A live-filter search box that scopes both the panel-reference and the research-track tables.
- A glossary of recurring terms (SkeinQL, ValueID, ETag chain, replay bundle, CDC subscription, prepared query, audit chain, edge bundle, differential privacy, oblivious policy).
- A support section with direct links to the GitHub issue tracker, support policy, and commercial licensing.
Recent UI updates:
- Schema Evolution R15 page: the Schema panel now includes a dedicated Schema Evolution card with typed schema.propose_change, schema.merge_status, schema.simulate_rollout, and schema.apply_merge controls, so operators can review divergence, rollout stages, and merge outcomes without crafting raw RPC payloads by hand.
- v0.3.4 polish: live wiring for the previously-stubbed Overview cards (Top Tables / Slow Query Log / Active Sessions / Index Health) via information_schema.tables, stats.slow_queries, and stats.snapshot; Security panel response-shape fixes for create/list/top-queries flows; auto-refresh on Overview/Security tab switches; Active Sessions labels aligned with stats.snapshot (Sessions / Open Txns / Avg Latency).
- Overview dashboard now shows comprehensive stats: runtime (uptime, CPU, RSS, QPS/TPS, open txns, connections), storage & deduplication (ratio, savings %, logical/unique bytes, interned values, total rows/tables, disk/WAL size, visual bar chart), MVCC & compaction (versions, delta chains, L0 files, stall rate), query & cache (hit %, slow queries, avg latency, ETag hits, coalesced). Auto-refresh toggle (5s).
- Research runtime wiring: R01 learned ValueID lookup histograms/model reports appear in Overview via stats.snapshot; R14 edge bundles are now first-class Replay panel controls; R20 compaction scheduler policy/status/pause/resume are first-class Engine panel controls.
- Privacy panel DP evaluation: the R04 card now exposes dp.evaluate with epsilon-grid, trials, seed, mechanism, and bounds controls, plus typed dp.aggregate, dp.budget.*, and dp.audit.log calls. The result metadata now includes per-aggregate sensitivities and privacy_etag validators for privacy-aware cache inspection.
- Privacy panel oblivious evaluation: the R05 card now uses the runtime policy schema (level, pad_to_multiple, target_rows, dummy_value_lookups, shuffle), sends nested table payloads for get/set/explain, and exposes oblivious.evaluate for deterministic leakage and overhead reports.
- Merge & CRDT R07 hardening: the Merge panel now sends typed merge.apply, merge.register, merge.simulate, and merge.evaluate payloads; exposes expected_etag, min_causality, current/incoming row editors, workload-case evaluation controls, and values-only Wasm module limits; and uses module_id for Wasm register/drop so the UI matches the runtime RPC schema.
- Views R08 hardening: the Views panel now exposes refresh mode selection, view.evaluate iterations, status/dependency summaries, and typed view.create, view.refresh, view.evaluate, view.status, view.drop, and view.explain_deps calls for incremental-vs-full correctness review.
- R09 benchmark sync: the research/docs surfaces now describe R09 as fully hardened, with skeindb transport-bench providing comparative p99 benchmarking across HTTP/2, QUIC, and MySQL/TCP alongside the existing QUIC framing/rebind coverage.
- v0.3.17 compatibility polish: compatibility help/status text now reflects the broader MySQL information_schema constraint/parameter/tablespace probes and PostgreSQL role/index/stat catalog probes.
- Engine Config panel for toggling engine features via simple checkboxes: deduplication, compression, encryption, MVCC, delta chains, time travel, auto compaction, energy-aware scheduling, query cache, coalescing, autoparameterization, audit WAL, differential privacy, oblivious execution, replication, CDC, QUIC transport. Load/save/reset with settings.set.
- Connect/disconnect and profile workflows are shared across admin and console routes.
- Admin topbar includes a guarded Shutdown action (system.shutdown) for graceful server stop.
- /admin now includes a phpMyAdmin-inspired Easy Viewer with left sidebar database/table tree, sub-tabs (Browse/Structure/Insert/Search/New Table/Export/Operations), inline row editing, toast notifications, and confirmation dialogs.
- Easy Viewer supports inline grid editing for spreadsheet-style row entry, copy, update, and batch delete.
- Easy Viewer includes form-based insert, column-builder create-table, search with conditions, CSV/SQL export, and table/database operations (truncate, drop). Destructive flows now unwrap RPC errors before showing success, and generated SQL/export statements quote identifiers so non-simple names do not break the “easy” path.
- The Security panel now uses the live token RPC payloads correctly, auto-populates the active Bearer token when you create one, and reflects the server’s persisted token inventory instead of stale in-memory UI assumptions.
- User creation now requires a real password and provisions a stored DB login that MySQL and PostgreSQL wire clients can authenticate with.
- /console remains workspace-first, while /admin keeps full control-plane navigation.
1) Design goals¶
-
Separate deployment - SkeinAdmin is built as a web application that can be hosted anywhere. - It connects to SkeinDB over HTTP(S) using SkeinQL and management endpoints.
-
Multi-target - One SkeinAdmin instance can manage many servers and many clusters. - The UI supports connection profiles.
-
No MySQL requirement - SkeinAdmin should not rely on browser-to-MySQL connectivity. - All operations use SkeinQL HTTP endpoints.
-
GUI-first administration workflows - Execute SQL - Browse schema - Browse/edit tables - Import/export (CSV, SQL dump) - Manage users/privileges
-
Cluster-first administration - Add/remove nodes - Promote replica - View replication lag and health - Configure sharding / placement rules
-
Observability built-in - Server load and performance dashboard - Query statistics, slow queries, compaction status, dedup ratio
2) Deployment models¶
2.1 Static SPA (recommended)¶
- SkeinAdmin is a static single-page application (SPA).
- It talks directly to the SkeinDB HTTP API.
Requirements: - SkeinDB must enable CORS for allowed origins. - Authentication uses Bearer tokens (recommended). Persisted API tokens created in the Security panel now protect the HTTP RPC/API surface as soon as at least one active token exists.
2.2 Reverse-proxy hosted¶
- Host the SPA behind IIS/Apache/Nginx.
- Optionally reverse-proxy
/api/to a specific SkeinDB server.
2.3 Air-gapped admin workstation¶
- SkeinAdmin can be served from local files (or a tiny local server) and connect to a SkeinDB node reachable over LAN.
2.4 Embedded static assets (single-binary mode)¶
Even though SkeinAdmin is designed to be hostable as a standalone web app, SkeinDB SHOULD also be able to serve the built SkeinAdmin assets itself to preserve a one-binary deployment experience.
Recommended behavior:
- SkeinDB serves SkeinAdmin at: /admin
- All API calls still go to /api/v1/... on the same origin
- Port selection is controlled by SkeinDB's --http flag
This mode is useful for: - developer environments - small on-prem deployments - edge devices
3) Connection profiles¶
A profile stores:
- name
- base_url (e.g. https://db1.example.com:8080)
- auth method
- optional: "cluster alias" for grouping nodes
Security note: - Do not store raw tokens unencrypted in local storage. - Prefer short-lived tokens with refresh or manual paste. - API token secrets are only returned once at creation time; list responses no longer echo the raw secret.
4) UI sections (navigation)¶
4.1 Overview (Dashboard)¶
- Server Info: version, SkeinQL version, transport mode, ping latency, method count, database count
- Runtime: uptime (human-readable), CPU %, RSS memory, QPS/TPS, open transactions, connections
- Storage & Deduplication: dedup ratio, dedup enabled status, saved bytes, logical/unique bytes, interned/unique values, savings %, total rows, total tables, disk size, WAL size, visual bar chart showing unique vs saved breakdown
- Learned ValueID Index (R01): lookup sample count, hot-prefix histogram summary, model shift, built/pending state, segment count, key count, max error, max search window, and model/fallback byte estimate from
stats.snapshot.storage.learned_index - MVCC & Compaction: MVCC versions, delta chains, compaction runs, compaction status, L0 files, stall rate
- Query & Cache: cache hit %, cache size, slow queries, avg latency, ETag hits, coalesced queries
- Auto-refresh: manual refresh button + auto-refresh toggle (5s interval)
- Profiles: save/load/delete connection profiles
- Feature Center: quick-launch cards for all major panels
4.2 Easy Viewer¶
- Left sidebar with collapsible database/table tree, filter input, New DB button, and reload
- Inline database creation from the sidebar with guided validation instead of browser prompts
- Breadcrumb navigation showing Server › Database › Table context
- Sub-tabs per table: Browse, Structure, Insert, Search, Query Builder, New Table, Design (WYSIWYG), Export, Operations, SQL
- Browse tab: paginated data grid with per-row Edit/Copy/Delete buttons, inline editing, check-all bulk delete, configurable rows-per-page
- Structure tab: column listing with type, nullable, and primary-key info
- Insert tab: form-based row insert with labeled fields per column and required-field validation before RPC submit
- Search tab: condition-based search with column/operator/value fields
- New Table tab: column builder with name, type, nullable, PK checkboxes plus live SQL preview and duplicate/identifier checks before create
- Design (WYSIWYG) tab: load an existing table, edit columns inline (rename / retype / nullable / default / auto-increment / drop), preview the auto-generated
ALTER TABLEplan (ADD COLUMN/DROP COLUMN/RENAME COLUMN/MODIFY COLUMN/CHANGE COLUMN), and apply changes one statement at a time viasql.exec. The run halts on the first error and the diff is reset after a successful apply. - Export tab: export table data as CSV or SQL, plus structure-only SQL export
- Operations tab: truncate table, drop table, and drop database with confirmation dialogs
- Toast notifications for success, error, and info feedback
- Responsive layout: sidebar collapses on narrow viewports
4.3 SQL Workspace¶
- SQL editor with tabs
- History
- Saved queries
- Results grid
- EXPLAIN plan viewer
4.4 Schema Browser¶
- Databases
- Tables
- Columns
- Indexes
- Schema Evolution (R15): propose changes, inspect merge status, simulate rollout waves, and apply merged plans from typed form controls
- DDL view: "SHOW CREATE TABLE" equivalent
4.5 Data Browser¶
- Table browse (paging/sort/filter)
- Row edit/create/delete
- CSV import/export
4.6 Engine Config¶
- Storage Engine: deduplication on/off, compression, encryption at rest, storage mode (
json/segment/hybrid) - MVCC & Versioning: MVCC toggle, delta-chained values, time travel, version retention days
- Compaction: auto compaction, energy-aware scheduling (R20), max L0 files threshold
- Compaction Scheduler (R20): live scheduler status, policy update, pause, and resume controls backed by
maintenance.compaction.status,maintenance.compaction.set_policy,maintenance.compaction.pause, andmaintenance.compaction.resume - Cache & Query: query cache, query coalescing, autoparameterization, cache size (MB)
- Audit & Security: tamper-evident WAL (R06), differential privacy (R04), oblivious execution (R05)
- Replication & CDC: replication toggle, CDC changefeeds, QUIC transport (R09)
- Load/save/reset controls with immediate feedback via
settings.set
4.6a Settings Manager¶
- Live settings editor backed by
settings.get,settings.set, andsettings.list - Preset keys for common runtime knobs (cluster state, research config, storage mode, cache/coalescing/autoparam, CDC, QUIC)
- Capabilities / method explorer with jump-to-RPC shortcuts
- Quick pulls for transport status, feature flags, and workload feature telemetry
- Research config dashboard with toggle + JSON editor for all 20 research tracks
4.7 Users & Privileges¶
- Create user
- Reset credentials
- Grant/revoke privileges
- Show grants
4.8 Maintenance¶
- Checkpoint
- Compact/vacuum
- Compaction policy (adaptive scheduler) + pause/resume
- Snapshot management (column snapshots)
- Audit verification (hash-chained WAL)
- Graceful shutdown trigger (admin action that checkpoints and marks cluster node offline)
4.8.1 Time travel & replay¶
- Point-in-time query runner built on
query.select as_of, with ISO/epoch timestamp entry, seeded query JSON from the selected table, and inline result-grid rendering. - History retention dashboard built on
maintenance.history.status, showing per-table live/tombstone/purgeable counts plus the effective retention policy. - History retention policy save + GC controls via
maintenance.history.set_policyandmaintenance.history.gc. - Replay bundle export/download/import/integrity flows built on
maintenance.replay.export,maintenance.replay.import, andmaintenance.replay.run, including primary-key redaction controls, session-local replay workspace tracking, and checksum summaries. - Edge bundle request/apply/status workflows built on
edge.bundle.request,edge.bundle.apply, andedge.bundle.status, including redaction mode, sequence windows, and query route checks.
4.9 Server Load & Statistics¶
(See docs/OBSERVABILITY.md) - CPU, memory, disk, network - QPS, active sessions - Latency p50/p95/p99 - Cache hit rates (ETag 304 hit rate) - Compaction progress and backlog - Dedup ratio - Autoparameterization hit rate - CDC subscriptions and lag (if enabled)
4.10 Cluster Management¶
(See docs/CLUSTERING.md)
- Node list (health, role, lag)
- Replication stats via cluster.replication_stats (Observe → Replication)
- Add node / leave node / remove node
- Promote replica
- Shards and placement
- Rebalance
4.11 Security and Encryption¶
- API token create/list/revoke panel with modal confirmations, secret-once display, and real HTTP bearer enforcement
- Token roles:
admin,read_write, andread_only; read-only tokens are blocked from mutating RPC methods - DB-user management panel with password-backed user creation, partial per-database revoke, and MySQL/PG login compatibility
- Dedicated Security panel entry in the main navigation and top tab bar
- Encryption mode (ENC_OFF / ENC_RANDOM / ENC_MLE_DB)
- Key rotation and re-encryption progress
4.12 CDC Subscriptions¶
- Create table subscriptions via
cdc.subscribe_table - Create prepared-query invalidation subscriptions via
cdc.subscribe_query; query dependencies expand views, set-operation branches, and CTE definitions to the real base tables used for invalidation - Poll / pause / resume / ACK / close durable CDC handles via
cdc.poll,cdc.pause,cdc.resume,cdc.ack, andcdc.close - Inspect lag and backpressure state for the currently tracked browser-session subscriptions via
next_offset - acked_offsetplus the returnedbackpressureobject - Surface runtime pause/pressure counters from
stats.snapshot.cdc
4.13 Index Advisor¶
(See docs/INDEX_ADVISOR.md)
- Ranked index suggestions from live advisor telemetry
- Apply / dismiss actions wired to advisor.index_synthesize, advisor.apply_index, advisor.dismiss, and advisor.history
- Dry-run retirement of unused indexes via advisor.retire_unused
- Workload phase evaluation available via advisor.evaluate (RPC Explorer template)
- Embedded history log for prior advisor actions
- Observed-before and expected-after scan report for each suggestion
- Online build progress remains backlog work
4.14 Views (Incremental Maintenance)¶
(See docs/research_agenda/R08_*)
- Create/drop views
- Show view freshness/lag
- Trigger refresh (incremental or full)
- Show dependency graph edges (what base tables feed the view)
4.15 Forensics (Verifiable WAL Queries)¶
(See docs/AUDIT_WAL.md and docs/research_agenda/R06_*)
- Inspect chain length, checkpoint anchors, and last verified time via maintenance.audit_status
- Run full-chain verification via maintenance.audit_verify and surface the persisted last_verified_ms
- Run filtered forensic queries over the hash-chained WAL by DB, table, operation, id bounds, and SkeinForensic JSON filter
- Proof-verify the current query slice by first fetching records and then calling forensic.verify with the returned records and boundary hash
- Export skein.forensic.bundle.v1 report bundles with query manifest, proof, records, and verification summary
4.16 Migration Assistant (MySQL → SkeinQL)¶
(See docs/TELEMETRY_AND_MIGRATION.md and docs/research_agenda/R17_*)
- Compatibility report (unsupported features)
- Intent inference: detect patterns like pagination, polling, soft deletes
- Rewrite previews: before/after SkeinQL migration hints
- Exportable rewrite reports (JSON/Markdown/HTML) + copy-to-clipboard
4.17 NL Query (Hardened Research Baseline)¶
(See docs/research_agenda/R12_*)
- Natural language prompt workspace
- ai.nl.translate preview + query JSON editor
- ai.nl.explain summary + preview rows + approval token
- ai.nl.execute gated execution using approval token
- Re-explain/edit loop before execution, backed by approval-token recomputation
- Autoparameterization (R11) controls: ai.autoparam.analyze, ai.autoparam.classify, ai.autoparam.feedback, ai.autoparam.metrics, and ai.autoparam.classifiers
4.18 Embeddings¶
(See docs/research_agenda/R10_*)
- Ingest embedding vectors
- Build / monitor ANN index health
- Playground for hybrid queries (filters + ANN order-by)
5) API usage¶
SkeinAdmin uses SkeinQL methods only.
Minimum required methods: - system.version - system.capabilities - system.shutdown (optional but recommended for controlled operations) - schema.list_databases / list_tables / describe_table - query.select - sql.exec (optional, for power users) - stats.snapshot - stats.top_queries - cluster.status (if cluster enabled)
6) Security¶
Recommended baseline: - HTTPS only - Bearer token auth - RBAC in SkeinDB (admin vs read-only vs operator) - CSRF protection is handled by token + same-site policy (if cookies are used)
SkeinAdmin should support: - read-only mode profiles - audit log (who executed which admin actions)
7) Backlog (SkeinAdmin)¶
- SA01: Create SkeinAdmin SPA scaffold (web/skeinadmin)
- SA02: Connection profile UI + token handling
- SA03: SQL Workspace (execute via sql.exec)
- SA04: Schema Browser (schema.*)
- SA05: Data Browser (query.select + data.*)
- SA06: Users UI (admin.*)
- SA07: Stats dashboard (stats.*)
- SA08: Cluster dashboard (cluster.*)
- SA09: Index Advisor page (advisor.*) — implemented prototype; online build progress remains backlog
- SA10: Time travel + replay bundle UI (query.select as_of + maintenance.replay.*) — implemented with the dedicated
Time Travel & Replaypanel, includingmaintenance.history.*retention controls and replay integrity summaries. - SA11: Encryption + key rotation UI (settings.encryption + status/progress)
- SA12: CDC subscriptions UI (cdc.*) + lag/backpressure visualization — implemented for table and prepared-query subscriptions with durable handle tracking, SSE/WebSocket transport paths, pause/resume controls, and runtime pressure summaries
- SA13: Compaction scheduler policy UI (maintenance.compaction.*) — implemented with status, policy update, pause, and resume controls in Engine Config
- SA14: Autoparameterization and plan-cache widgets
- SA15: Forensics page (
maintenance.audit_*,forensic.*) + proof verification UI - SA16: Views page (view.*) + dependency visualization
- SA17: Migration Assistant (telemetry + intent inference) + exportable report
- SA18: Embeddings playground (vector.*) + index status
- SA19: NL Query page (ai.nl.*) with verification gate