Profiles
Agents become addressable
Each agent gets a name, role, model chain, manager, direct reports, tools, memory, runtime, and schedule.
Union Street
Profiles, managers, direct reports, scoped tools, memory, schedules, delegation, and OIDC identity — deployable on your laptop or airgapped VPC.
Get started
curl -fsSL https://unionstreet.ai/install.sh | bashus doctor · us fleet validate fleet.yaml · us tui
What it is
Every agent tool is becoming its own little worker. Union Street is the layer that names them, routes work between them, grants tools per agent, records what happened, and keeps the whole thing runnable anywhere.
Bring
The trick
Profiles
Each agent gets a name, role, model chain, manager, direct reports, tools, memory, runtime, and schedule.
OIDC
Subject, issuer, audience, roles, groups. Tool grants and audit attach to the agent doing the work.
Lash
Wake a peer, delegate through the org chart, and collect structured reports without hiding the handoff.
Runtime
Prompt agents, stream events, receive webhooks, and plan fleet changes from CLI, HTTP, or SDK.
The oh-shit part
Union Street treats an agent like a workload identity, not a prompt string. A profile can mint and verify OIDC-shaped claims, map external IdP groups, and fail closed when a principal is disabled.
That means MCP auth, runtime secrets, peer visibility, memory, usage, and audit all have something real to hang from: the agent principal.
# agent pack (excerpt)
oidc:
issuer: urn:union-street:demo-enterprise
subject: agent:vp-eng
audiences:
- union-street:runtime
lash:
delegate: direct_reports
report: managerIntegrate
import { UnionStreetClient } from "@unionstreet/us/sdk";
const client = new UnionStreetClient({
baseUrl: "http:">//127.0.0.1:8787",
token: process.env.US_RUNTIME_BEARER_TOKEN,
});
const health = await client.health();
const snapshot = await client.snapshot();
const result = await client.sendAgentPrompt("coo", {
prompt: "Summarize open scheduler runs and any blocked delegates.",
});