mindoodb 0.0.53 → 0.0.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/README-server.md +125 -69
  2. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts +17 -0
  3. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts.map +1 -1
  4. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js +22 -0
  5. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js.map +1 -1
  6. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts +58 -0
  7. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts.map +1 -1
  8. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js +156 -3
  9. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js.map +1 -1
  10. package/dist/browser/index.mjs +2 -0
  11. package/dist/core/BaseMindooDB.d.ts +63 -70
  12. package/dist/core/BaseMindooDB.d.ts.map +1 -1
  13. package/dist/core/BaseMindooDB.js +213 -506
  14. package/dist/core/BaseMindooDB.js.map +1 -1
  15. package/dist/core/MindooDBServerAdmin.d.ts +44 -22
  16. package/dist/core/MindooDBServerAdmin.d.ts.map +1 -1
  17. package/dist/core/MindooDBServerAdmin.js +45 -21
  18. package/dist/core/MindooDBServerAdmin.js.map +1 -1
  19. package/dist/core/appendonlystores/syncStores.d.ts +147 -0
  20. package/dist/core/appendonlystores/syncStores.d.ts.map +1 -0
  21. package/dist/core/appendonlystores/syncStores.js +612 -0
  22. package/dist/core/appendonlystores/syncStores.js.map +1 -0
  23. package/dist/core/builtinDbInvariants.d.ts +30 -0
  24. package/dist/core/builtinDbInvariants.d.ts.map +1 -1
  25. package/dist/core/builtinDbInvariants.js +97 -0
  26. package/dist/core/builtinDbInvariants.js.map +1 -1
  27. package/dist/core/index.d.ts +1 -1
  28. package/dist/core/index.d.ts.map +1 -1
  29. package/dist/core/index.js +7 -4
  30. package/dist/core/index.js.map +1 -1
  31. package/dist/core/types.d.ts +18 -0
  32. package/dist/core/types.d.ts.map +1 -1
  33. package/dist/node/server/CapabilityMatcher.d.ts +2 -2
  34. package/dist/node/server/CapabilityMatcher.js +2 -2
  35. package/dist/node/server/MindooDBServer.d.ts +14 -1
  36. package/dist/node/server/MindooDBServer.d.ts.map +1 -1
  37. package/dist/node/server/MindooDBServer.js +166 -159
  38. package/dist/node/server/MindooDBServer.js.map +1 -1
  39. package/dist/node/server/SyncEventBus.d.ts +10 -0
  40. package/dist/node/server/SyncEventBus.d.ts.map +1 -1
  41. package/dist/node/server/SyncEventBus.js.map +1 -1
  42. package/dist/node/server/TenantManager.d.ts +58 -6
  43. package/dist/node/server/TenantManager.d.ts.map +1 -1
  44. package/dist/node/server/TenantManager.js +90 -65
  45. package/dist/node/server/TenantManager.js.map +1 -1
  46. package/dist/node/server/add-to-network.d.ts.map +1 -1
  47. package/dist/node/server/add-to-network.js +33 -15
  48. package/dist/node/server/add-to-network.js.map +1 -1
  49. package/dist/node/server/canonicalSetupName.d.ts +22 -0
  50. package/dist/node/server/canonicalSetupName.d.ts.map +1 -0
  51. package/dist/node/server/canonicalSetupName.js +38 -0
  52. package/dist/node/server/canonicalSetupName.js.map +1 -0
  53. package/dist/node/server/config.d.ts.map +1 -1
  54. package/dist/node/server/config.js +33 -1
  55. package/dist/node/server/config.js.map +1 -1
  56. package/dist/node/server/peer/ClusterAuditLog.d.ts +64 -0
  57. package/dist/node/server/peer/ClusterAuditLog.d.ts.map +1 -0
  58. package/dist/node/server/peer/ClusterAuditLog.js +99 -0
  59. package/dist/node/server/peer/ClusterAuditLog.js.map +1 -0
  60. package/dist/node/server/peer/ClusterJobRunner.d.ts +43 -0
  61. package/dist/node/server/peer/ClusterJobRunner.d.ts.map +1 -0
  62. package/dist/node/server/peer/ClusterJobRunner.js +119 -0
  63. package/dist/node/server/peer/ClusterJobRunner.js.map +1 -0
  64. package/dist/node/server/peer/ClusterManager.d.ts +116 -0
  65. package/dist/node/server/peer/ClusterManager.d.ts.map +1 -0
  66. package/dist/node/server/peer/ClusterManager.js +274 -0
  67. package/dist/node/server/peer/ClusterManager.js.map +1 -0
  68. package/dist/node/server/peer/PeerAuthService.d.ts +69 -0
  69. package/dist/node/server/peer/PeerAuthService.d.ts.map +1 -0
  70. package/dist/node/server/peer/PeerAuthService.js +208 -0
  71. package/dist/node/server/peer/PeerAuthService.js.map +1 -0
  72. package/dist/node/server/peer/PeerReplicator.d.ts +232 -0
  73. package/dist/node/server/peer/PeerReplicator.d.ts.map +1 -0
  74. package/dist/node/server/peer/PeerReplicator.js +879 -0
  75. package/dist/node/server/peer/PeerReplicator.js.map +1 -0
  76. package/dist/node/server/peer/routes.d.ts +66 -0
  77. package/dist/node/server/peer/routes.d.ts.map +1 -0
  78. package/dist/node/server/peer/routes.js +322 -0
  79. package/dist/node/server/peer/routes.js.map +1 -0
  80. package/dist/node/server/peer/types.d.ts +244 -0
  81. package/dist/node/server/peer/types.d.ts.map +1 -0
  82. package/dist/node/server/peer/types.js +189 -0
  83. package/dist/node/server/peer/types.js.map +1 -0
  84. package/dist/node/server/server.d.ts +1 -1
  85. package/dist/node/server/server.js +18 -37
  86. package/dist/node/server/server.js.map +1 -1
  87. package/dist/node/server/serverinit.d.ts +2 -1
  88. package/dist/node/server/serverinit.d.ts.map +1 -1
  89. package/dist/node/server/serverinit.js +34 -12
  90. package/dist/node/server/serverinit.js.map +1 -1
  91. package/dist/node/server/types.d.ts +42 -30
  92. package/dist/node/server/types.d.ts.map +1 -1
  93. package/dist/node/server/types.js +1 -7
  94. package/dist/node/server/types.js.map +1 -1
  95. package/dist/node/server/validation.d.ts +0 -6
  96. package/dist/node/server/validation.d.ts.map +1 -1
  97. package/dist/node/server/validation.js +1 -7
  98. package/dist/node/server/validation.js.map +1 -1
  99. package/package.json +1 -1
package/README-server.md CHANGED
@@ -398,7 +398,9 @@ For key rotation, adding/removing admins, and the full authentication flow (chal
398
398
 
399
399
  ## Walkthrough: Multi-Server Setup
400
400
 
401
- MindooDB servers can mirror encrypted data between each other. This section covers the full workflow: initializing servers, establishing trust, and configuring per-tenant sync.
401
+ MindooDB servers can mirror encrypted data between each other. This section covers the full workflow: initializing servers, establishing trust, seeding a tenant onto a second server, and running the mesh.
402
+
403
+ **The model in one paragraph.** Replication is configured per *peer*, not per tenant. Each trusted server with a `url` becomes one replication session, and over that session the two servers mirror **every tenant they both host** — all databases, documents and attachments. Which tenants those are is negotiated, not configured: the peers exchange a Bloom summary of their tenant ids and intersect it, so a tenant only one side hosts is never replicated and the other side never learns it exists. Servers relay encrypted entries and never see plaintext; a mirror is a full replica that cannot read what it stores.
402
404
 
403
405
  ### 1. Initialize servers
404
406
 
@@ -432,15 +434,16 @@ curl https://server1.example.com/.well-known/mindoodb-server-info
432
434
  {
433
435
  "name": "CN=server1",
434
436
  "signingPublicKey": "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----",
435
- "encryptionPublicKey": "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----"
437
+ "encryptionPublicKey": "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----",
438
+ "clusterRole": "peer"
436
439
  }
437
440
  ```
438
441
 
439
- This eliminates the need to manually copy public keys between servers.
442
+ This eliminates the need to manually copy public keys between servers. `clusterRole` is the role this server announces for itself (`peer`, `hub` or `spoke`), which `add-to-network` records on the other side.
440
443
 
441
444
  ### 3. Establish trust
442
445
 
443
- The `add-to-network` CLI automates mutual trust exchange. It fetches each server's public keys from `/.well-known/mindoodb-server-info` and calls `POST /system/trusted-servers` on each side using your system admin identity.
446
+ The `add-to-network` CLI automates mutual trust exchange. It fetches each server's public keys, url and cluster role from `/.well-known/mindoodb-server-info` and calls `POST /system/trusted-servers` on each side using your system admin identity. Because it records the peer's url, trust and replication are established in the same step — there is no separate "now configure sync" pass.
444
447
 
445
448
  ```bash
446
449
  printf '%s' 'admin-pass' > ./.admin-password && chmod 600 ./.admin-password
@@ -464,83 +467,112 @@ curl -X POST http://server1:1661/system/trusted-servers \
464
467
  -d '{
465
468
  "name": "CN=server2",
466
469
  "signingPublicKey": "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----",
467
- "encryptionPublicKey": "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----"
470
+ "encryptionPublicKey": "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----",
471
+ "url": "http://server2:3001",
472
+ "direction": "bidirectional",
473
+ "role": "peer",
474
+ "attachments": "eager"
468
475
  }'
469
476
  ```
470
477
 
471
- Trust changes take effect immediately -- no restart required.
478
+ Only `name` and the two public keys are required. The rest describe the replication session and all have defaults:
472
479
 
473
- ### 4. Publish tenant to servers
480
+ | Field | Values | Default | Meaning |
481
+ | --- | --- | --- | --- |
482
+ | `url` | base url | *(none)* | Where to reach the peer. **Without it the server is trusted but never dialled** — it can push to us, we never pull from it. |
483
+ | `direction` | `bidirectional`, `push`, `pull`, `disabled` | `bidirectional` | Which legs are allowed. `pull` makes a read-only mirror; `disabled` keeps the trust but stops replicating. |
484
+ | `role` | `peer`, `hub`, `spoke` | `peer` | Mesh shape. Two `spoke`s do not open a session with each other — they exchange data through their hub. |
485
+ | `attachments` | `eager`, `lazy`, `never` | `eager` | `eager` completes each database before the next. `lazy` replicates every document store first and attachments afterwards, so an interrupted or slow run has spent its bandwidth on the text. `never` mirrors metadata only. |
474
486
 
475
- Reuse the same system admin identity that is authorized in each server's `config.json`:
487
+ Trust and configuration changes take effect immediately -- no restart required.
476
488
 
477
- ```typescript
478
- await result.tenant.publishToServer("http://server1:1661", {
479
- systemAdminUser: systemAdminIdentity,
480
- systemAdminPassword: "sysadmin-pass",
481
- adminUsername: result.adminUser.username,
482
- });
489
+ ### 4. Seed the tenant onto both servers
483
490
 
484
- await result.tenant.publishToServer("http://server2:3001", {
485
- systemAdminUser: systemAdminIdentity,
486
- systemAdminPassword: "sysadmin-pass",
487
- adminUsername: result.adminUser.username,
488
- });
491
+ **A tenant is defined by its administration keypair, so "create the same tenant id on both servers" produces two different tenants that happen to share a name.** The second server would refuse every replicated entry as *not signed by a trusted user* — correctly, because for it the signer really is a stranger. Create the tenant once and publish it to each server that should host it:
492
+
493
+ ```typescript
494
+ for (const url of ["http://server1:1661", "http://server2:3001"]) {
495
+ await result.tenant.publishToServer(url, {
496
+ systemAdminUser: systemAdminIdentity,
497
+ systemAdminPassword: "sysadmin-pass",
498
+ adminUsername: result.adminUser.username,
499
+ });
500
+ }
489
501
  ```
490
502
 
491
- ### 5. Configure per-tenant sync
503
+ Publishing registers the tenant and its admin keys. The data itself arrives through replication; you do not have to push it to both servers by hand.
504
+
505
+ To add a mirror for a tenant that already exists, publish that same tenant object to the new server and let the mesh fill it.
506
+
507
+ ### 5. Enable replication
492
508
 
493
- After trust is established, configure which tenants each server syncs. This gives full control over sync topology -- not every server needs to sync every tenant.
509
+ Add `--auto-sync` via the `command` key in each server's `docker-compose.override.yml`, or set `"cluster": { "autoSync": true }` in `config.json`:
494
510
 
495
- **Add a sync server for a tenant:**
511
+ ```yaml
512
+ services:
513
+ mindoodb:
514
+ command: ["--auto-sync"]
515
+ ```
516
+
517
+ Then restart:
496
518
 
497
519
  ```bash
498
- curl -X POST http://server1:1661/system/tenants/acme/sync-servers \
499
- -H "Content-Type: application/json" \
500
- -H "Authorization: Bearer $SYSTEM_ADMIN_JWT" \
501
- -d '{
502
- "name": "CN=server2",
503
- "url": "http://server2:3001",
504
- "syncIntervalMs": 60000,
505
- "databases": ["directory", "main"]
506
- }'
520
+ docker compose up -d
507
521
  ```
508
522
 
509
- The `databases` field is required and controls which databases are synced with the remote server. The `name` field identifies the remote server (must match the trusted server name). If a server with the same name already exists for the tenant, it is updated.
523
+ Each peer with a `url` gets one session. A session catches up on start, then follows the peer's change feed over SSE and pushes local writes as they happen, with a periodic full pass as a safety net. Nothing is per-tenant: adding a tenant to both servers is enough for it to start replicating.
510
524
 
511
- **List sync servers for a tenant:**
525
+ ### 6. Watch the mesh
526
+
527
+ `/system/cluster/*` is the administrative view, behind the same system-admin JWT and capability rules as the rest of `/system`:
512
528
 
513
529
  ```bash
514
- curl http://server1:1661/system/tenants/acme/sync-servers \
530
+ curl http://server1:1661/system/cluster/status \
515
531
  -H "Authorization: Bearer $SYSTEM_ADMIN_JWT"
516
532
  ```
517
533
 
518
- **Remove a sync server from a tenant:**
534
+ The status reports, per peer: session state, health with classified reasons, shared tenant count, lag, retry depth, rejected entries and the last error. Counts and classifications only — never a document id, so the console does not become a way around admin-blindness.
535
+
536
+ Two health reasons are worth recognizing:
537
+
538
+ - **`access-denied-backoff`** — the peer refused a batch (a purged document, a revoked key). The replicator holds its cursor and retries; it does not skip past the entries. This usually clears itself once the directory change that caused it has replicated.
539
+ - **`entries-awaiting-directory-trust`** — entries are waiting for a grant that has not arrived yet. Also self-clearing.
540
+
541
+ Mutating actions are jobs, so a long resync does not block the request:
519
542
 
520
543
  ```bash
521
- curl -X DELETE http://server1:1661/system/tenants/acme/sync-servers/CN%3Dserver2 \
544
+ curl -X POST http://server1:1661/system/cluster/actions/sync-now \
545
+ -H "Content-Type: application/json" \
546
+ -H "Authorization: Bearer $SYSTEM_ADMIN_JWT" \
547
+ -d '{"peer": "CN=server2", "tenantId": "acme"}'
548
+ # → { "jobId": "...", "job": { "state": "running", ... } }
549
+
550
+ curl http://server1:1661/system/cluster/jobs/$JOB_ID \
522
551
  -H "Authorization: Bearer $SYSTEM_ADMIN_JWT"
523
552
  ```
524
553
 
525
- Note: the server name in the URL must be percent-encoded (e.g., `CN%3Dserver2` for `CN=server2`).
526
-
527
- ### 6. Enable auto-sync
554
+ Every action is recorded in an append-only audit log (`GET /system/cluster/audit`, paged) with who, what, where and when.
528
555
 
529
- Add `--auto-sync` via the `command` key in each server's `docker-compose.override.yml`:
556
+ Because each server is administered independently, there is no cluster-wide aggregate endpoint: a console shows the whole mesh by asking each server for its own view. That keeps one server's admin credentials from becoming credentials for the others.
530
557
 
531
- ```yaml
532
- services:
533
- mindoodb:
534
- command: ["--auto-sync"]
535
- ```
558
+ ### Client failover
536
559
 
537
- Then restart:
560
+ A client can discover where else a tenant lives, without authenticating:
538
561
 
539
562
  ```bash
540
- docker compose up -d
563
+ curl "http://server1:1661/.well-known/mindoodb-cluster?tenantId=acme"
564
+ # → { "mirrors": [ { "name": "CN=server2", "url": "http://server2:3001", "role": "peer" } ] }
541
565
  ```
542
566
 
543
- The servers will periodically sync all configured tenant databases, relaying encrypted entries without decrypting them. Sync config changes take effect on the next server restart or when auto-sync timers are restarted.
567
+ Only mirrors of the tenant that was asked for are listed, so the answer says nothing about peers that exist for other tenants.
568
+
569
+ ### What the mesh guarantees
570
+
571
+ Three invariants make repeated replication converge rather than drift:
572
+
573
+ 1. **Directory first.** Within each tenant, `directory` and `userdirectory` replicate before application databases. Application entries are signed by keys the peer only learns from the directory, so any other order rejects entries that are in fact valid.
574
+ 2. **The cursor holds on rejection.** A client may skip an entry the server refuses and move on. Two servers that are meant to be identical may not: the cursor stays clamped until the entry is accepted, or the divergence would be permanent and silent.
575
+ 3. **Receipts are preserved.** A replicated entry keeps the witness receipt of the server that first accepted it, verified against `trusted-servers.json` on arrival. Re-stamping would make "trusted time" mean "the time it reached the last server in the chain", and would show every mirrored document as having appeared today.
544
576
 
545
577
  ## Data Directory Layout
546
578
 
@@ -620,11 +652,17 @@ Generated by `pnpm server:init`. Contains a `PrivateUserId` with encrypted priva
620
652
  {
621
653
  "name": "CN=server2",
622
654
  "signingPublicKey": "-----BEGIN PUBLIC KEY-----\n...",
623
- "encryptionPublicKey": "-----BEGIN PUBLIC KEY-----\n..."
655
+ "encryptionPublicKey": "-----BEGIN PUBLIC KEY-----\n...",
656
+ "url": "https://server2.example.com",
657
+ "direction": "bidirectional",
658
+ "role": "peer",
659
+ "attachments": "eager"
624
660
  }
625
661
  ]
626
662
  ```
627
663
 
664
+ This file is the whole replication topology. An entry with a `url` becomes one replication session covering every tenant both servers host; an entry without one is trusted (it may push to us) but never dialled. See [Server-to-Server Sync](#server-to-server-sync) for the field meanings.
665
+
628
666
  ### `<tenantId>/config.json`
629
667
 
630
668
  ```json
@@ -640,18 +678,12 @@ Generated by `pnpm server:init`. Contains a `PrivateUserId` with encrypted priva
640
678
  "signingPublicKey": "-----BEGIN PUBLIC KEY-----\n...",
641
679
  "encryptionPublicKey": "-----BEGIN PUBLIC KEY-----\n..."
642
680
  }
643
- ],
644
- "remoteServers": [
645
- {
646
- "name": "CN=server2",
647
- "url": "https://server2.example.com",
648
- "syncIntervalMs": 60000,
649
- "databases": ["directory", "main"]
650
- }
651
681
  ]
652
682
  }
653
683
  ```
654
684
 
685
+ Replication is not configured here. It is a property of the peer (`trusted-servers.json`), and a tenant is mirrored simply by existing on both servers.
686
+
655
687
  The `users` array is a **public-key allowlist**: each entry's identity is its
656
688
  `signingPublicKey` (with the paired `encryptionPublicKey`). The cleartext
657
689
  `username` from previous versions is **no longer required or used for matching** — clients may
@@ -673,8 +705,6 @@ extra field) for human-readable notes. Entries are matched solely by
673
705
 
674
706
  > **Set `MINDOODB_TRUST_PROXY` if anything fronts the server.** Rate limits and the `/system/*` allowlist both key on `req.ip`. Without it, every user behind the proxy shares one address, so one busy client can exhaust the address-keyed budgets for everyone and the allowlist matches the proxy instead of the operator network.
675
707
 
676
- > **Note:** The old `MINDOODB_ADMIN_API_KEY` variable has been removed. System admin **authorization** is enforced by `config.json` capabilities and JWTs. **`MINDOODB_ADMIN_ALLOWED_IPS`** is an optional **network** layer for `/system/*` only. See [Server Security](docs/server-security.md).
677
-
678
708
  ## CLI Reference
679
709
 
680
710
  ### `pnpm server:dev` / `pnpm server:start` — Start the server
@@ -685,7 +715,7 @@ Launches the MindooDB server process. `server:dev` runs via `ts-node` for develo
685
715
  |--------|-------|-------------|---------|
686
716
  | `--data-dir` | `-d` | Data directory path | `./data` |
687
717
  | `--port` | `-p` | Server port | `1661` |
688
- | `--auto-sync` | `-s` | Enable automatic sync with remote servers | disabled |
718
+ | `--auto-sync` | `-s` | Start peer replication: one session per trusted server with a `url`, mirroring every tenant both sides host. Equivalent to `"cluster": { "autoSync": true }` in `config.json` | disabled |
689
719
  | `--static-dir` | `-w` | Serve static files at `/statics/` (e.g. bootstrap UI) | — |
690
720
  | `--tls-cert` | — | Path to TLS certificate file (PEM) | — |
691
721
  | `--tls-key` | — | Path to TLS private key file (PEM) | — |
@@ -695,16 +725,18 @@ Launches the MindooDB server process. `server:dev` runs via `ts-node` for develo
695
725
 
696
726
  One-time setup that generates the server's Ed25519/RSA keypair (`server.identity.json`) and an empty `trusted-servers.json`. It also interactively offers to create a first system admin keypair and writes the initial `config.json` with that admin's public key in the `capabilities` section.
697
727
 
728
+ Both names — the server's and the system admin's — are stored in canonical form (`cn=…/o=…`). An abbreviated name is expanded, a canonical one is taken as it is, and a name without an organization is rejected: the system admin is matched against `config.json` as a string, so a client sending `cn=sysadmin/o=acme` would never match a stored `sysadmin/acme`, and an identity without an organization fails later in every path that resolves recipients.
729
+
698
730
  | Option | Alias | Description | Default |
699
731
  |--------|-------|-------------|---------|
700
- | `--name` | `-n` | Server name (e.g., "server1") | **required** |
732
+ | `--name` | `-n` | Server name. Canonical (`cn=server1/o=acme`) or abbreviated (`server1/acme`); a common name and an organization are both required, and the value is stored in canonical form | **required** |
701
733
  | `--data-dir` | `-d` | Data directory path | `./data` |
702
734
  | `--force` | `-f` | Overwrite existing identity | — |
703
735
  | `--help` | `-h` | Show help message | — |
704
736
 
705
737
  ### `pnpm server:add-to-network` — Add a server to the network
706
738
 
707
- Automates mutual trust exchange when adding a new server to an existing network. For each existing server it fetches public keys from `/.well-known/mindoodb-server-info` and calls `POST /system/trusted-servers` in both directions so that the new server and every existing server trust each other.
739
+ Automates mutual trust exchange when adding a new server to an existing network. For each existing server it fetches public keys, url and cluster role from `/.well-known/mindoodb-server-info` and calls `POST /system/trusted-servers` in both directions, so the new server and every existing server both trust *and* can dial each other.
708
740
 
709
741
  | Option | Description | Default |
710
742
  |--------|-------------|---------|
@@ -782,17 +814,41 @@ The **`curl`** examples in this document use **`$SYSTEM_ADMIN_JWT`** as a placeh
782
814
  | Method | Endpoint | Auth | Description |
783
815
  |--------|----------|------|-------------|
784
816
  | `GET` | `/system/trusted-servers` | JWT | List trusted servers |
785
- | `POST` | `/system/trusted-servers` | JWT | Add a trusted server |
817
+ | `POST` | `/system/trusted-servers` | JWT | Add or update a trusted server (keys, `url`, `direction`, `role`, `attachments`) |
786
818
  | `DELETE` | `/system/trusted-servers/:serverName` | JWT | Remove a trusted server |
787
819
 
788
- #### Per-Tenant Sync Server Management
820
+ #### Cluster Administration
821
+
822
+ The console surface for peer replication. Reads and writes are separate capabilities, so an auditor role can be granted `GET:/system/cluster/*` without the ability to change anything.
789
823
 
790
824
  | Method | Endpoint | Auth | Description |
791
825
  |--------|----------|------|-------------|
792
- | `GET` | `/system/tenants/:tenantId/sync-servers` | JWT | List sync servers for a tenant |
793
- | `POST` | `/system/tenants/:tenantId/sync-servers` | JWT | Add or update a sync server |
794
- | `DELETE` | `/system/tenants/:tenantId/sync-servers/:serverName` | JWT | Remove a sync server |
795
- | `POST` | `/system/tenants/:tenantId/trigger-sync` | JWT | Trigger sync for a tenant |
826
+ | `GET` | `/system/cluster/topology` | JWT | Configured peers and their roles |
827
+ | `GET` | `/system/cluster/status` | JWT | Live per-peer state: health, lag, retry depth, last error |
828
+ | `GET` | `/system/cluster/tenants/:tenantId` | JWT | The same, narrowed to one tenant |
829
+ | `POST` | `/system/cluster/actions/:action` | JWT | Start a job: `sync-now`, `retry-rejected`, `refresh-intersection`, `pause`, `resume` |
830
+ | `GET` | `/system/cluster/jobs` | JWT | Recent jobs |
831
+ | `GET` | `/system/cluster/jobs/:jobId` | JWT | One job's state and result |
832
+ | `GET` | `/system/cluster/audit` | JWT | Append-only record of administrative actions (paged) |
833
+ | `PUT`/`POST` | `/system/cluster/peers/:name` | JWT | Create or reconfigure a peer |
834
+ | `DELETE` | `/system/cluster/peers/:name` | JWT | Remove a peer |
835
+
836
+ Status, job and audit responses carry counts and classified reasons only — never document ids or author keys.
837
+
838
+ #### Peer Protocol
839
+
840
+ Server-to-server only, authenticated with a peer token from `trusted-servers.json` (a system-admin JWT is refused, and vice versa). Listed for completeness; operators do not call these.
841
+
842
+ | Method | Endpoint | Description |
843
+ |--------|----------|-------------|
844
+ | `POST` | `/system/peer/challenge` | Request a challenge (only for a trusted signing key) |
845
+ | `POST` | `/system/peer/authenticate` | Exchange a signed challenge for a peer token |
846
+ | `POST` | `/system/peer/tenant-bloom` | Exchange Bloom summaries of tenant ids to find the intersection |
847
+ | `GET` | `/system/peer/databases` | Database ids held for a shared tenant |
848
+ | `GET` | `/system/peer/events` | SSE change feed for shared tenants |
849
+ | `POST` | `/system/peer/sync` | Ask the peer to run a sync pass towards us |
850
+
851
+ The data itself moves over the ordinary `/:tenantId/sync/*` routes: a peer speaks the client protocol with a peer token, rather than a second replication format existing alongside it.
796
852
 
797
853
  #### Server Config Management
798
854
 
@@ -1013,7 +1069,7 @@ docker run --rm -it \
1013
1069
  -v "$(pwd)/../mindoodb-data/.server_unlock:/run/secrets/server_unlock:ro" \
1014
1070
  -e MINDOODB_SERVER_PASSWORD_FILE=/run/secrets/server_unlock \
1015
1071
  --entrypoint node \
1016
- mindoodb-server dist/node/server/serverinit.js --data-dir /data --name server1
1072
+ mindoodb-server dist/node/server/serverinit.js --data-dir /data --name server1/acme
1017
1073
 
1018
1074
  # Start the server
1019
1075
  docker compose up -d
@@ -38,6 +38,18 @@ export declare class ClientNetworkContentAddressedStore implements ContentAddres
38
38
  private capabilitiesPromise;
39
39
  private syncAuthOverride;
40
40
  private _syncAbortSignal?;
41
+ /**
42
+ * Supplies a ready-made bearer token instead of running the tenant
43
+ * challenge-response handshake.
44
+ *
45
+ * Used by server-to-server replication: a peer authenticates once at the
46
+ * cluster level (`/system/peer/authenticate`) against `trusted-servers.json`
47
+ * and holds no tenant grant, so the per-tenant handshake would always fail.
48
+ * Everything else — the entire sync protocol — is identical, which is the
49
+ * point: the mesh reuses the client protocol rather than inventing a second
50
+ * replication format.
51
+ */
52
+ private externalTokenProvider;
41
53
  /**
42
54
  * Create a new ClientNetworkContentAddressedStore.
43
55
  *
@@ -158,6 +170,11 @@ export declare class ClientNetworkContentAddressedStore implements ContentAddres
158
170
  /**
159
171
  * Ensure we have a valid access token, authenticating if necessary.
160
172
  */
173
+ /**
174
+ * Route every authenticated call through `provider` instead of the tenant
175
+ * handshake. See {@link externalTokenProvider}.
176
+ */
177
+ setExternalTokenProvider(provider: (() => Promise<string>) | null): void;
161
178
  private ensureAuthenticated;
162
179
  private performAuthentication;
163
180
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ClientNetworkContentAddressedStore.d.ts","sourceRoot":"","sources":["../../../src/appendonlystores/network/ClientNetworkContentAddressedStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ClientNetworkContentAddressedStore.d.ts","sourceRoot":"","sources":["../../../src/appendonlystores/network/ClientNetworkContentAddressedStore.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,18 @@ class ClientNetworkContentAddressedStore {
43
43
  this.capabilitiesCache = null;
44
44
  this.capabilitiesPromise = null;
45
45
  this.syncAuthOverride = null;
46
+ /**
47
+ * Supplies a ready-made bearer token instead of running the tenant
48
+ * challenge-response handshake.
49
+ *
50
+ * Used by server-to-server replication: a peer authenticates once at the
51
+ * cluster level (`/system/peer/authenticate`) against `trusted-servers.json`
52
+ * and holds no tenant grant, so the per-tenant handshake would always fail.
53
+ * Everything else — the entire sync protocol — is identical, which is the
54
+ * point: the mesh reuses the client protocol rather than inventing a second
55
+ * replication format.
56
+ */
57
+ this.externalTokenProvider = null;
46
58
  this.dbId = dbId;
47
59
  this.storeKind = storeKind;
48
60
  this.transport = transport;
@@ -531,7 +543,17 @@ class ClientNetworkContentAddressedStore {
531
543
  /**
532
544
  * Ensure we have a valid access token, authenticating if necessary.
533
545
  */
546
+ /**
547
+ * Route every authenticated call through `provider` instead of the tenant
548
+ * handshake. See {@link externalTokenProvider}.
549
+ */
550
+ setExternalTokenProvider(provider) {
551
+ this.externalTokenProvider = provider;
552
+ }
534
553
  async ensureAuthenticated() {
554
+ if (this.externalTokenProvider) {
555
+ return this.externalTokenProvider();
556
+ }
535
557
  const now = Date.now();
536
558
  const sharedState = this.getSharedAuthenticationState();
537
559
  const sharedKey = this.getSharedAuthenticationKey();
@@ -1 +1 @@
1
- {"version":3,"file":"ClientNetworkContentAddressedStore.js","sourceRoot":"","sources":["../../../src/appendonlystores/network/ClientNetworkContentAddressedStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ClientNetworkContentAddressedStore.js","sourceRoot":"","sources":["../../../src/appendonlystores/network/ClientNetworkContentAddressedStore.ts"],"names":[],"mappings":"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"}