Companion catalogue
Every published toolup-forge companion package — providers, sinks, hosts, infrastructure. Drop in what you need; skip what you don't.
Companions sit behind SDK interfaces. The Platform core carries no vendor SDK; every cloud / vendor integration is an opt-in <PackageReference> away. This page lists what's published today.
Per the SDK's companion-authoring guide, every companion: takes its substrate dependencies (typically ISecretStore) through its create function — never reads env vars or config files directly; ships an IHealthCheck probe; registers an IConfigValidator for preflight when connection state is testable.
Want to author a new one? See the per-area "Extending" docs: AI · RAG · Forms · Scheduling · Knowledge Base. Or open an issue at github.com/ToolUp-Forge/toolup-forge.
AI providers — IAIProvider
LLM providers behind one streaming + tool-calling interface. Pick by latency, cost, prompt-caching support, or licensing. Capabilities — SupportsPromptCaching, SupportsVisionInput, etc. — are reported per provider via AIProviderResponse.Capabilities.
| Package | What it wires | Notes |
|---|---|---|
ToolUp.AIProviders.Claude |
Anthropic Claude (Opus / Sonnet / Haiku) | Prompt caching, vision, tool calling. Streaming via message_delta for usage reporting. |
ToolUp.AIProviders.OpenAI |
OpenAI models (GPT-4o / 4-mini / o-series) | Streaming via stream_options.include_usage=true. |
ToolUp.AIProviders.Gemini |
Google Gemini | Phase 67 substrate. |
How to compose: ServerApp.withAIProvider (or via the DefaultAIProviderFactory for multi-provider deployments). Walkthrough at AI getting started; contract at AI extending.
Embedding providers — IEmbeddingProvider
Vector embeddings for RAG ingestion + query.
| Package | What it wires | Notes |
|---|---|---|
ToolUp.EmbeddingProviders.Local |
In-process embeddings | Offline, no API key, no per-call cost. Dev-only — stateful across calls. |
ToolUp.EmbeddingProviders.OpenAI |
OpenAI's text-embedding-3-* models |
Stateless; distributed-ready. |
See RAG extending for the contract; Embedding providers doc for the per-provider reference.
Rerankers
Optional post-retrieval relevance reorder for RAG.
| Package | What it wires |
|---|---|
ToolUp.Rerankers.Local |
In-process reranking |
Auth providers — IAuthProvider
Sign-in + token issue + session lifecycle. Pick one per deployment (or none for Anonymous mode).
| Package | What it wires | Notes |
|---|---|---|
ToolUp.AuthProviders.Oidc |
Generic OIDC (Auth0, Keycloak, Okta, Microsoft Entra Workforce ID, …) | Authorization Code + PKCE. Preset registry for common IdPs. |
ToolUp.AuthProviders.OidcClient |
Browser-side OIDC client | Pairs with Oidc server. |
ToolUp.AuthProviders.EntraExternalId |
Microsoft Entra External ID | Customer-facing variant of Entra. |
ToolUp.AuthProviders.EntraExternalIdClient |
Browser-side Entra External ID | Pairs with EntraExternalId server. |
ToolUp.AuthProviders.ClerkUI |
Clerk hosted sign-in UI | Paid by Clerk; opt-in only. |
See Auth providers doc for the per-IdP setup; Auth for the SDK-side contract.
Storage — IBlobStorage
Binary blob persistence behind one interface. Scope-aware: every read / write goes through a StorageScope so a tenant can't accidentally read another's data.
| Package | Backing service |
|---|---|
ToolUp.Storage.AwsS3Storage |
AWS S3 |
ToolUp.Storage.AzureBlobStorage |
Azure Blob Storage |
ToolUp.Storage.GoogleCloudStorage |
Google Cloud Storage |
The default in-process implementation file-backs to disk under data/ — fine for dev, single-process production. For multi-instance, swap in a cloud companion. See Storage providers doc.
Vector stores — IVectorStore
For RAG vector indexes.
| Package | What it wires |
|---|---|
ToolUp.VectorStores.Hnsw |
HNSW (Hierarchical Navigable Small World) index |
Default in-process implementation is suitable up to single-machine workloads; the HNSW companion scales to millions of vectors. See RAG concepts.
Audit sinks — IAuditSink
Replicates audit events to external archival / SIEM systems. Batch-idempotent — dispatcher retries the whole batch on Result.Error; sinks must use vendor-specific dedup keys.
| Package | What it wires |
|---|---|
ToolUp.AuditSinks.S3Archive |
S3 (content-addressable archival) |
ToolUp.AuditSinks.SplunkHec |
Splunk HTTP Event Collector |
ToolUp.AuditSinks.DatadogLogs |
Datadog Logs |
Notification channels — INotificationChannel / INotificationSink
Two distinct interfaces: INotificationChannel is the distributed pub/sub backbone (scope-isolated topics); INotificationSink is per-Kind transactional delivery (email, SMS, push).
Real-time channel (replaces the default in-memory channel)
| Package | What it wires |
|---|---|
ToolUp.NotificationChannels.Redis |
Redis pub/sub for cross-instance fan-out |
Email sinks
| Package | What it wires |
|---|---|
ToolUp.NotificationChannels.Email.Smtp |
Generic SMTP (MailKit; no vendor lock-in) |
ToolUp.NotificationChannels.Email.SendGrid |
SendGrid API |
ToolUp.NotificationChannels.Email.Postmark |
Postmark API |
SMS sinks
| Package | What it wires |
|---|---|
ToolUp.NotificationChannels.Sms.Twilio |
Twilio SMS |
Push sinks
| Package | What it wires |
|---|---|
ToolUp.NotificationChannels.Push.WebPush |
Browser Web Push (VAPID) |
See Notification channels doc for the substrate contract.
Secrets — ISecretStore
Every API key / provider token / connection string flows through ISecretStore. The store is consulted per-call (token rotation propagates without a redeploy).
| Package | Backing service |
|---|---|
ToolUp.Secrets.AzureKeyVault |
Azure Key Vault |
ToolUp.Secrets.AwsSecretsManager |
AWS Secrets Manager |
ToolUp.Secrets.HashiCorpVault |
HashiCorp Vault |
The default FileSecretStore encrypts JSON to disk under data/secrets/ — fine for dev. Production deployments swap one of the cloud companions in.
Metrics — IMetricsSink
| Package | What it wires |
|---|---|
ToolUp.Metrics.OpenTelemetry |
OTLP export (any OTel-compatible backend) |
Data sources
External-system query connectors for module data ingestion.
| Package | What it wires |
|---|---|
ToolUp.DataSources.BigQuery |
Google BigQuery |
Serverless hosts
Adapters that let an IServerHost-shaped app run inside a serverless platform's invocation model. Pairs with the ToolUp.Platform.Core-only deployment shape — the host adapter brings the request/response loop.
| Package | What it wires |
|---|---|
ToolUp.Hosts.AwsLambda |
AWS Lambda + API Gateway / ALB |
ToolUp.Hosts.AzureFunctions |
Azure Functions |
ToolUp.Hosts.GoogleCloudFunctions |
Google Cloud Functions |
Background: Composition roots.
Infrastructure helpers
Not "providers" in the interface-implementation sense — companions providing infrastructure that's separable from the core.
| Package | What it wires |
|---|---|
ToolUp.PublicRendering |
SSR public-page substrate — Giraffe.ViewEngine + markdown loader + sitemap + structured-data helpers. This site uses it. |
ToolUp.AssetStore |
Hashed-filename asset publishing for the Client tier (Phase 39). |
ToolUp.AgGridEnterprise |
AG Grid Enterprise initialisation shim — paid licence; opt-in only. |
ToolUp.Reporting.{Core,Server} |
Reporting primitives. |
Distribution
Every companion ships as a NuGet package on the ToolUp-Forge GitHub Packages feed. Add the feed per Getting started and reference packages by <PackageReference> like any other.
Version coordinates with the platform via the ToolUp.Sdk meta-manifest. Bumping <ToolUpSdkVersion> in Directory.Packages.props moves every companion in lockstep.