{"_id":"@accord-kit/server","_rev":"7-3bdb7a56de9ab210de20186bad00fdad","name":"@accord-kit/server","dist-tags":{"latest":"0.1.6"},"versions":{"0.1.0":{"name":"@accord-kit/server","version":"0.1.0","_id":"@accord-kit/server@0.1.0","maintainers":[{"name":"dmihal","email":"david@dmihal.com"}],"bin":{"accord-server":"bin/accord-server.mjs"},"dist":{"shasum":"fb4f3bfd7af56d028869da9ade4cfa19bee46b89","tarball":"https://registry.npmjs.org/@accord-kit/server/-/server-0.1.0.tgz","fileCount":23,"integrity":"sha512-UUkg1UFgONSgK+fPUBC1EYJ2738qFeqNoikZpbW1PBSujxZ1JMqV3YeEiENnbBcKfv1/y5ZXbnBW14YQbPtFOQ==","signatures":[{"sig":"MEQCIFS97TipUEgUkv+dtjaCjT6H7yScytoP7a/98UapYUvoAiBr5nzcTR3jyiCVpVK/l+HLx67bL75KGXBYRC6Cgc6WAQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23752},"main":"./dist/index.js","type":"module","_from":"file:accord-kit-server-0.1.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"rm -rf dist && tsc -p tsconfig.json","start":"node bin/accord-server.mjs","typecheck":"tsc -p tsconfig.json --noEmit","start:verbose":"node bin/accord-server.mjs --verbose"},"_npmUser":{"name":"dmihal","email":"david@dmihal.com"},"_resolved":"/private/var/folders/vp/4fx1w3fd7ngcpz0vt7zgtkdh0000gn/T/3c83e9b1c729bf96fe262eba07b2135e/accord-kit-server-0.1.0.tgz","_integrity":"sha512-UUkg1UFgONSgK+fPUBC1EYJ2738qFeqNoikZpbW1PBSujxZ1JMqV3YeEiENnbBcKfv1/y5ZXbnBW14YQbPtFOQ==","_npmVersion":"11.9.0","description":"WebSocket sync server for AccordKit, built on [Hocuspocus](https://hocuspocus.dev) with SQLite persistence.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"yaml":"^2.7.0","commander":"^13.0.0","@accord-kit/core":"0.1.0","@hocuspocus/server":"^4.0.0","@hocuspocus/extension-sqlite":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0_1777077140692_0.4505602868011327","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@accord-kit/server","version":"0.1.1","_id":"@accord-kit/server@0.1.1","maintainers":[{"name":"dmihal","email":"david@dmihal.com"}],"bin":{"accord-server":"bin/accord-server.mjs"},"dist":{"shasum":"dcfc7e00fc02a12892c9f2b3c2e0ea1f6844ed53","tarball":"https://registry.npmjs.org/@accord-kit/server/-/server-0.1.1.tgz","fileCount":23,"integrity":"sha512-Xkq0Oh+SMeCW0E3ttzJxXppXLwHfuYMsJNzxKVXo7VzC8AwcNywvcXGD3t5qerrwvuNECrU3p6NCNwz4V5chpQ==","signatures":[{"sig":"MEUCIFdLR8OsmKBw9i06RmKTfQ2cH5NXnlsmU8E0yvjHJ9IDAiEAqLp4FWT9FkY+4QT06ZNIudHKnPf0RuY1kPenOMhOx0M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23752},"main":"./dist/index.js","type":"module","_from":"file:accord-kit-server-0.1.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"rm -rf dist && tsc -p tsconfig.json","start":"node bin/accord-server.mjs","typecheck":"tsc -p tsconfig.json --noEmit","start:verbose":"node bin/accord-server.mjs --verbose"},"_npmUser":{"name":"dmihal","email":"david@dmihal.com"},"_resolved":"/private/var/folders/vp/4fx1w3fd7ngcpz0vt7zgtkdh0000gn/T/d36b10c31f7342b28e5e5e14ee2f2652/accord-kit-server-0.1.1.tgz","_integrity":"sha512-Xkq0Oh+SMeCW0E3ttzJxXppXLwHfuYMsJNzxKVXo7VzC8AwcNywvcXGD3t5qerrwvuNECrU3p6NCNwz4V5chpQ==","_npmVersion":"11.9.0","description":"WebSocket sync server for AccordKit, built on [Hocuspocus](https://hocuspocus.dev) with SQLite persistence.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"yaml":"^2.7.0","commander":"^13.0.0","@accord-kit/core":"0.1.1","@hocuspocus/server":"^4.0.0","@hocuspocus/extension-sqlite":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/server_0.1.1_1777078729653_0.8415133404415611","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@accord-kit/server","version":"0.1.2","_id":"@accord-kit/server@0.1.2","maintainers":[{"name":"dmihal","email":"david@dmihal.com"}],"bin":{"accord-server":"bin/accord-server.mjs"},"dist":{"shasum":"38f1b3dec1045e3e7bb1144e6016e6130781015d","tarball":"https://registry.npmjs.org/@accord-kit/server/-/server-0.1.2.tgz","fileCount":23,"integrity":"sha512-K4S8ypbEjLVWX4rXtCw4u1ns4sChcNInFVn6UEIFRg73gw+Wds/0eft4PE25DkOI1UGp7rg1+zrVgOPeCs79PQ==","signatures":[{"sig":"MEYCIQChDcU/w9/efF5qFF2QYcI5rcfSS0iEzfyHAg+tnEAaqgIhAKb6ZJ2/5vwiIdXxMVCBNtmC23JYxA6RbujgL2UR1IPi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23752},"main":"./dist/index.js","type":"module","_from":"file:accord-kit-server-0.1.2.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"rm -rf dist && tsc -p tsconfig.json","start":"node bin/accord-server.mjs","typecheck":"tsc -p tsconfig.json --noEmit","start:verbose":"node bin/accord-server.mjs --verbose"},"_npmUser":{"name":"dmihal","email":"david@dmihal.com"},"_resolved":"/private/var/folders/vp/4fx1w3fd7ngcpz0vt7zgtkdh0000gn/T/eb820d9934aaa5bf94054181122626f0/accord-kit-server-0.1.2.tgz","_integrity":"sha512-K4S8ypbEjLVWX4rXtCw4u1ns4sChcNInFVn6UEIFRg73gw+Wds/0eft4PE25DkOI1UGp7rg1+zrVgOPeCs79PQ==","_npmVersion":"11.9.0","description":"WebSocket sync server for AccordKit, built on [Hocuspocus](https://hocuspocus.dev) with SQLite persistence.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"yaml":"^2.7.0","commander":"^13.0.0","@accord-kit/core":"0.1.2","@hocuspocus/server":"^4.0.0","@hocuspocus/extension-sqlite":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/server_0.1.2_1777079468665_0.7045212497769366","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@accord-kit/server","version":"0.1.3","_id":"@accord-kit/server@0.1.3","maintainers":[{"name":"dmihal","email":"david@dmihal.com"}],"bin":{"accord-server":"bin/accord-server.mjs"},"dist":{"shasum":"51e212010c45c90dcb08011edf441f0282609caa","tarball":"https://registry.npmjs.org/@accord-kit/server/-/server-0.1.3.tgz","fileCount":23,"integrity":"sha512-N6diKFFgauvoxmF4XUubztaVw/QahPYPcOM80HcBJj7Z1UBYsZq8F2tKDxUI3TroRzO7yq2WeET90fo8AokzbA==","signatures":[{"sig":"MEQCIBbNrtdzCkHSKyr/wYZ/KDU11lK6PHg9qrb4nv+23yXNAiBwPTo6WwM8wB+c9RHJZtbqopuWOB5XGGKpf5oBsi9qSA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23752},"main":"./dist/index.js","type":"module","_from":"file:accord-kit-server-0.1.3.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"rm -rf dist && tsc -p tsconfig.json","start":"node bin/accord-server.mjs","typecheck":"tsc -p tsconfig.json --noEmit","start:verbose":"node bin/accord-server.mjs --verbose"},"_npmUser":{"name":"dmihal","email":"david@dmihal.com"},"_resolved":"/private/var/folders/vp/4fx1w3fd7ngcpz0vt7zgtkdh0000gn/T/ec4e1f213955e0ae151e9ace8d5ecdf0/accord-kit-server-0.1.3.tgz","_integrity":"sha512-N6diKFFgauvoxmF4XUubztaVw/QahPYPcOM80HcBJj7Z1UBYsZq8F2tKDxUI3TroRzO7yq2WeET90fo8AokzbA==","_npmVersion":"11.9.0","description":"WebSocket sync server for AccordKit, built on [Hocuspocus](https://hocuspocus.dev) with SQLite persistence.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"yaml":"^2.7.0","commander":"^13.0.0","@accord-kit/core":"0.1.3","@hocuspocus/server":"^4.0.0","@hocuspocus/extension-sqlite":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/server_0.1.3_1777145929282_0.0622533369283067","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@accord-kit/server","version":"0.1.4","_id":"@accord-kit/server@0.1.4","maintainers":[{"name":"dmihal","email":"david@dmihal.com"}],"bin":{"accord-server":"bin/accord-server.mjs"},"dist":{"shasum":"9052aa4b6e6e65cc9a2c81130c80a40c186522d2","tarball":"https://registry.npmjs.org/@accord-kit/server/-/server-0.1.4.tgz","fileCount":23,"integrity":"sha512-HVD0iiZM9RTnjRVuM6O3rvuzVP6bKIVFPKoGBF/ejp45DezpFCr51vYRbhBhWwDSA2lctWZPmhPsD3kjHX+Kyw==","signatures":[{"sig":"MEUCIHT9T404TFrhsyQ6K/qd54TGZyaiI0SHHCHX3przJ7AqAiEA7VXwicr2ZmZCWp6TZGVTfYgbT2urHBcXGvmQy/q9DIo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23752},"main":"./dist/index.js","type":"module","_from":"file:accord-kit-server-0.1.4.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"rm -rf dist && tsc -p tsconfig.json","start":"node bin/accord-server.mjs","typecheck":"tsc -p tsconfig.json --noEmit","start:verbose":"node bin/accord-server.mjs --verbose"},"_npmUser":{"name":"dmihal","email":"david@dmihal.com"},"_resolved":"/private/var/folders/vp/4fx1w3fd7ngcpz0vt7zgtkdh0000gn/T/1562016ea3d7f01dbee6a1e334c1a103/accord-kit-server-0.1.4.tgz","_integrity":"sha512-HVD0iiZM9RTnjRVuM6O3rvuzVP6bKIVFPKoGBF/ejp45DezpFCr51vYRbhBhWwDSA2lctWZPmhPsD3kjHX+Kyw==","_npmVersion":"11.9.0","description":"WebSocket sync server for AccordKit, built on [Hocuspocus](https://hocuspocus.dev) with SQLite persistence.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"yaml":"^2.7.0","commander":"^13.0.0","@accord-kit/core":"0.1.4","@hocuspocus/server":"^4.0.0","@hocuspocus/extension-sqlite":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/server_0.1.4_1777147876713_0.9834539570826177","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@accord-kit/server","version":"0.1.5","_id":"@accord-kit/server@0.1.5","maintainers":[{"name":"dmihal","email":"david@dmihal.com"}],"bin":{"accord-server":"bin/accord-server.mjs"},"dist":{"shasum":"b1ebe6572345f337edfb234e7bee35d7c0b6b816","tarball":"https://registry.npmjs.org/@accord-kit/server/-/server-0.1.5.tgz","fileCount":67,"integrity":"sha512-iBVVxi0SztV/T96egn6D3dsRuSFX3eqUiMtTDt/jOVe83Il6aCG4CAmD18ODSm+7/irZArF8xN8eOzwwXqyiNw==","signatures":[{"sig":"MEQCIFvAu+zCtHfzlG0hjMDAEEf/ZVT9li+0tG/jvggbK9PaAiB9dju2L1uLWmeCNqoW4L3u8uxccv4m09G+dvNXDxgZhw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128909},"main":"./dist/index.js","type":"module","_from":"file:accord-kit-server-0.1.5.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"rm -rf dist && tsc -p tsconfig.json","start":"node bin/accord-server.mjs","typecheck":"tsc -p tsconfig.json --noEmit","start:verbose":"node bin/accord-server.mjs --verbose"},"_npmUser":{"name":"dmihal","email":"david@dmihal.com"},"_resolved":"/private/var/folders/vp/4fx1w3fd7ngcpz0vt7zgtkdh0000gn/T/412cc09690834b7208206a2eba8e5649/accord-kit-server-0.1.5.tgz","_integrity":"sha512-iBVVxi0SztV/T96egn6D3dsRuSFX3eqUiMtTDt/jOVe83Il6aCG4CAmD18ODSm+7/irZArF8xN8eOzwwXqyiNw==","_npmVersion":"11.9.0","description":"WebSocket sync server for AccordKit, built on [Hocuspocus](https://hocuspocus.dev).","directories":{},"_nodeVersion":"24.14.0","dependencies":{"pg":"^8.16.3","yjs":"^13.6.0","yaml":"^2.7.0","commander":"^13.0.0","better-sqlite3":"^12.9.0","@accord-kit/core":"0.1.5","@hocuspocus/server":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/server_0.1.5_1777490514182_0.9075661409259776","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@accord-kit/server","version":"0.1.6","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"accord-server":"bin/accord-server.mjs"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"publishConfig":{"access":"public"},"dependencies":{"@hocuspocus/server":"^4.0.0","better-sqlite3":"^12.9.0","commander":"^13.0.0","pg":"^8.16.3","yjs":"^13.6.0","yaml":"^2.7.0","@accord-kit/core":"0.1.6"},"scripts":{"build":"rm -rf dist && tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","start":"node bin/accord-server.mjs","start:verbose":"node bin/accord-server.mjs --verbose"},"_id":"@accord-kit/server@0.1.6","description":"WebSocket sync server for AccordKit, built on [Hocuspocus](https://hocuspocus.dev).","_integrity":"sha512-c80QeA02Ss8dm1ZG4rcQai9gc3QJycSDVEqoXe8sg0qZiZarEiBcCvAf671H8zuPUFn0AD6z2nOHHE4+Y9iIDQ==","_resolved":"/private/var/folders/vp/4fx1w3fd7ngcpz0vt7zgtkdh0000gn/T/a6579b9857ac62e4547de57901f96130/accord-kit-server-0.1.6.tgz","_from":"file:accord-kit-server-0.1.6.tgz","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-c80QeA02Ss8dm1ZG4rcQai9gc3QJycSDVEqoXe8sg0qZiZarEiBcCvAf671H8zuPUFn0AD6z2nOHHE4+Y9iIDQ==","shasum":"adde3889687c253fec4fd72a54d8a2bfad6aecd9","tarball":"https://registry.npmjs.org/@accord-kit/server/-/server-0.1.6.tgz","fileCount":67,"unpackedSize":129592,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGsctKGIA7tm2lg8DsjfQ/yqKhfxbHjr8ctT4zd6Fbh5AiANG/JwLlE9BcG7ItNneBGm1a7XJVSMsJ59pbS5pQ0bSg=="}]},"_npmUser":{"name":"dmihal","email":"david@dmihal.com"},"directories":{},"maintainers":[{"name":"dmihal","email":"david@dmihal.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/server_0.1.6_1777500801762_0.09088168010905706"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-25T00:32:20.574Z","modified":"2026-04-29T22:13:22.054Z","0.1.0":"2026-04-25T00:32:20.892Z","0.1.1":"2026-04-25T00:58:49.789Z","0.1.2":"2026-04-25T01:11:08.821Z","0.1.3":"2026-04-25T19:38:49.433Z","0.1.4":"2026-04-25T20:11:16.851Z","0.1.5":"2026-04-29T19:21:54.309Z","0.1.6":"2026-04-29T22:13:21.912Z"},"description":"WebSocket sync server for AccordKit, built on [Hocuspocus](https://hocuspocus.dev).","maintainers":[{"name":"dmihal","email":"david@dmihal.com"}],"readme":"# @accord-kit/server\n\nWebSocket sync server for AccordKit, built on\n[Hocuspocus](https://hocuspocus.dev).\n\nThe server stores text documents per vault. SQLite is the default storage\nbackend; Postgres is also supported for document storage. Clients connect over\nWebSocket and text files are synced via [Yjs](https://yjs.dev) CRDTs.\n\n## Install\n\n```bash\nnpm install -g @accord-kit/server\n```\n\n## Commands\n\n### `accord-server start`\n\n```bash\naccord-server\naccord-server start\n```\n\nBinds to `ws://127.0.0.1:1234` by default and stores data in `./data.db`.\n\nOptions:\n\n```text\n  -c, --config <path>    Path to a JSON or YAML config file\n  --address <address>    Address to bind\n  -p, --port <port>      Port to bind\n  --key                  Run in key auth mode (require API keys)\n  --open                 Run in open auth mode (no API keys required)\n  -v, --verbose          Log every document event\n```\n\nThere is no `accord-server init`. In `auth.mode: key`, the first identity and\nfirst vault are created by the first unauthenticated `POST /vaults` request\nfrom a client.\n\n## Configuration\n\nCreate `accord-server.yaml` (or `.json`) next to the database:\n\n```yaml\naddress: 127.0.0.1\nport: 1234\nauth:\n  mode: key\n  jwt:\n    publicKeys: []\nstorage:\n  driver: sqlite\n  sqlite:\n    path: ./data.db\n  postgres:\n    url: ''\n    poolSize: 10\nquiet: false\nverbose: false\n```\n\nEnvironment variables override file values:\n\n| Variable | Field |\n|---|---|\n| `ACCORD_ADDRESS` | `address` |\n| `ACCORD_PORT` | `port` |\n| `ACCORD_AUTH_MODE` | `auth.mode` |\n| `ACCORD_DB_PATH` | `storage.sqlite.path` |\n| `ACCORD_STORAGE_DRIVER` | `storage.driver` |\n| `ACCORD_PG_URL` | `storage.postgres.url` |\n| `ACCORD_PG_POOL_SIZE` | `storage.postgres.poolSize` |\n| `ACCORD_JWT_ISSUER` | `auth.jwt.issuer` |\n| `ACCORD_JWT_AUDIENCE` | `auth.jwt.audience` |\n| `ACCORD_JWT_PUBLIC_KEY_PATH` | `auth.jwt.publicKeys[0].publicKeyPath` |\n| `ACCORD_JWT_KID` | `auth.jwt.publicKeys[0].kid` |\n\n## Auth Modes\n\n### `open`\n\nLocal development mode.\n\n- No application-level key is required.\n- Clients still connect to explicit vault URLs such as\n  `ws://host:1234/vaults/<vaultId>?user=Alice`.\n- The server warns if `auth.mode=open` is bound to a non-loopback address.\n\n### `key`\n\nInvite-based identity and vault access control.\n\n- There is no special `default` vault.\n- There is no server-wide admin role.\n- Any user can create a vault.\n- Any vault member can invite more users into that vault.\n- Redeeming an invite with an existing key adds vault access to the existing\n  identity instead of creating a new one.\n\nTypical flow:\n\n1. Start the server with `auth.mode: key`.\n2. First user creates a vault:\n\n```bash\naccord vault create team-notes --server ws://localhost:1234 --user \"David's laptop\"\n```\n\n3. Existing member generates an invite:\n\n```bash\naccord vault invite team-notes\n```\n\n4. New client joins:\n\n```bash\naccord join 'accord://host:1234/<vaultId>?invite=accord_inv_...&tls=0'\n```\n\n`key` mode currently requires `storage.driver: sqlite`, because the identity\nand invite store is SQLite-backed.\n\n### `jwt`\n\nJWT mode validates bearer tokens and enforces vault membership from the\n`vaults` claim. It supports sync, document listing, and `GET /vaults`, but not\nthe invite/identity onboarding API.\n\nExample JWT config:\n\n```yaml\naddress: 0.0.0.0\nport: 1234\nauth:\n  mode: jwt\n  jwt:\n    issuer: accord-kit\n    audience: accord-kit\n    publicKeys:\n      - kid: default\n        algorithm: ES256\n        publicKeyPath: ./jwt.pub.pem\nstorage:\n  driver: postgres\n  sqlite:\n    path: ./data.db\n  postgres:\n    url: postgres://accord:secret@localhost:5432/accord\n    poolSize: 10\n```\n\n## Vault Behavior\n\n- WebSocket clients connect to explicit vault URLs such as\n  `ws://host:1234/vaults/<vaultId>?user=<name>`.\n- The server stores documents by `(vaultId, documentId)`, so two vaults can\n  both contain `notes/today.md` without collision.\n- `GET /vaults` lists vault IDs the current caller can access.\n- `GET /vaults/<vaultId>/documents` lists text documents for that vault.\n\nIn `key` mode the following management endpoints are also active:\n\n- `POST /auth/redeem`\n- `GET /auth/whoami`\n- `POST /vaults`\n- `POST /vaults/<vaultId>/invites`\n- `GET /vaults/<vaultId>/invites`\n- `DELETE /vaults/<vaultId>/invites/<code>`\n- `GET /vaults/<vaultId>/members`\n\n## Programmatic Use\n\n```typescript\nimport { createAccordServer } from '@accord-kit/server'\n\nconst server = createAccordServer({\n  address: '127.0.0.1',\n  port: 1234,\n  auth: {\n    mode: 'open',\n    jwt: {\n      publicKeys: [],\n    },\n  },\n  storage: {\n    driver: 'sqlite',\n    sqlite: {\n      path: './data.db',\n    },\n    postgres: {\n      url: '',\n      poolSize: 10,\n    },\n  },\n  quiet: false,\n  verbose: false,\n})\n\nawait server.listen()\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}