SegmentStream

Built for agents. Readable by humans.

Every workspace is backed by one repo your agent can build in. Connectors, pipelines, metrics and apps are code on one SDK; the CLI and MCP give agents the same endpoints, permissions and audit trail as people.

The building surface

Two SDKs, a CLI and an MCP endpoint. Everything a person can do here, an agent can do with the same calls.

Quickstart

From zero to a deployed workspace.

One command creates the workspace, its warehouse and a deployed app with sign-in. From there, your agent works in the repo.

terminal
$ curl -fsSL https://cloud.segmentstream.com/install.sh | sh
$ segmentstream login
$ segmentstream workspace create analytics --region eu ./analytics
$ cd analytics && segmentstream deploy

$ segmentstream job run hubspot_contacts --start-date 2026-09-01 --end-date 2026-09-07
$ segmentstream lineage show
$ segmentstream warehouse query --sql "SELECT COUNT(*) AS n FROM bronze.hubspot_contacts"
$ segmentstream semantic-model query advertising --query-file query.json
Workspace

One repo is the whole workspace.

Sources, models, metrics and the app live in one folder structure and deploy together. The instructions your agent needs ship in the repo.

workspace repo
analytics/
├─ AGENTS.md                 # what your agent reads first
├─ .agents/skills/           # connections, ingestion, app data, app auth
├─ connections/connections.py
├─ pipeline/
│  ├─ ingestion/<source>/    # one asset per file
│  ├─ models/                # bronze → silver → gold
│  ├─ semantic_models/       # metrics: dimensions and measures
│  └─ definitions.py
├─ app/                      # Next.js app with SegmentStream sign-in
└─ docs/

Developer tools, agent-first

Everything a person can do here, an agent can do too.

Cloud MCP

Point Claude, Cursor or your own agent at one endpoint. Scoped to the workspace, audited by default.

Cloud CLI

Create workspaces, deploy, run and backfill jobs, inspect lineage and query the warehouse, with JSON output for agents and CI.

Agentic guide

AGENTS.md and docs in every workspace repo: the layout, the conventions, and the commands your agent may run.

Agent skills

Skills for the work agents do most (connections, ingestion, app data and app sign-in), versioned in the repo.

Preview environments

Every pull request boots an isolated preview. Merge when it looks right.

Development Agent

Describe the change; it opens the pull request with the diff, the tests and a preview attached.

What the code looks like

This is the shape of the code in a workspace. Your agent writes it; you review it as pull requests.

Connections

connections/connections.py
from segmentstream.connections import (
    EvaluationConnection,
    GoogleAdsConnection,
    HubSpotConnection,
)

connections = (
    GoogleAdsConnection(key="google_ads"),
    HubSpotConnection(key="hubspot"),
    EvaluationConnection(key="evaluation"),
)

Ingestion

pipeline/ingestion/hubspot/contacts.py
@s.ingestion(
    tier=s.Tier.Bronze,
    mode=s.IngestionMode.Historical(
        partitioning=s.Partitioning.Daily(
            column="created_date", start_date="2020-08-13",
        ),
    ),
    connections=("hubspot",),
    schema=CONTACT_SCHEMA,
    primary_key=("contact_id",),
)
def hubspot_contacts(context: s.Context) -> Iterator[s.IngestionRow]:
    """Every contact created on the assigned days."""
    yield from contact_rows(context)

Metrics

pipeline/semantic_models/advertising.py
advertising = SemanticModel(
    name="advertising",
    source="silver/cost_data",
    default_date_dimension="date",
    dimensions=(
        Dimension("date", "date", type="date"),
        Dimension("platform", "data_source_type"),
        Dimension("campaign_id", "campaign_id", scope=("platform",)),
    ),
    measures=(
        Measure("spend", sum_(column("cost")), unit="currency"),
        Measure("clicks", sum_(column("clicks"))),
        Measure("cpc", divide(measure("spend"), measure("clicks"))),
    ),
)

Apps

app/src/app/spend/page.tsx
export default async function Page() {
  const user = await segmentstream.requireUser();

  const { rows } = await segmentstream.semantic.query("advertising", {
    dimensions: ["platform"],
    measures: ["spend", "clicks"],
    dateRange: { from: "2026-09-01", to: "2026-09-30" },
  });

  return <SpendTable rows={rows} viewer={user.email} />;
}

AI Evaluation

pipeline/ingestion/evaluation/lead_grades.py
client = s.evaluation_client("evaluation")
result = client.evaluate(
    state={"job_title": "Head of L&D", "company": "Acme"},
    questions={
        "grade": {
            "type": "choice",
            "instructions": "Which grade does this demo request match?",
            "criteria": {"A": "...", "B": "...", "C": "...", "D": "..."},
        },
    },
)
grade = result["answers"]["grade"]

Deploy directly from your GitHub

One repo is your whole workspace: sources, transformations, metrics and apps live in a folder structure and deploy on push. Every pull request gets a preview environment with its own branch of the data, then merges to production.

One repo, one workspace

acme/data-platformImport
├─ connections/connections.py
├─ pipeline/ingestion/billing_api.py
├─ pipeline/models/revenue.py
├─ pipeline/semantic_models/revenue.py
└─ app/

Push to deploy

$ git push origin feature/new-margin-metric

▸ preview environment ready · data branch preview-42

▸ checks passed · metrics diff approved

▸ merged → deployed to production

Preview environments cover code and data alike: a pull request branches your warehouse, not just your repo.

Your company’s context, ready for every agent.

$ segmentstream workspace create acme --region eu

▸ workspace ready · data, objects, metrics and access rules in one place

▸ connect Claude, ChatGPT or Cursor with one connector

▸ tell your agent: “add our billing API as a source”

Start a pilot

Our engineers build the first version on your data in two weeks, at a fixed price.

Or join the waitlist for self-serve:

Pilots are open now. Self-serve opens to the waitlist this fall.