Outlit gives agents real-time understanding of customers to automate support and revenue workflows.
Outlit is the real-time understanding of every customer, the infrastructure agents use to automate customer operations.
This repository contains the public SDK and developer integration packages for Outlit: browser, server, CLI, tool contract, and Pi packages for sending customer signals to Outlit and querying customer context from agent workflows. It is not the hosted remote MCP server implementation; use the canonical Outlit-owned discovery endpoints below for MCP, API, and agent metadata.
This monorepo contains these packages under the @outlit scope:
Use these canonical resources for citations, schema-driven clients, and agent setup instead of copying generated specs or server metadata into this repository:
| Surface | Canonical URL | Purpose |
|---|---|---|
| Developer docs | https://docs.outlit.ai | SDK, CLI, API, MCP, and customer context documentation |
| Docs index for agents | https://docs.outlit.ai/llms.txt | Machine-readable map of documentation pages |
| Product resource index | https://www.outlit.ai/llms.txt | Agent-facing map of SDK packages, docs, API contracts, MCP, CLI, Pi, and skills |
| OpenAPI spec | https://docs.outlit.ai/openapi.json | Canonical OpenAPI contract for public API and ingest surfaces |
| API catalog | https://www.outlit.ai/.well-known/api-catalog | Linkset for API, MCP, OAuth, docs, and support discovery |
| AI catalog | https://www.outlit.ai/.well-known/ai-catalog.json | Agentic Resource Discovery catalog for Outlit API, MCP, skills, and SDK resources |
| MCP Registry listing | https://registry.modelcontextprotocol.io/v0.1/servers?search=ai.outlit/outlit | Official MCP Registry search surface for ai.outlit/outlit |
| MCP server metadata | https://mcp.outlit.ai/.well-known/mcp/server.json | Runtime metadata for the hosted remote MCP server |
| MCP server card | https://mcp.outlit.ai/.well-known/mcp/server-card.json | Runtime discovery card for the hosted remote MCP server |
| MCP docs | https://docs.outlit.ai/ai-integrations/mcp | Connect remote MCP clients with workspace URLs and OAuth |
| Agent skills | https://docs.outlit.ai/ai-integrations/skills | Official outlit and outlit-sdk skill installation guidance |
The hosted MCP server and OAuth metadata live on mcp.outlit.ai; this SDK repo is the public package and developer integration surface.
Choose the package that matches the integration surface:
| Package | Install | Use when |
|---|---|---|
@outlit/browser | npm install @outlit/browser | Browser apps, React, Next.js, Vue, Nuxt, SvelteKit, Angular, Astro, and script-tag tracking |
@outlit/node | npm install @outlit/node | Node.js servers, API routes, jobs, webhooks, CLIs, desktop main processes, and native JavaScript runtimes |
@outlit/core | npm install @outlit/core | Lower-level custom SDK implementations that do not need browser or Node runtime helpers |
@outlit/cli | npm install -g @outlit/cli | Terminal access to Outlit customer intelligence and setup workflows |
@outlit/tools | npm install @outlit/tools | Custom API or agent integrations that need typed Outlit tool gateway contracts and client helpers |
@outlit/pi | npm install @outlit/pi | Pi agents that need Outlit customer intelligence tools and skill guidance |
| Rust crate | cargo add outlit | Rust backends, CLIs, and Tauri backends |
Tracking SDK examples:
# For browser applications
npm install @outlit/browser
# For Node.js applications
npm install @outlit/node
# For custom implementations
npm install @outlit/core
import { Outlit } from '@outlit/browser'
const outlit = new Outlit({
publicKey: 'pk_xxx',
trackPageviews: true,
trackForms: true,
})
// Identify a user
outlit.user.identify({
email: 'user@example.com',
traits: { name: 'John Doe' },
customerId: 'cust_123', // Your app's account/workspace/customer ID
customerTraits: { plan: 'pro' },
})
// Track events
outlit.track('button_clicked', {
button_id: 'signup',
page: '/homepage',
})
// Track meaningful product activity. Core derives lifecycle stages from
// ordinary events, including your selected activation event.
outlit.track('onboarding_completed', { flow: 'self_serve' })
import { init, track, user } from '@outlit/browser'
// Initialize once at app startup
init({ publicKey: 'pk_xxx' })
// Then use anywhere
track('page_viewed', { page: '/home' })
user().identify({
email: 'user@example.com',
customerId: 'cust_123', // Your app's account/workspace/customer ID
})
track('subscription_upgraded', { plan: 'pro' })
import { OutlitProvider, useOutlit } from '@outlit/browser/react'
// Wrap your app
function App() {
return (
<OutlitProvider publicKey="pk_xxx">
<MyComponent />
</OutlitProvider>
)
}
// Use in components
function MyComponent() {
const { track } = useOutlit()
return (
<button onClick={() => track('onboarding_completed')}>
Click me
</button>
)
}
import { Outlit } from '@outlit/node'
const outlit = new Outlit({
publicKey: 'pk_xxx',
})
// Track server-side events (requires identity)
outlit.track({
customerId: 'cust_123', // Your app's account/workspace/customer ID
eventName: 'api_request',
properties: {
endpoint: '/api/users',
method: 'GET',
status: 200,
},
})
// `customerId`-only track events are valid immediately.
// When you later call identify() with the same customerId and an email,
// Outlit can link that account/workspace to the customer resolved from email.
// Identify a user
outlit.user.identify({
email: 'user@example.com',
traits: { plan: 'pro' },
customerId: 'cust_123', // Your app's account/workspace/customer ID
customerTraits: { plan: 'pro' },
})
// Track ordinary product events. Billing status comes from verified
// integrations such as Stripe, not authoritative SDK commands.
outlit.track({
customerId: 'cust_123',
eventName: 'subscription_upgraded',
properties: { plan: 'pro' },
})
// Flush events before shutdown
await outlit.flush()
@outlit/piThis project uses a modern monorepo setup with the following tools:
# Install dependencies
bun install
# Build all packages
bun run build
# Run tests
bun run test
# Lint code
bun run lint
# Type check
bun run typecheck
# Format code
bun run format
outlit-sdk/
├── .github/workflows/ # CI/CD workflows
├── examples/
│ └── pi-agents/ # Example Pi agents using @outlit/pi
├── packages/
│ ├── browser/ # Browser SDK with React bindings
│ ├── cli/ # Outlit CLI
│ ├── core/ # Shared types and utilities
│ ├── node/ # Node.js SDK
│ ├── pi/ # Pi package for Outlit tools
│ ├── tools/ # Customer intelligence tool contracts
│ └── typescript-config/ # Shared TypeScript configs
├── package.json # Root package with workspace config
├── bun.lock # Bun lockfile
├── turbo.json # Turbo build configuration
└── biome.json # Biome linter/formatter config
When making changes that should be released, create a changeset:
bunx changeset
This will prompt you to:
The changeset file will be committed with your PR and used to generate changelogs on release.
ci.yml) - Runs on PRs: lint, typecheck, build, testrelease.yml) - Runs on main: publish canary to npm + CDN, create version PR or publish stable releasesStable releases are intentionally separate from SDK source merges. See
docs/release-coordination.md for the Version Packages checklist
and the required Core-production-before-stable-SDK order for coordinated contracts.
For maintainers setting up the repository:
| Secret | Description |
|---|---|
NPM_TOKEN | npm access token with publish permission for @outlit scope |
GCP_CREDENTIALS | Service account JSON key with Storage Object Admin on cdn.outlit.ai bucket |
@outlit packagesNPM_TOKEN secret in GitHubgithub-actions-deployer)cdn.outlit.ai bucketGCP_CREDENTIALS secret in GitHubThe browser SDK IIFE bundle is deployed to Google Cloud Storage:
| Path | Description |
|---|---|
/canary/outlit.js | Latest from main branch (5 min cache) |
/stable/outlit.js | Latest stable release (1 year cache) |
/v{version}/outlit.js | Immutable versioned release (1 year cache) |
npm tags:
| Tag | Description |
|---|---|
latest | Stable release (npm install @outlit/browser) |
canary | Latest from main (npm install @outlit/browser@canary) |
Manual deployment (requires gcloud CLI):
cd packages/browser && bun run deploy:canary # Deploy to canary
cd packages/browser && bun run deploy:stable # Deploy to stable (requires confirmation)
cd packages/browser && bun run deploy:version # Deploy versioned release
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
Apache-2.0 - see LICENSE for details.
This listing does not have a supported local package template. Use the maintainer’s documentation for its hosted endpoint, authentication, and client-specific setup. No install command has been inferred.