Assembly LineDocs

Plugins

Discover, install, and wire optional Assembly Line integrations without expanding the framework core.

Edit

Plugins are standards-based packages selected by stable ID at typed locations in agent.md and pinned in plugins.lock. Published plugins resolve from the agent's installed dependency graph; there is no official-plugin catalog in core. checked-in local plugins are auto-discovered under plugins/<name>/ and must contain an Agent Plugins v1 plugin.json. Portable Skills and MCP servers need no client extension; native Assembly Line capabilities add an ai.assemblyline/ entry. Official plugins ship integrations maintained with Assembly Line; community plugins use the same public contracts from independent packages. This page is the catalog and install guide. Plugin installation resolves a published ID or checked-in local plugin and records it in plugins.lock; it does not scaffold executable root files. Channels and infrastructure are selected explicitly in agent.md. To implement a plugin, see Authoring Plugins.

Locking reviews what is installed; selection decides what is active. Artifact packaging walks only the selected plugin graph, so an installed but unselected published package contributes no code, dependency, route, or authority. A checked-in local plugin is the intentional exception and activates by presence.

What A Plugin Contributes

A plugin can contribute one or more cohesive surfaces:

ContributionWhat it adds
Agent SkillsPortable, lazy procedures and resources under skills/.
MCP serversPortable model tools described by mcp.json.
Native toolsTyped Assembly Line tools with schemas, execution boundaries, and approval policy.
ConnectionsExternal identity, credentials, grants, events, and MCP/A2A/OpenAPI/HTTP/SDK/CLI execution.
ModelsPi provider registration, discovery, authentication, embeddings, request semantics, accounting, and runtime requirements.
InfrastructureDeploy, state, blob, sandbox, secrets, and channel-scoped media implementations.
Typed behaviorLifecycle, run-event, context, instrumentation, composition, channel, or provider behavior selected at its consuming field.

The ai.assemblyline entry has one canonical value contract. It must use an ESM default export or CommonJS module.exports. Its root may declare one plugin-wide configSchema and the contribution sections tools, connections, hooks, lifecycle, composition, contexts, instrumentation, channels, providers, models, and channelHooks. Obsolete singular/plural aliases and the named assemblyLinePlugin native-entry export are rejected. Package-level helper exports with that name are a separate connection-package API and do not change the native entry contract.

Model, channel, and infrastructure packages are full Agent Plugins, but they are not entries in the capabilities: capability list. Authors select them through explicit fields such as channels: [slack] or sandbox: e2b, or through the provider prefix in model. A plugin may provide a custom implementation for one of those boundaries, but it does not make the boundary disappear from agent.md.

Published capability plugins may expose schema-validated per-agent options at capabilities.<plugin>.config. Configuration belongs to the plugin as a whole; contribution-level tools and connections mappings remain policy exceptions. Credentials never belong in config. Tool and connection contributions declare environment requirements so preflight, secret sync, runtime boot, and inspection share one inventory.

Taxonomy

These terms are used consistently across the Assembly Line docs:

  • Plugin: a published or checked-in Agent Plugins v1 package selected at a typed authoring location or activated by local presence.
  • Contribution: what a plugin declares in its statically inspected ai.assemblyline entry: a model, provider, channel, connection, tool, hook, Skill, or other typed extension. Infrastructure packages export assemblyLineProvider; model packages export assemblyLineModelProvider. Their complete static contracts live in that same package and lock entry.
  • Provider plugin: an implementation selected by a model prefix, channel, or explicit infrastructure field rather than by capabilities:.
  • Adapter: the runtime instance resolved from an agent.md singular plugin selection or its typed options mapping.
  • Connection: an agent-scoped capability and credential contract contributed by a selected plugin; it is not a root connections/ file.

The word "capability" is overloaded; the meaning depends on where it appears:

WhereMeaning
Provider metadata capabilities: []Feature tags a provider advertises for preflight and tooling (for example persistent-storage).
Tool capability: blockDiscovery metadata on an authored tool (visibility, namespace, tags). See Customizing Agents.
Connection capabilities: ["issues:read"]Declared capability strings on a declaration-only connection contract.

Plugin Catalog

The framework includes a minimal zero-install kernel baseline for local state, blob storage, scheduling orchestration, sandbox behavior, process-env secrets, and the Node/Pi runtime. A model plugin is still required. The framework kernel packages themselves (@assemblyline-agents/core, compiler, runtime, node, cli, sdk, docs, and pi) are not plugins. openrouter, openai, and openai-codex are ordinary model plugins, not privileged kernel packages.

Provider-specific setup, OAuth registration, CLI installation, and account policy live in each package's README (packages/<kind> in the Assembly Line repo, or the package page on npm).

Models

PrefixPackageSelection
openrouter/@assemblyline-agents/openroutermodel: openrouter/openai/gpt-5.4-mini
openai/@assemblyline-agents/openaimodel: openai/gpt-5.4-mini
openai-codex/@assemblyline-agents/openai-codexmodel: openai-codex/gpt-5.6-terra

The prefix resolves the locked plugin's models contribution. Pi receives only those selected registrations and contains no bundled provider catalog or provider-specific behavior. The openai-codex plugin delegates directly to Pi's standard provider and OAuth flow; the removed custom Codex app-server package is not part of the architecture.

Channels

Channel plugins normalize provider events into durable Assembly Line turns and deliver replies. Consumption details are in Adapters: Channels.

KindPackageHelperRequired envOptional envSelection
slack@assemblyline-agents/slackdefineSlackChannelSLACK_SIGNING_SECRET, SLACK_BOT_TOKENSLACK_BOT_USER_ID, SLACK_ASSISTANT_ENABLED, SLACK_WORKSPACE_CREDENTIALS_JSONchannels: [slack]
discord@assemblyline-agents/discorddefineDiscordChannelDISCORD_PUBLIC_KEY, DISCORD_APPLICATION_ID, DISCORD_BOT_TOKENDISCORD_GATEWAY_ENABLED, DISCORD_GATEWAY_INTENTS, DISCORD_BOT_USER_IDchannels: [discord]
telegram@assemblyline-agents/telegramdefineTelegramChannelTELEGRAM_BOT_TOKEN; TELEGRAM_WEBHOOK_SECRET required in productionNonechannels: [telegram]
teams@assemblyline-agents/teamsdefineTeamsChannelMICROSOFT_APP_ID, MICROSOFT_APP_PASSWORDASSEMBLY_LINE_TEAMS_ALLOWED_TENANTS, ASSEMBLY_LINE_TEAMS_ALLOWED_SERVICE_URLSchannels: [teams]
photon@assemblyline-agents/photondefinePhotonChannelPHOTON_WEBHOOK_SIGNING_SECRET or PHOTON_INGRESS_TOKENASSEMBLY_LINE_PUBLIC_URL, PHOTON_MEDIA_URL_SIGNING_SECRET, PHOTON_MEDIA_URL_TTL_MS, PHOTON_LOCATION_TOOL_TIMEOUT_MSchannels: [photon]
a2a@assemblyline-agents/a2adefineA2AChannelA2A_PUBLIC_URL, A2A_PEER_TOKENSNonechannels: [a2a]

Channel provider implementations stay inside the selected plugin; agent authors only declare the channel ID and any explicit exceptions in agent.md. That selection also activates plugin-owned channel tools, such as Photon's conversation tools and Slack's private-file retrieval tool. Optional MCP connections remain explicit capabilities: entries.

The Slack channel also exposes typed resolve_dm_by_email and post_message operations to authored tools through callSlackChannelOperation. These are semantic, allowlisted channel operations rather than a raw Web API passthrough. They reuse the configured workspace credential, and post_message applies the channel's Markdown splitting, error handling, and stable per-chunk Slack idempotency IDs. Scope declarations stay operation-specific: resolve_dm_by_email requires users:read, users:read.email, and im:write; post_message requires chat:write.

See Photon iMessage Channel for the Photon bridge.

The attachment-capable channel packages declare the official audio plugin as a package dependency. assembly-line add installs and locks that dependency without activating it under capabilities:; the channel's audio selector chooses one of its provider contributions.

Observability

KindPackageRequired envSelection
otlp@assemblyline-agents/otlpOTEL_EXPORTER_OTLP_ENDPOINTobservability: otlp

The OTLP package owns its instrumentation factory, defaults, required environment, and accepted option schema. Install and select it with assembly-line add otlp agent.

Substrate Providers

Substrate plugins provide explicit infrastructure profiles selected in agent.md. Configuration, helper functions, and full env tables are in Adapters.

KindRolesPackageRequired envNotes
postgresstate and scheduler@assemblyline-agents/postgresDATABASE_URLstate: postgres is the clean direct selection; neon, railway, and supabase add provider-owned defaults.
dockersandbox, deploy@assemblyline-agents/dockerDocker CLI/daemonTwo roles: pass --role sandbox or --role deploy
daytonasandbox@assemblyline-agents/daytonaDAYTONA_API_KEYHosted sandboxes
e2bsandbox@assemblyline-agents/e2bE2B_API_KEYHosted sandboxes
modalsandbox@assemblyline-agents/modalMODAL_TOKEN_ID, MODAL_TOKEN_SECRETHosted sandboxes
s3blob@assemblyline-agents/s3S3_BUCKET, S3_REGION, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEYHelpers s3Blob(), minioBlob(), r2Blob()
r2blob@assemblyline-agents/r2R2_ACCOUNT_ID, R2_BUCKET, R2_ACCESS_KEY_ID, R2_SECRET_ACCESS_KEYblob: r2 selects the R2 plugin.
railwaydeploy (the same plugin also contributes a railway connection)@assemblyline-agents/railwayRAILWAY_TOKEN, Railway CLIUse --role deploy for deployment or --role connection for the MCP connection.
flydeploy@assemblyline-agents/flyFLY_API_TOKEN, flyctlGenerates fly.toml and publishes with flyctl deploy
hetznerdeploy@assemblyline-agents/vpsNamed Hetzner entry in assembly-line.hosts.json, SSH key path, Docker hostSupported per-agent isolation and transactional blue/green Caddy routing; secure create/adopt bootstrap is available

Connection Plugins

Every connection plugin exports its Agent Plugins v1 and ai.assemblyline entries. Selection is recorded by plugin ID; no connections/<kind>.ts is scaffolded. Tool connections enable their reviewed tool surface under the plugin's compiled access and approval policy. Credential-only connections declare their own static capability ceiling. Protocol is MCP over Streamable HTTP unless the table says otherwise. R = required, O = optional.

Each connections.<name> entry contains its complete reviewed contract. It does not point to a privileged compiler profile or require the compiler to join a second connection catalog.

Assembly Line's connection packages are not hosted integration accounts. The package supplies endpoint/spec defaults, tool classification, reviewed access defaults, and preflight metadata. You create the provider application, API token, OAuth client, local process, or bridge. Official connection plugins are supported unless an entry explicitly says otherwise.

Google services are separate direct REST connections. Select only the grants an agent needs: gmail, google-calendar, and google-drive. Connecting or revoking one does not affect the others. The three packages can share one deployment-owned Google OAuth web client (GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET), while Assembly Line stores a separate refreshable grant and requests service-specific scopes for each connection.

KindEndpointCredentialWritesNotes
a2aStatic agentCardUrl; service interface discovered from the cardPer-peer tokenEnv (R)Cancellation onlyA2A v1.0 JSON-RPC; advertised skills become tools; card-advertised origins are allowlisted
gmailDirect HTTP API: default https://gmail.googleapis.com/gmail/v1; GMAIL_API_BASE_URL (O)GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET (R); GOOGLE_REDIRECT_URI (O)YesGmail REST API with an independent grant; scopes are limited to Gmail read, compose, and send; read-only requests only gmail.readonly
google-calendarDirect HTTP API: default https://www.googleapis.com/calendar/v3; GOOGLE_CALENDAR_API_BASE_URL (O)GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET (R); GOOGLE_REDIRECT_URI (O)YesCalendar REST API with an independent grant; provider namespace is google_calendar; read-only omits event writes and their scope
google-driveDirect HTTP API: default https://www.googleapis.com; GOOGLE_DRIVE_API_BASE_URL (O)GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET (R); GOOGLE_REDIRECT_URI (O)YesDrive REST API with an independent grant; byte-safe base64 download/export/upload; read-only requests drive.readonly
githubdefault https://api.githubcopilot.com/mcp/; GITHUB_MCP_URL (O)GITHUB_MCP_TOKEN (R)Yes
github-appHost-only credential connectionGITHUB_APP_ID, GITHUB_APP_PRIVATE_KEY (R); GITHUB_APP_INSTALLATION_ID for environment mode; slug/client values for user modeGit and GitHub CLI authority configured on the App installationOne-hour sandbox credential; no model-facing connection tools. Repository selection and permissions are owned by GitHub App settings. See GitHub App sandbox access.
slackdefault https://mcp.slack.com/mcp; SLACK_MCP_URL (O)SLACK_MCP_TOKEN (R)YesPass --role connection (bare slack selects the channel)
telegramTELEGRAM_MCP_URL (R)TELEGRAM_MCP_TOKEN (R)Read-onlyPass --role connection (bare telegram selects the channel)
stravaSTRAVA_MCP_URL (R)STRAVA_MCP_TOKEN (R)Read-only
polarPOLAR_MCP_URL (R)POLAR_MCP_TOKEN (R)Read-only
spotifySPOTIFY_MCP_URL (R)SPOTIFY_MCP_TOKEN (R)Yes
xaiXAI_MCP_URL (R)XAI_MCP_TOKEN (R)Read-only
xDirect HTTP API: default https://api.x.com/2; X_API_BASE_URL (O)X_API_CLIENT_ID, X_API_CLIENT_SECRET (R); X_API_REDIRECT_URI (O)YesPer-user OAuth 2.0 Authorization Code + PKCE; reads account identity and private bookmarks; publishing is limited to text posts and replies; read-only omits tweet.write
exadefault https://mcp.exa.ai/mcp; EXA_MCP_URL (O)EXA_API_KEY (O), sent as x-api-keyRead-onlyHosted web search and page fetch work without a key; enable advanced search through Exa's tools URL parameter
plaidPLAID_MCP_URL (R)PLAID_MCP_TOKEN (R)Read-only
granoladefault https://mcp.granola.ai/mcp; GRANOLA_MCP_URL (O)GRANOLA_MCP_TOKEN (R)Read-only
gratadefault US https://mcp.grata.com; EU https://eu-mcp.grata.com/ via GRATA_MCP_URL (O)GRATA_MCP_CLIENT_ID, GRATA_MCP_CLIENT_SECRET (R); GRATA_MCP_REDIRECT_URI (O)YesPer-user OAuth 2.0 + PKCE and refresh tokens. Register the Assembly Line callback with the selected region's /register endpoint; developers choose autonomous, approval-required, read-only, or custom access.
lineardefault https://mcp.linear.app/mcp; LINEAR_MCP_URL (O)LINEAR_MCP_TOKEN (R)Yes
notiondefault https://mcp.notion.com/mcp; NOTION_MCP_URL (O)NOTION_MCP_TOKEN (R)Yes
attiohttps://mcp.attio.com/mcp; ATTIO_MCP_URL (O)ATTIO_MCP_CLIENT_ID (R), ATTIO_MCP_REDIRECT_URI (O)YesAttio-hosted MCP with OAuth Authorization Code + PKCE and refresh tokens. Defaults to per-user grants; set subject: "workspace" and preauthorize a dedicated Attio member for a shared company agent.
mondaydefault https://mcp.monday.com/mcp; MONDAY_MCP_URL (O)MONDAY_MCP_TOKEN (R)Yes
jiradefault https://mcp.atlassian.com/v1/mcp/authv2; JIRA_MCP_URL (O)JIRA_MCP_TOKEN (R)YesAtlassian MCP
hubspotdefault https://mcp.hubspot.com; HUBSPOT_MCP_URL (O)HUBSPOT_MCP_TOKEN (R)Read-only
figmadefault https://mcp.figma.com/mcp; FIGMA_MCP_URL (O)FIGMA_MCP_TOKEN (R)Yes
paperPAPER_MCP_URL (R)PAPER_MCP_TOKEN (O)YesDeveloper-exposed local bridge
sentrydefault https://mcp.sentry.dev/mcp; SENTRY_MCP_URL (O)SENTRY_MCP_TOKEN (R)Yes
supabasedefault https://mcp.supabase.com/mcp; SUPABASE_MCP_URL (O)SUPABASE_MCP_TOKEN (R)Yes
metabaseMETABASE_MCP_URL (R)METABASE_MCP_TOKEN (O)YesInstance MCP endpoint
cloudflaredefault https://mcp.cloudflare.com/mcp; CLOUDFLARE_MCP_URL (O)CLOUDFLARE_MCP_TOKEN (R)Yes
verceldefault https://mcp.vercel.com; VERCEL_MCP_URL (O)VERCEL_MCP_TOKEN (R)Yes
railwaydefault https://mcp.railway.com; RAILWAY_MCP_URL (O)RAILWAY_MCP_TOKEN (R)YesPass --role connection (bare railway selects the deploy target)
referodefault https://api.refero.design/mcp; REFERO_MCP_URL (O)REFERO_MCP_BEARER_TOKEN (R)Read-only
agentmaildefault https://mcp.agentmail.to/mcp; AGENTMAIL_MCP_URL (O)AGENTMAIL_API_KEY (R), sent as x-api-keyYesOfficial hosted MCP; all 24 API-key tools are reviewed and enabled, including inbox lifecycle, messages, drafts, and attachments
resenddefault https://mcp.resend.com/mcp; RESEND_MCP_URL (O)RESEND_API_KEY (R)YesOfficial hosted MCP; API-key and webhook-secret creation/retrieval tools are blocked so credentials stay outside model context
agentcashAGENTCASH_MCP_URL (R)AGENTCASH_MCP_BRIDGE_TOKEN (R)YesPaid API discovery and requests
tregdefault https://treg.to/mcp/; TREG_MCP_URL (O)TREG_TOKEN (R)YesHosted catalog discovery and team-tool access; call can spend prepaid balance or mutate an upstream service; unknown upstream tools remain hidden until reviewed
marginsdefault https://margins.artificialillumination.co/mcp; MARGINS_MCP_URL (O)One-time page/folder/workspace binding packet; agent identity overrides (O)YesHost-side margins__pair redemption stores rotating bearer credentials outside model/sandbox context; comments and suggestions are writes; Margins independently enforces the packet's scope and suggest/edit permission
mirrordefault https://mirror.artificialillumination.co/mcp; MIRROR_MCP_URL (O)MIRROR_OAUTH_CLIENT_ID (R), MIRROR_OAUTH_REDIRECT_URI (O)YesUser-scoped OAuth Authorization Code + PKCE or host-side redemption of a pre-scoped Mirror UI binding packet; read access includes the cursor-safe mirror.list_changes projection feed and mirror.get_skill for current provider action contracts; Mirror write-like tools use the connection's approval policy
provenancedefault https://provenance.artificialillumination.co/mcp; PROVENANCE_MCP_URL (O)PROVENANCE_OAUTH_CLIENT_ID (R), agent identity overrides (O)Metadata onlyRegistered public-client OAuth + PKCE with provenance:ledger; ledger reconstruction is read-only and ambient capture is configured separately
dropboxDirect HTTP API: default https://api.dropboxapi.com/2; DROPBOX_API_BASE_URL (O)DROPBOX_APP_KEY (R), DROPBOX_APP_SECRET (R), DROPBOX_REDIRECT_URI (O)YesOAuth Authorization Code + PKCE with offline refresh; read-only omits write tools and write scopes; binary transfer is intentionally outside the initial JSON/text surface
soundcloudOpenAPI: bundled official spec, base https://api.soundcloud.comSOUNDCLOUD_CLIENT_ID (R), SOUNDCLOUD_CLIENT_SECRET (R), SOUNDCLOUD_REDIRECT_URI (O)YesOAuth 2.1 PKCE; the developer registers the SoundCloud app
arcadsdefault https://mcp.arcads.aiARCADS_MCP_CLIENT_ID (R), ARCADS_MCP_REDIRECT_URI (O)YesOAuth Authorization Code + PKCE with dynamic client registration; generation consumes credits
higgsfieldSandbox CLI (protocol: "cli", transport: "sandbox", command higgsfield)None, higgsfield auth login inside each persistent, user-scoped sandboxYesInstall the official CLI in the sandbox image
browser-usedefault https://api.browser-use.com/v3/mcpBROWSER_USE_API_KEY (R), sent as x-browser-use-api-key headerYesHosted browser sessions; account, profiles, and cost policy stay developer-owned
1passwordDirect in-process API using the official 1Password SDKCredential: OP_SERVICE_ACCOUNT_TOKEN (R)Metadata onlyTools list and search vault/item metadata; complete items, concealed fields, and arbitrary secret resolution are not model-facing. The connection can source a value for a trusted host-side sink. The package separately provides the gateway secrets store. See the package guide.
orgostdio bridge on the runtime hostCredential: ORGO_API_KEY (R); config: ORGO_API_BASE_URL (O)YesCloud desktops; the bridge strips VNC passwords and accepts secure host-side credential fills from trusted sources
peekaboostdio, separately installed local binaryNoneYesSame-host macOS control; host requirements local + darwin, hosted deploys are rejected
computer-userelay, default https://computer-use.artificialillumination.co/v1; ASSEMBLY_LINE_COMPUTER_USE_RELAY_URL (O)ASSEMBLY_LINE_COMPUTER_USE_BINDING (R)YesEnd-to-end encrypted paired-Mac control; see Remote Computer Use
ffmpegstdio bridge on the runtime hostNone, install ffmpeg/ffprobe on the hostYesTyped, workspace-rooted media operations
remotionsandbox CLI (protocol: "cli", transport: "sandbox")None, install remotion + @remotion/cli in the sandbox projectYesProject code, including composition discovery, runs inside the active sandbox rather than on the gateway host

Connection Event Sources

These connection plugins include host-only event adapters. API and watch sources are registered and renewed by Assembly Line. Manual sources still verify, queue, deduplicate, retry, and dispatch deliveries, but the provider requires a console step that assembly-line connections wire reports. Event sources are enabled by default and can be disabled with events: false. Deliveries start agent work only when an explicit event automation matches; unmatched events are acknowledged without durable payload storage.

ConnectionMode and scopeevents.resourcesExtra host setup
agentmailAPI, connectionOptional inboxId or podIdExisting AGENTMAIL_API_KEY
browser-useManual, connectionNoneBROWSER_USE_WEBHOOK_SECRET; add the reported URL in Browser Use
cloudflareAPI, useraccountId, alertType; optional policy filtersCLOUDFLARE_WEBHOOK_SECRET
figmaAPI, usercontext and contextIdAuthorized Figma token
github-appManual, connectionNoneGITHUB_APP_WEBHOOK_SECRET; set the App webhook URL in GitHub
gmailWatch, userNoneGOOGLE_CLOUD_PROJECT, GMAIL_PUBSUB_TOPIC, GMAIL_PUBSUB_VERIFICATION_TOKEN; pre-create the topic, grant Gmail's push service account Pub/Sub Publisher, then point an operator-owned push subscription at the reported callback URL
google-calendarWatch, userOptional calendarId; defaults to primaryAuthorized Calendar token
google-driveWatch, userOptional drive selectionAuthorized Drive token
hubspotAPI, connectionNoneHUBSPOT_APP_ID, HUBSPOT_DEVELOPER_API_KEY, HUBSPOT_CLIENT_SECRET
jiraAPI, userbaseUrl and jqlAuthorized Jira token; dynamic hooks renew before expiry
linearManual, userNoneLINEAR_WEBHOOK_SECRET; add the reported URL in API settings
metabaseManual, connectionNoneMETABASE_WEBHOOK_SECRET; select the reported webhook on each alert
mirrorAPI, userNone; select granted connections in MirrorExisting Mirror binding grant; connection-level event scope stays in Mirror
mondayAPI, userboardId; events come from includeMONDAY_SIGNING_SECRET
notionManual, userNoneAdd the reported URL in the integration UI; Assembly Line captures the verification token
plaidAPI, connectionaccessTokenEnv for every ItemPLAID_CLIENT_ID, PLAID_SECRET
polarAPI, connectionNonePOLAR_CLIENT_ID, POLAR_CLIENT_SECRET
railwayManual, connectionNoneAdd the reported URL in Railway project settings
resendAPI, connectionNoneExisting RESEND_API_KEY
sentryAPI, userorganization and projectAuthorized Sentry token
stravaAPI, connectionNoneSTRAVA_CLIENT_ID, STRAVA_CLIENT_SECRET, STRAVA_WEBHOOK_SIGNING_SECRET
supabaseAPI, userprojectRef, table; optional schemaSUPABASE_WEBHOOK_SECRET; installs a pg_net trigger
vercelAPI, userOptional projectId and teamIdAuthorized Vercel token

Higgsfield is not in this table. Its official SDK supports a callback attached to an individual generation, while the packaged connection uses the official sandbox CLI, whose current command surface does not accept that callback. The plugin therefore does not advertise a persistent event source it cannot wire.

Orgo is a connection because its tools manage and control provider-owned desktops by computer_id; it does not implement the per-run SandboxSession filesystem contract. The package can add a separate sandbox role later if it binds one computer to a session and supplies the canonical file and shell operations.

Tool Packs

Tool packs are trusted runtime code, not connections. They need no credential contract unless the tool itself uses a separately declared connection.

KindPackageToolsConfigurationNotes
openui@assemblyline-agents/openuiopenui_create, openui_update, openui_publishcapabilities.openui.config.brand for name, legal name, theme tokens, data-URI logo, and footer; R2_PUBLIC_BASE_URL or S3_PUBLIC_BASE_URL for publicationComplete official OpenUI library, immutable private revisions, and verified HTTPS publication with runtime-selected link delivery

OpenUI TextContent parses GitHub-Flavored Markdown, including pipe tables, task lists, strikethrough, and autolinks. Markdown workspace files passed to openui_create or openui_update use the same renderer.

deliver_artifact remains the private file-delivery mechanism. It snapshots one exact workspace file for the active channel. openui_publish instead fetches and verifies the exact HTTPS URL issued by public blob storage; it never asks the model to invent a link.

LiveKit Voice And Telephony

LiveKit voice dispatch and SIP tools live in packages/livekit as @assemblyline-agents/livekit. assembly-line add livekit agent selects one conforming plugin that contributes its credential contract plus livekit_dispatch_agent, livekit_outbound_call, and livekit_transfer_call. It requires LIVEKIT_URL, LIVEKIT_API_KEY, and LIVEKIT_API_SECRET (optional LIVEKIT_OUTBOUND_TRUNK_ID and LIVEKIT_VOICE_AGENT_NAME). All three external actions are approval-gated. See the LiveKit package guide.

Plugin Packages Ship Automatically

Artifact packaging derives its dependency set from the compiled selected graph: models, providers, channels, capabilities, connections, and qualified plugin references all carry the package that implements them. The build vendors (local mode) or pins (release mode) only that graph. There is no allowlist, kind-to-package guess, or unconditional model-provider dependency. An unresolvable selected package fails validation/build instead of producing an artifact that cannot boot.

Install A Plugin With assembly-line add

assembly-line add <kind> <agentRoot> installs the capability or provider package with your detected package manager and updates the appropriate agent.md selection. The command does not hide changes in global configuration. Each result is a visible file or a printed instruction.

assembly-line add notion agent

The command installs the package, selects notion in agent.md, updates plugins.lock, and prints its required environment and validation steps.

What gets selected depends on the contribution's role:

  • Connection provider: exposes every reviewed tool through the selected plugin's ai.assemblyline extension, with no root connections/ file:

    capabilities:
      notion:
        connections:
          notion:
            disable: [delete_page]
            approval:
              update_page: always

    The provider's reviewed default policy applies when no exception is present. disable narrows its surface and approval changes an individual action within the plugin and host policy ceilings. Connection tools stay behind deferred discovery; they are not copied into a root tools/ folder or injected into every model prompt.

    Connection plugins do not contribute or copy root skills. Live provider tool names, descriptions, schemas, and the resolved access policy remain the authoritative model-facing contract.

  • Tool provider: exposes tools through the plugin's ai.assemblyline extension and may bundle namespaced skills. Nothing is copied into a root tools/ folder.

  • Channel: contributes a channel provider selected explicitly in agent.md; ingress and delivery remain inside the plugin boundary.

  • Infrastructure provider (state, blob, sandbox, deploy, secrets): implements an explicit reviewed plugin selection in agent.md. The runtime is always Node. Audio processors are selected only through channels.<name>.audio.

  • Model provider: selects the plugin's declared default provider/model value under model and packages its Pi registration.

After wiring, the CLI prints the plugin's required env vars, optional env vars, and setup steps, then the assembly-line validate command to run next.

Pass --no-install to skip the package manager and print the exact install command. It does not mutate agent.md or plugins.lock, because the CLI cannot trust a declaration it has not installed and inspected. A published plugin is not selected or locked until its installed manifest can be validated. Plugin skills remain namespaced and become available after the selected plugin is resolved.

Role Disambiguation

Some package IDs exist under more than one role. --role <role> disambiguates the requested capability or explicit provider profile. A connection role adds a plugin ID; a channel or infrastructure role updates its dedicated agent.md field. No role creates a root channel, connection, tool, or gateway file.

CommandResult
assembly-line add postgres agent --role stateInstalls Postgres and selects state: postgres
assembly-line add railway agent --role deployInstalls Railway and selects deploy: railway
assembly-line add slack agent --role channelInstalls Slack and selects it under channels:
assembly-line add slack agent --role connectionInstalls and locks the Slack connection provider
assembly-line add 1password agent --role secretsInstalls 1Password and selects secrets: 1password
assembly-line add docker agent --role sandboxInstalls Docker and selects sandbox: docker
assembly-line add openai-codex agent --role modelInstalls the Pi-native provider and selects its declared default under model:
assembly-line add otlp agentInstalls OTLP and selects observability: otlp

Community Plugins

Install a community plugin by package name:

assembly-line add @acme/assembly-line-search agent

The CLI installs the package and validates its Agent Plugins v1 plugin.json without executing source. Portable Skills and mcp.json are discovered at their standard locations. Native contributions are statically inspected from the declared ai.assemblyline entry. The published plugin ID is added to agent.md and its exact package, integrity, components, and authority are pinned in plugins.lock.

Use assembly-line plugin init <name> <agentRoot> for checked-in code. After editing it, run assembly-line plugin lock <agentRoot>; a new or changed capability descriptor requires --confirm-upgrade, while implementation-only content changes simply refresh the integrity hash.

To build such a package, see Authoring Plugins.

Auditability And Trust

Plugins execute trusted host code and should be reviewed like application dependencies. Assembly Line deliberately limits them to named extension points with static authority inventories. Agent authors should be able to audit a plugin's effect from the package dependency plus the explicit files and adapter selections in the agent folder.

Provider-specific secrets stay in host environment variables, authorization flows, or encrypted connection grants. They must not be embedded in plugin skills, prompts, tool inputs, or agent source files.

Stdio and sandbox-CLI plugins are trusted host dependencies: Assembly Line never lets a model or dynamic connection choose their command, arguments, working directory, or environment. Sandbox-CLI connections additionally run only reviewed operations inside the active run sandbox with individually quoted arguments. The plugin never receives an unsandboxed gateway command channel.

On this page