Integrations
Fits what you already run.
The core speaks in domain types and imports no vendor SDK. Every external system sits behind a port, so swapping one is configuration rather than a migration — and adding one does not touch the core.
Signum Causa
The incident, end to end.
Where the conversation happens, where the ticket lives, and which model reads the transcript. All three are your choice.
| Layer | System | What it covers |
|---|---|---|
| Collaboration | Slack | Events API ingress, channel-name binding, in-channel review actions |
| Collaboration | Microsoft Teams | Graph ingress, same binding and review model |
| ITSM | ServiceNow | Tickets, problems, attachments, private notes, knowledge articles |
| ITSM | FreshService | Tickets, problems, attachments, private notes, knowledge articles |
| ITSM | BMC Helix | Tickets, problems, attachments, private notes |
| ITSM | Ivanti Neurons | Tickets, problems, attachments, private notes |
| Model | Anthropic Claude | Structured extraction, knowledge drafting, problem-link scoring |
| Model | OpenAI | Structured extraction, knowledge drafting, problem-link scoring |
| Model | Google Gemini | Structured extraction, knowledge drafting, problem-link scoring |
| Model | OpenAI-compatible | Bring your own endpoint, including self-hosted |
| Identity | OIDC | Google, Microsoft, Okta and any compliant provider |
| Identity | SAML · SCIM | Enterprise sign-on and automated provisioning |
Every row above is implemented and covered by contract tests against a mock transport — no live credential required to run them.
Signum Memoria
Whatever your knowledge is already sitting in.
A connector hands Memoria a stream of records and a scope. That is the whole contract, and it does not care what the source is — if a system can be read over an API, it can be a source. What exists today is a list of adapters against that contract, and the list grows; what is already true of every one of them is the part that is hard to retrofit.
- Read-only upstream, always. Memoria never writes back to a source system.
- Allow-list only. You name the spaces, projects or channels. There is no “index everything” mode and the code does not contain one.
- Incremental and idempotent. A re-run produces no diff. A full re-sync is always available.
- Deletions are tombstoned, never silent. A page removed upstream is recorded as removed rather than quietly vanishing.
- The memory ends up as Markdown in your own Git repository. Whatever the source was, what Memoria keeps is a plain file you own, gated and approved on the way in — readable and greppable on the day the service is not running.
| Source | Scope | State |
|---|---|---|
| Confluence | Named spaces, read-only OAuth. Page restrictions honoured by exclusion at ingest | available |
| Drop folder | A watched directory — anything you can put in a folder, staged for review | available |
| CSV import | Tabular records mapped to pages | available |
| Slack | Allow-listed public channels only. No DMs, no private channels | platform-proven |
| FreshService | Tickets, changes and knowledge articles | platform-proven |
| SharePoint · OneDrive | Named sites and libraries under Sites.Selected, honouring existing sensitivity labels | specified |
| Jira | Named projects. Comments are the highest-value and highest-risk content | specified |
| Microsoft Teams | Allow-listed channels. Feasibility unresolved — see below | unresolved |
Platform-proven means Signum already talks to that system — Causa ships built, contract-tested adapters for Slack and FreshService, so the authentication, the rate limits and the HTTP client are settled. What remains for Memoria is mapping those records onto pages. That is real work, and it is not a new integration.
Teams is the lowest-value and highest-risk source in the inventory:
tenant-wide channel-message read has no clean per-resource equivalent of
Sites.Selected, and some of the APIs are gated by Microsoft
behind written justification. Slack already covers the conversational
category. Not building it is an acceptable outcome, and we would rather
say so than leave it on a roadmap.
Indexing and ranking
Your choice of provider, or none at all.
Retrieval is two steps and a check, each behind its own provider seam.
Voyage and Amazon Bedrock ship as the options; anything offering
equivalent embedding and rerank can take their place, and every one of
them can be set to none if you would rather run without it.
| Stage | Provider | What it does |
|---|---|---|
| Embeddings | Voyage · Amazon Bedrock | Turns each chunk into a vector so a question can match meaning, not just words |
| Reranking | Voyage · Amazon Bedrock | Re-scores the shortlist against the actual question before anything is shown |
| Answer-presence judge | Anthropic | Checks whether the retrieved pages actually contain an answer |
The provider is a sub-processor and is named in your data-processing terms. Changing the embedding model is a one-way door while indexed data exists — the vector dimension changes with it — so it is guarded rather than a setting anyone can flip.