Meet the Monad team at Black Hat
Join us in Vegas
Join us in Vegas
Monad Embedded

Ship hundreds of integrations, instantly.

Install two packages in your app and gain instant access to a catalog of 300+ integrations, configured by a Monad-hosted form. Monad handles the rest.

Connect your data
Give your product access to any source or destination.
live
OKOkta System Log
Source
GHGitHub Audit
SourceConnected
CSCrowdStrike FDR
Source
AWSAWS CloudTrail
Source
CFCloudflare
Source
WZWiz
Source
GCPGoogle Cloud
Source
JRJira
Source
ZMZoom
Source
SNSnowflake
DestinationConnected
DDDatadog
Destination
S3Amazon S3
Destination
OKOkta System Log
Source
GHGitHub Audit
SourceConnected
CSCrowdStrike FDR
Source
AWSAWS CloudTrail
Source
CFCloudflare
Source
WZWiz
Source
GCPGoogle Cloud
Source
JRJira
Source
ZMZoom
Source
SNSnowflake
DestinationConnected
DDDatadog
Destination
S3Amazon S3
Destination
300+ integrations available

Use cases

Ingress · bring data in

Pull your customers' data into your platform

Let your customers connect their own sources (cloud, identity, EDR, SaaS audit) and stream that telemetry straight into your product. More data in makes your product sharper.

  • ✓Enrich your findings with their context, from identity and asset inventory to cloud posture, so alerts arrive with answers instead of questions.
  • ✓Detect across a broader dataset: cross-source correlation, behavioral analytics, and fewer false positives.
  • ✓Close blind spots you couldn't see before, and feed your models to train detections or power an AI analyst.
Customer sourceMonad pipelineYour platform
Egress · send data out

Deliver your data to your customers' systems

Send the findings and normalized data your platform produces into wherever your customers already work, with no destination integrations for you to build or maintain.

  • ✓Their SIEM (Splunk, Sentinel, Elastic, Chronicle), so your findings land in the SOC's existing workflow.
  • ✓Their data lake or warehouse (Snowflake, S3, BigQuery, Databricks), for retention, cost control, and custom analytics.
  • ✓Their downstream tools (SOAR, BI, or ML and model-training platforms), wherever they analyze and act on it.
Your platformMonad pipelineTheir SIEM / lake

Get started in two easy steps

STEP 01

Install and mount the embed router

$npm install @monad-inc/embed-server
—
Every /embed route, mounted. The endpoints your frontend needs, with no controllers to write.
—
Scoped per customer. getCustomerOrgID maps each request to that customer's Monad org.
—
Inputs or outputs, pre-wired. getProvisionedComponents points every pipeline at the data source or data store you already run.
—
Your catalog, your call. catalogAllow limits the list to the connectors you support.
server.ts
main.go
main.py
import express from 'express';
import { createEmbedRouter } from '@monad-inc/embed-server';
 
const app = express();
 
app.use(
  '/embed',
  createEmbedRouter({
    apiKey: process.env.MONAD_API_KEY,
 
    // Required — map each request to that customer's Monad org.
    getCustomerOrgID: (req) => lookupCustomerOrgID(req.raw),
 
    getProvisionedComponents: (org) => ({ destinationOutputId: STORES[org] }),
 
    // Optional — ship only the connector types you support.
    catalogAllow: ['aws-cloudtrail', 'okta-systemlog', 'github'],
  }),
);
 
app.listen(3000);
import embed "github.com/monad-inc/embed/routers/go"
 
h := embed.Router(embed.Config{
  APIKey: os.Getenv("MONAD_API_KEY"),
 
  // Required — map each request to that customer's Monad org.
  GetCustomerOrgID: func(r *http.Request) (string, error) {
    return lookupCustomerOrgID(r), nil
  },
 
  GetProvisionedComponents: func(org string) embed.Provision {
    return embed.Provision{DestinationOutputID: stores[org]}
  },
 
  // Optional — ship only the connector types you support.
  CatalogAllow: []string{"aws-cloudtrail", "okta-systemlog", "github"},
})
 
mux.Handle("/embed/", http.StripPrefix("/embed", h))
from monad_embed import EmbedConfig, Provision, embed_router
 
app.include_router(
  embed_router(EmbedConfig(
    api_key=os.environ["MONAD_API_KEY"],
 
    # Required — map each request to that customer's Monad org.
    get_customer_org_id=lambda req: lookup_customer_org_id(req),
 
    get_provisioned_components=lambda org: Provision(
      destination_output_id=STORES[org],
    ),
 
    # Optional — ship only the connector types you support.
    catalog_allow=["aws-cloudtrail", "okta-systemlog", "github"],
  )),
  prefix="/embed",
)
STEP 02

Install the embed client, display the connectors and forms

$npm install @monad-inc/embed
—
One client, bound to your backend. createEmbedClient talks to the /embed routes you mounted.
—
Your catalog, your UI. listCatalog and listConnectors return what you offer and what's already connected — you render the cards.
—
Click to configure. openConnectorForm drops Monad's secure form into your own container.
—
Save, and it's live. autoBuild mints the session, mounts the iframe, and wires the pipeline in a single call.
connectors.ts
front end
import { createEmbedClient } from '@monad-inc/embed/client';
 
// One client, bound to the /embed routes your backend mounts.
const monad = createEmbedClient();
const catalog = await monad.listCatalog('input');
const connected = await monad.listConnectors('input');
 
// Render your own card per type, then open Monad's form on click.
for (const type of catalog) {
  const card = document.createElement('button'); // your UI, not Monad's
  card.textContent = type.name;
 
  // autoBuild wires the pipeline on save — a running source.
  card.onclick = () =>
    monad.openConnectorForm({
      container: '#connector-modal',
      kind: 'input',
      typeId: type.typeId,
      autoBuild: true,
      onConnected: (pipeline) => showConnected(type, pipeline),
    });
}
Connect a source
Rendered in your product, in your own UI.
live
OKOkta System Log
SourceConnected
AWSAWS CloudTrail
Source
GHGitHub
Source
CSCrowdStrike
Source
DDDatadog
Destination
SNSnowflake
Destination
300+ integrations available

Security

Handle credentials securely, automatically.

✓

Your JavaScript can't read it. Your servers never receive it. Your logs never see it. You get back an opaque "configured" reference — never the secret.

✓

Monad uses the same security model as financial platforms like Stripe and Plaid, so customer credentials are handled securely by default.

✓

Every customer is a separate org in Monad. Each gets its own encryption keys, cryptographically separating customer data to ensure data is kept isolated.

✓

One key, on your backend. Only a narrow, expiring, customer-scoped token ever reaches the browser.

Browser · your customer's tab
Your product — origin: yourapp.com
reads secrets? no — blocked
monad origin
Monad config form
aws_secret_key ••••••••••
oauth_token ••••••••••
encrypted & stored on Monad
▲ same-origin boundary — secrets never cross ▲
The catalog

Connect your product to the world

300+ connectors across the security and data stack — each tested against live systems every day. The catalog grows on Monad's side; new sources show up in your product automatically.

Deployment options

Run anywhere

SaaS or on-prem, the embed package works anywhere. Choose the option that best fits your needs.

Fastest to ship
SaaS

Monad Cloud, fully managed

Monad hosts the connector frame and runs every pipeline. Nothing to deploy or operate — the same afternoon-to-live path most customers start with.

✓ Zero infrastructure to run
✓ Elastic, cloud-scale ingestion
✓ Connector updates land automatically
On-prem

In your own environment

Monad runs inside your infrastructure via Helm, so customer data never leaves your boundary. The same embed package and API — pointed at your deployment.

✓ Data stays inside your VPC
✓ Deploys via Helm chart
✓ Meets air-gapped & residency requirements

The backbone for
security telemetry.

Effortlessly transform, filter, and route your security data. Tune out the noise and surface the signal with Monad.