Did you know ... Search Documentation:
Pack asadb -- flaskserver/FEATURE_MATRIX.md

Feature matrix

Requested capabilityStatusImplementation
Username + passwordImplementedScrypt hashes, generic login errors, rate limiting
File-Based APIImplementedAtomic JSON inbox/processing/outbox plus Python client
Repository supportIntegrated by contractSupervises official src/asadb_web.pl and serves existing `web/`
Remote clientImplementedasadb_server.client.AsaDBClient
Remote CLIImplementedLogin profiles, shell, query, stream, sessions, jobs, FTS, cluster, backup/restore, Reservoir
Database session per clientImplementedPhysical file + logical database affinity
Transaction across requestsImplementedBEGIN/query/COMMIT/ROLLBACK with exclusive file lease
Thread poolImplementedWaitress request threads + ThreadPoolExecutor jobs
Cluster modeImplemented with boundariesExplicit primary/read replicas, node registry, forwarding, heartbeat
Large-result streamingImplementedNDJSON pages without complete result materialization
Job queue/progressImplementedFile-persistent Flask jobs plus native Reservoir proxy
RBAC multi-userImplementedGlobal/database-scoped role bindings
ReplicationImplemented with boundariesAsync and scheduled official `.asb` snapshot replication
Full-text searchImplemented as sidecarFile-based inverted index rebuilt from paged AsaDB SELECTs
AsAPanel server modeImplementedExisting panel and APIs hosted/proxied after Flask login
AsAPanel admin/configImplementedShared AsAPanel theme, workspace bar, `/admin`, and `/mode`
Original CLIPreserved`swipl asadb local` remains available for terminal-only work
Login-first portalImplemented`swipl asadb / run_panel` initializes once, opens `/login`, then enters Server Workspace with the Prolog backend by default
Local/server workspace choiceImplementedOne authenticated panel; loopback-only Local Workspace is gated by ASADB_ALLOW_LOCAL_ONLY
One-pack runtimeImplementedOffline wheelhouse plus per-user Python bootstrap outside the pack directory
Health/readiness/metricsImplementedPublic process/readiness probes and administrator operational snapshot
Logout transaction safetyImplementedUser sessions close and active leases roll back before token revocation

Deliberate boundaries

  • Cluster writes are explicit-primary, not active-active.
  • Replication is snapshot-based, not synchronous quorum/log shipping.
  • Pool is topology metadata, not automatic distributed query planning.
  • Transactions do not survive process restart.
  • FTS is eventually consistent and rebuildable.
  • One Flask process owns one state/data directory; concurrency is threaded.
  • The bundled Server Mode runtime targets CPython 3.10–3.13 on Linux x86_64 and Windows x64. macOS Server Mode is not release-tested.
  • `swipl asadb` requires SWI-Prolog 9.1.18 or newer because it uses the native pack-application mechanism; extracted source releases retain explicit launchers for hosts that have not installed the local pack.
  • The unified browser portal deliberately does not offer an unauthenticated Local Only bypass. Its Local Workspace still requires login; direct local CLI access remains an explicit terminal operation.