Integration Hub
The single gateway between AI-EOS and every external platform. No module calls a service directly — each declares a capability, and the Hub resolves it to whichever connector is installed, enabled and authenticated.
Integration Estate
5 connected2 auth broken2 connectors cannot authenticate — reconnect to restore routing.
Connected Integrations9
API Gateway
NominalLatency and error rate are volume-weighted, so a connector serving four calls a day does not move the estate mean as much as one serving forty thousand. Integration Hub · gateway.summarise().
HTTP API Gateway34
ReadingReading live figures from /api/v1/health…
Rate limits are counted per server process. A multi-instance deployment multiplies every published ceiling by the instance count. Satisfy the RateLimiter port with a shared store before relying on these numbers across instances.
Sync Queue12
Behind- customer recordsrunningStripe · Executive Team4,103 records · 29m ago
- product cataloguerunningShopify · Department Management3,671 records · 30m ago
- directory profilesrunningEmail · Enterprise Intelligence3,300 records · 46m ago
- directory profilesrunningSlack · Workflow Engine1,072 records · 22m ago
- completion audit logrunningClaude · Memory System843 records · 34m ago
- product catalogueretryingStripe · Company Management849 records · 30m ago
6 further jobs queued.
Error Queue7
2 need you- Authentication3 attempts · 10h ago
Stripe rejected the credential — the grant has lapsed or been withdrawn.
Will not retry. Reconnect the connector to re-run its handshake.
- Authentication1 attempt · 12h ago
REST API rejected the credential — the grant has lapsed or been withdrawn.
Will not retry. Reconnect the connector to re-run its handshake.
- Validation5 attempts · 39m ago
Slack rejected the payload as malformed.
Retrying automatically. The payload was rejected. Review the connector's configuration.
- Timeout5 attempts · 5h ago
Email did not respond within the configured timeout.
Retrying automatically. Retried automatically. Check the platform's status page if repeated.
- Rate limited5 attempts · 4h ago
Email returned 429. The gateway backed off and will retry with jitter.
Retrying automatically. The gateway backs off automatically. Raise the ceiling if it persists.
- Validation2 attempts · 3h ago
Email rejected the payload as malformed.
Retrying automatically. The payload was rejected. Review the connector's configuration.
1 further error in the queue.
Webhook Manager7
7 active2 endpoints are accepting deliveries without signature verification. The generic inbound door ships this way because its signing secret is per-sender — configure one per registered sender before treating the path as trusted.
/api/integrations/github/eventsactive7,756 in · 3% failed · 42m agoForwards github.repository.connected, github.repository.disconnected, github.issue.created
/api/integrations/google-workspace/eventsactive956 in · 3% failed · 2h agoForwards google.file.created, google.file.updated, google.file.deleted
/api/integrations/slack/eventsactive7,420 in · 2% failed · 6h agoForwards workflow.completed, workflow.blocked, approval.requested
/api/integrations/shopify/eventsactive8,903 in · 0% failed · 3h agoForwards shopify.product.created, shopify.product.updated, shopify.order.created
/api/integrations/stripe/eventsactive2,466 in · 1% failed · 3h agoForwards stripe.customer.created, stripe.customer.updated, stripe.payment.created
/api/integrations/webhook/eventsactiveUnverified6,878 in · 3% failed · 4h agoForwards operator-mapped
/api/integrations/webhook/events/1activeUnverified4,302 in · 0% failed · 2h agoForwards operator-mapped
Integration Event Bus80
14 live · 66 unroutedEach topic is owned by the module that raises it; the Hub only routes. Order comes from connector category — commerce settles before anyone is notified, analytics records last — so a new connector takes its position automatically. The bus resolves these plans and does not execute them; that is the Task Orchestrator's job.
A workflow reached its final stage with every gate cleared.
- workflows
- Integration Hub
- Shopify
- Stripe
- GitHub
- Slack
- Google Workspace
- REST API
- Stripe skipped — Awaiting authentication.
- REST API skipped — Awaiting authentication.
Module Bindings14
95 unmetA module never names a connector — it declares a capability, and the gateway resolves it from whatever is installed and healthy. That indirection is why installing a second messaging connector gives the Communication Hub a fallback without the Hub being modified.
- Mission ControlNo external reach
The launcher reads other modules and reaches nothing external. Listed to state that explicitly.
- Company Management5 unmet
A company workspace acquires a storefront, a billing entity and a revenue read through the Hub, never a Stripe client.
Needscatalogue.writecollection.writeproduct.readpayment.readsubscription.readpayer.readpayer.writeinvoice.readServed byShopify - Executive Team6 unmet
Approval requests and executive cadence reach humans through whichever messaging connector is healthy. The four payments reads are the operator's own position — recurring revenue, receivables, treasury and exposure — and every one of them is a read: nothing here moves money.
Needsmessage.sendevent.writesubscription.readinvoice.readbalance.readpayout.readdispute.readServed bySlack - Department Management1 unmet
Departments raise external work items and read their state back onto boards. Engineering gets issues; support gets customers and their order history; sales gets quotes; anything else gets the generic transport.
- Agent Fleet34 unmet
Every AI employee's reasoning resolves through an AI provider connector; the engineering archetypes additionally read and write source control and CI, the document archetypes reach Drive, Docs, Sheets, Gmail and Calendar, the commerce archetypes reach the catalogue, orders, inventory and storefront content, and the payments archetypes reach billing, subscriptions, invoices and treasury. This list is the union of what those archetypes ask for — the per-archetype breakdown is the connector's to declare, in `ProviderSurface.consumers`, and `bindingGaps()` reports anything promised there that is missing here. Eleven payments capabilities are absent on purpose, including every one that raises a charge or moves the balance. This is the binding the AI Runtime will inherit.
Needscompletion.createrepo.readpr.readpr.writepr.reviewbranch.readbranch.writeissue.readissue.writecommit.readcode.searchlabel.readmilestone.readpipeline.readpipeline.run.readpipeline.triggerrelease.readrelease.writediscussion.readproject.readcontributor.readfile.readfile.writefile.searchfolder.readfolder.writestorage.syncpermission.readpermission.writerevision.readdoc.writesheet.readsheet.writesheet.appendslide.writecomment.readcomment.writemail.readmail.sendmail.draftcalendar.readcalendar.writedirectory.readcontact.readcontact.writemeet.writecatalogue.writeproduct.readproduct.writeproduct.archivecollection.readcollection.writeorder.readorder.writeorder.cancelcustomer.readcustomer.writecustomer.taginventory.readinventory.adjustinventory.synclocation.readdiscount.readdiscount.writegiftcard.readgiftcard.writedraftorder.readdraftorder.writefulfilment.readfulfilment.writeshipping.readmarket.readmetafield.readmetafield.writeasset.readasset.writepage.readpage.writeblog.readblog.writetheme.readapp.readanalytics.readpayer.readpayer.writepaymentmethod.readpayment.readrefund.readrefund.writepaymentlink.writecheckout.readcheckout.writeinvoice.readinvoice.writeinvoice.finaliseinvoice.sendinvoice.payinvoice.voidsubscription.readsubscription.writesubscription.cancelsubscription.pausesubscriptionitem.readsubscriptionitem.writebillingproduct.readprice.readprice.writecoupon.writepromotioncode.writedispute.readpayout.readbalance.readbalancetransaction.readconnectedaccount.readusagerecord.readusagerecord.writetax.read - Memory SystemServed
The embedding coverage figure the module reports as 0 becomes real the moment an AI connector serves `embedding.create`.
Needsembedding.createfile.readfile.writestorage.syncdoc.readfile.search - Communication HubServed
The heaviest consumer. Three connectors serve `message.send`, so the Hub degrades rather than breaks when one fails. Mail is a separate ask with its own capabilities, so a chat outage cannot silently reroute correspondence.
Needsmessage.sendmessage.receivechannel.managepresence.readmail.readmail.sendmail.draftcomment.read - Workflow Engine16 unmet
The largest fan-out surface — `workflow.completed` is the topic the canonical chain in the brief describes, and commerce is its first hop. The write capabilities are what a step requests when it performs external work; the named actions an operator picks from are the connector's to declare. Four of the payments capabilities here move money, which is the set an approval gate should stand in front of.
Needsissue.writepr.writebranch.writerelease.writepipeline.triggermessage.sendfile.writeinvoice.writeevent.writehttp.requestdoc.writeslide.writesheet.appendsheet.writestorage.syncfolder.writepermission.writemail.sendmail.draftcalendar.writemeet.writecontact.writecatalogue.writeproduct.writeproduct.archivecollection.writeinventory.adjustdiscount.writecustomer.writecustomer.tagdraftorder.writefulfilment.writeorder.cancelpage.writepayer.writepaymentmethod.attachpayment.createrefund.writepaymentlink.writecheckout.writeinvoice.finaliseinvoice.sendinvoice.paysubscription.writesubscription.cancelsubscription.pauseprice.write - Knowledge Graph11 unmet
External entities are projected into the graph exactly as internal ones are — the graph owns none of them either. Each read here backs a node kind some connector declares in `ProviderSurface.entities`. FOUR connectors' worth of person-shaped roots now exist — a GitHub developer, a Workspace directory person, a Workspace contact, a Shopify shopper and a Stripe billing entity. The last two are frequently the same human and are deliberately projected as two nodes: reconciling them into one identity is the graph's decision, not any connector's, and a connector that merged them would be asserting an identity it cannot verify.
Needscode.searchrepo.readissue.readpr.readcommit.readcontributor.readproject.readdiscussion.readhttp.pollfolder.readdoc.readsheet.readslide.readdirectory.readcalendar.readfile.searchfile.readmail.readcontact.readpermission.readmeet.readproduct.readcollection.readorder.readcustomer.readinventory.readlocation.readdiscount.readpayer.readbillingproduct.readprice.readpayment.readrefund.readinvoice.readsubscription.readdispute.readpayout.readconnectedaccount.read - Decision Engine11 unmet
The AI advisor seam this module already documents resolves to `completion.create` through the Hub. The reads are what an instantaneous insight needs — engineering from source control, compliance and staleness from the document estate, and revenue, receivables and treasury from payments; anything trend-shaped waits on stored history, which nine of the thirteen payments insights say plainly that they need.
Needscompletion.createmessage.sendrepo.readissue.readpr.readpipeline.run.readpermission.readrevision.readcomment.readdirectory.readcalendar.readfile.readmail.readproduct.readorder.readcustomer.readinventory.readlocation.readdiscount.readdraftorder.readmarket.readanalytics.readpayer.readpayment.readrefund.readinvoice.readsubscription.readsubscriptionitem.readprice.readdispute.readpayout.readbalance.readbalancetransaction.read - Enterprise Intelligence8 unmet
Scheduled report delivery, which the module lists as a future integration, is a `file.write`, a `doc.write` or a `slide.write` away depending on the form the reader wants it in. The reads are the provenance behind the engineering, document, storefront and payments metrics a connector declares in `ProviderSurface.metrics`. Four of the payments figures are in currency and only one of them is revenue — the others are float, receivable and transfer, and summing them would count the same money three times.
Needsfile.writesheet.appendorder.readpayment.readrepo.readissue.readpr.readcommit.readrelease.readpipeline.run.readdoc.writeslide.writefile.readdoc.readfolder.readsheet.readpermission.readcomment.readmail.readcalendar.readproduct.readcustomer.readinventory.readanalytics.readpayer.readrefund.readinvoice.readsubscription.readdispute.readpayout.readbalance.read - Integration Hub1 unmet
The Hub itself consumes the inbound and outbound doors. It is a client of its own gateway, with no privileged path.
Needswebhook.receivewebhook.verifyhttp.requestServed byWebhook - AI RuntimeServed
Built in Phase 5, and the prediction this row made held: the three needs were already served, so the Runtime arrived without a line of change to this Hub. The needs are unchanged from when they were declared, and `lib/runtime/registry.runtimeCapabilities()` now READS them — this row is the Runtime's allow-list rather than a description of one, so a capability absent here is a capability it may not request.
Needscompletion.createembedding.createmodel.listServed byClaude - Task OrchestratorNot built yet2 unmet
Does not exist yet. It will execute the `EventRoute` plans this Hub resolves but does not run.
Needshttp.requestmessage.sendevent.writeServed bySlack
Available Integrations3
Placeholder estate.No external service is contacted anywhere in this module — every runtime figure is derived deterministically from the connector manifests and the operator's own installations, so the server and the client agree by construction. The lifecycle operations are real: installing, disabling and reconnecting genuinely change the estate and persist. See web/INTEGRATION-HUB.md for the architecture.