Connecting a tool
Rules that apply to every connector. Read this once and the seven per-connector pages become setup instructions rather than concepts.
Available connectors#
You never register an application yourself. Governax operates one Slack app, one GitHub App, one Google service account and one Microsoft Entra app registration, so your side of the setup is authorising ours rather than building your own. Okta and GitLab take a read-only token you create; AWS takes a role you create.
One connection, one entity#
A connector belongs to exactly one entity, and its events land only in that entity's ledger. An external account, meaning one Slack workspace, GitHub organisation, GitLab group, Okta domain, Google domain, Microsoft tenant or AWS account, can be connected to only one entity at a time across all of Governax.
How credentials are stored#
Only Slack, Okta and GitLab hold a long-lived secret. The other four are designed so that no reusable credential is held: GitHub and Entra ID tokens are minted per operation from Governax's own app registrations, Google access is authorised on your side and can be withdrawn there, and AWS access is a role your account grants and can revoke.
What happens when you connect#
- The credential is verified before the connection is saved. A connector that cannot actually read is reported at connect time rather than failing silently later.
- A baseline snapshot is taken. Governax records who already has access, so the ledger has a starting position rather than only recording changes from now on. These arrive as
access.baseline_observedevents. - The baseline never blocks the connection. If the snapshot fails, the connection still succeeds and events still flow.
Reconnecting the same account reuses the same connection. Baseline events carry deterministic identifiers, so re-running one never duplicates history, and the polled connectors keep their position so a reconnect does not re-import everything.
What disconnecting does#
Disconnecting stops ingestion. It never removes anything already recorded: the ledger is append-only, so every event captured while the connector was live stays exactly where it is, and remains verifiable.
A tool can also disconnect itself. Uninstalling the Slack app or the GitHub App from that tool records integration.disconnected_remotely and marks the connection dead, so the interface does not keep showing a healthy badge for something that stopped working.
Connection health#
Each connection surfaces:
- Status, connected or disconnected
- Which external account it is bound to
- When it was connected, and by whom
- The time of the last event received
- The last error, if there was one
One shared dependency worth knowing about for anyone reviewing architecture: all seven connectors depend on the same queue and scheduling infrastructure. Details of the pipeline are in How events reach the ledger.