Skip to content
Rolodex
Menu

Product

The product

A directory-lookup API with a web app over it. Rolodex keeps a read-only cache of an upstream directory and answers questions about it.

A read-only cache

A sync source feeds the directory. The AD/LDAP source is real; the Workday and SCIM sources are stubs. Each sync run upserts users and groups and marks users who are gone upstream as inactive tombstones.

Synced rows are not edited in Rolodex: the sync source owns them. Admins can also create native rows, which no sync ever touches.

The LDAP Sync Cache contract

The API implements the external LDAP Sync Cache contract in swagger.json: get a user by sAMAccountName, distinguishedName, DSS username, employee number or objectGUID, search users, list users and groups, and get a group with its nested groups expanded.

An SSH keys lookup returns the public SSH keys of one user, or of every member of a group, by name.

Private by default, published on purpose

Every directory user and group is private until an admin publishes it. Published rows reach the public surface, which needs no account and shows only non-personal fields.

Directory lookups need a signed-in person with the org:contributor role or above, and they refuse service-account PATs.

Group membership becomes access

An access binding says: members of this directory group get this role on this team, repo, project or group path. A reconciler compares that desired set with the platform and applies grants.

Connectors exist for GitHub, Azure DevOps, GitLab and Fleetworks. A new binding only previews until an admin confirms it, and enforcement is per target: report only, additive (the default) or full.

Machines and other systems

Service-account PATs are long-lived machine credentials with the dg_ prefix. Webhooks receive signed events such as user.public_changed, directory.synced and access.drift_detected.

Scheduled, token-gated drains send pending webhook deliveries, run sync sources and reconcile access targets.

Mobile and desktop

The repo also contains an Expo mobile app and a Tauri desktop shell, each with a manual release workflow. No mobile or desktop release has been published, so this site does not offer a download.

At a glance

API
REST, Hono with OpenAPI, document at /openapi.json
Contract
LDAP Sync Cache (swagger.json, Swagger 2.0)
Database
PostgreSQL through Drizzle ORM
Sign-in
Zitadel (OIDC), the shared Fleetworks identity provider
Tenancy
One global directory; Orgs own only admin configuration
Default visibility
Private until published
PAT format
dg_…, for machines
Webhook signature
HMAC-SHA256 in X-Rolodex-Signature

Look up anyone in your directory

Sign in with your Fleetworks account, or start with the public surface, which needs no account.