@ifc-lite/collab-server
v0.7.0
Published
Reference websocket sync server for @ifc-lite/collab
Downloads
826
Maintainers
Readme
@ifc-lite/collab-server
Reference websocket sync server for @ifc-lite/collab.
Status: early (0.x). y-websocket-compatible sync, room manager, pluggable auth hook (viewer / commenter / editor / admin roles), file, S3 and Redis persistence, audit log, rate limiting, retention policies, metrics endpoint, blob route, and healthcheck.
Run it
npx @ifc-lite/collab-server
# default port 1234Or install it:
npm install @ifc-lite/collab-server
npx ifc-lite-collab-serverEnvironment variables:
| Var | Default | Purpose |
|---|---|---|
| COLLAB_PORT | 1234 | Listen port |
| COLLAB_HOST | 0.0.0.0 | Listen host |
| COLLAB_DATA_DIR | ./.collab-data | Persistence root for room logs, blobs, and the layer registry |
| COLLAB_MAX_ROOMS | 1024 | Soft cap on simultaneous rooms |
| COLLAB_LAYER_REGISTRY | off | 1/true mounts the layer registry (/api/v1/layers\|refs\|reviews), disk-backed under COLLAB_DATA_DIR/layer-registry |
| COLLAB_REGISTRY_WEBHOOK_URL | off | POST registry events (layer pushed, ref moved/merged, review opened/updated/commented) to this URL |
| COLLAB_REGISTRY_WEBHOOK_SECRET | none | HMAC-SHA256 signing secret for webhook payloads (x-ifclite-signature) |
Programmatic use
import { startCollabServer } from '@ifc-lite/collab-server';
// Your own credential check — a JWT verify, a session lookup, whatever you
// already run. (`createRoomTokenAuthenticator` ships one if you want ours.)
declare function verify(token: string | undefined): boolean;
const server = await startCollabServer({
port: 4444,
authenticate: async (token, room) => {
if (!verify(token)) return null;
return { userId: 'louis', role: 'editor' };
},
});
// Later:
await server.stop();Also exported: S3Persistence, RedisPersistence, MemoryPersistence,
FilePersistence, RoomManager, audit sinks, and retention helpers.
Docs
See the ifc-lite docs.
License
MPL-2.0
