Copilot vs Hub
The architecture supports two integration scales: Copilot embeds into a host system’s UI. Users interact with AI without leaving their familiar interface. It can use multiple connectors (host DB + notification service, etc.). Hub is a standalone portal that connects all systems. It’s not embedded in any single system — it’s the central intelligence layer where systems meet AI. Same connector architecture, different delivery. A Copilot uses the sameConnectorToolAdapter as a Hub.
Core Principle
The client changes zero code. FIM One bridges into their systems proactively — reading their databases, calling their APIs, pushing to their message bus. The client provides only credentials and network access.Three-Layer Architecture
Each layer has a distinct responsibility:Why MCP as the Transport Layer
Adapters are implemented as MCP Servers. This is a deliberate architectural choice:- Reuse: FIM One already ships an MCP Client (v0.3). Adding a legacy system adapter reuses the same infrastructure as adding any MCP tool.
- Standard protocol: MCP is an open standard. No proprietary protocol to invent or maintain.
- Ecosystem: Third-party MCP Servers (databases, APIs, SaaS tools) work out of the box.
- Process isolation: Each MCP Server runs as a separate process. A misbehaving adapter cannot crash the platform.
What MCP alone does not provide
The Connector Governance Layer adds enterprise governance that raw MCP lacks:Database column masking
A database connector is often configured with one privileged account, so every caller reaches the same tables. Marking a column as PII in the connector’s schema manager narrows what the agent can see from it:- the column stays listed in the schema, tagged, so the model knows it exists and does not invent a substitute for it;
- any value returned under that column name is replaced with
***before the result reaches the model, including throughSELECT *; - the call log records which columns were masked, alongside whether the connector was in read-only mode.
WHERE salary > 5000 filters normally, and a query
that renames the column (SELECT salary AS s) returns unmasked values.
When the requirement is that the query account cannot read a column at
all, grant that in the database and point the connector at the restricted
account.
The owner’s own query playground is not masked. Masking governs what
reaches an agent and the conversation transcript, not what the person who
configured the connection can inspect.
Why not invent a custom protocol
Protocol is commodity. The technical value is in the adapters themselves (domain knowledge, schema mapping, edge-case handling) and the governance layer (audit, auth, safety). Inventing a transport protocol would add maintenance cost without adding capability. Stripe uses HTTPS; Docker uses cgroups; FIM One uses MCP.Deployment Model
Everything runs in a single Docker Compose deployment. The client installs nothing.All provided by FIM One. Client provides only:
- Database credentials (read-only account recommended)
- API endpoints and keys (if available)
- Network whitelist access
Agent-Connector Decoupling
The agent sees connectors as ordinary tools. It does not know or care whether a tool is built-in, a third-party MCP Server, or a legacy system connector. This means:- Adding a new system = adding a connector config. Agent code does not change.
- Removing a connector = removing the config. No code changes.
- The same agent can use built-in tools and connectors in a single task.
Hot-Plug Evolution
Enterprise deployments are “implement once, run for months” — hot-plug is a v1.0 convenience, not a v0.6 requirement.