Core Concepts
Operators & Settings
Cargo Operators
Enterprise Feature
Self-hosted Cargo Operators are available on the Enterprise plan. SaaS-hosted execution is available on all plans. See pricing for details.
Cargo Operators are self-hosted execution agents that run CodeCargo workloads in your own infrastructure. They connect back to the CodeCargo platform and can execute workflows in isolated environments under your control.
Enabling Self-Hosted Operators
Navigate to Organization Settings → Operators to manage your cargo operators. Before creating an operator, you must enable the self-hosted feature using the toggle at the top of the page. Enabling or disabling self-hosted operators requires confirmation.
Creating an Operator
- Click Create Cargo Operator
- Provide a name for the operator
- Optionally set an initial token expiration date
- Click Create
After creation, you receive an access token and setup instructions for deploying the operator to your Kubernetes cluster.
Operator List
The operators table shows:
| Column | Description |
|---|---|
| Name | Clickable link to the operator detail page |
| Access ID | Unique identifier for the operator |
| Status | Connected (green) or Disconnected (gray) |
| Created At | When the operator was registered |
Operator status is monitored in real time via NATS — the status badge updates automatically as operators connect and disconnect.
Operator Detail Page
Click an operator name to view its detail page.
Setup Instructions
If the operator is not yet connected, setup instructions are shown automatically. The instructions walk through three steps:
- Create Namespace & Secret — set up a Kubernetes namespace and store the access token as a secret
- Install Helm Chart — deploy the cargo operator using the CodeCargo Helm chart from the OCI registry
- Verify Connection — confirm the operator is connected using
kubectlcommands
Once connected, you can collapse the instructions and expand them again from the Setup Instructions button if needed.
Status Overview
A summary grid shows four key metrics:
- Status — Connected or Disconnected
- Access Tokens — number of tokens issued for this operator
- Active Instances — number of currently connected operator instances
- Created At — registration timestamp
Access Tokens & Instances
Each operator can have multiple access tokens. Tokens are grouped in the detail view, and each token shows:
- Short ID — truncated token identifier
- Status — Active (green), Expired (red), or Never Used (gray)
- Expiration — expiration date, or "Never expires"
- Instance count — how many operator instances are using this token
Expand a token to see its connected instances, each showing instance name, connection status, connected/disconnected timestamps, and when the token was last used.
Token Security
When you create a new access token, copy it immediately — it will not be displayed again. Store it securely as a Kubernetes secret or in your organization's secret manager.
You can add new tokens, edit expiration dates, and delete tokens (as long as at least one token remains) from the manage menu on each token.
Organization Settings
Navigate to Organization Settings from the sidebar to manage general organization configuration.
General Settings
- Default Permissions for Project — set the default role (Admin, Viewer, or None) that new users receive when added to projects in this organization
- Manage CodeCargo App — opens the GitHub App installation page to manage repository access
- Resync Organization — triggers a full resync of users, teams, and repositories from GitHub
Prompts Configuration
Available on Team and Enterprise
Custom organization prompts require a Team or Enterprise plan. See pricing for details.
Prompts in CodeCargo are reusable system prompts that organization administrators define and make available to all users in the GenAI Editor chat. When a user starts a chat session, they can select a prompt to shape how the AI responds — for example, a prompt tuned for Terraform migrations, security reviews, or CI/CD pipeline authoring. Each prompt provides domain-specific instructions so the AI produces more relevant and consistent output for that use case.
The Prompts page under organization settings (Organization Settings → Prompts) lets you create and manage these prompts. Each prompt has:
- Name — a human-readable identifier users see when selecting a prompt in chat
- Instructions — markdown-formatted prompt instructions that guide the AI's behavior when this prompt is selected
You can create, edit, and delete prompts. Instructions support full GitHub-Flavored Markdown with a write/preview toggle for editing.
Not to be confused with Agents
Org Settings Prompts are distinct from self-service Agentic Jobs and the Agent Console. Prompts are pre-canned system prompt templates used in the GenAI Editor chat, while Agents and Agentic Jobs refer to autonomous AI-agent runs.
CargoWall Configuration
The CargoWall settings page lets you enable or disable CargoWall for AI/LLM jobs and manage rules that control network egress from CodeCargo's AI agents.
AI/LLM Configuration
The AI/LLM settings page allows you to configure AI model provisioning and key management for CodeCargo's AI features.
Multi-Model Support
CodeCargo supports multiple AI model providers through LiteLLM integration:
- Managed Keys — CodeCargo provides and manages API keys for supported providers
- Bring Your Own Keys (BYOK) — Use your organization's API keys for AI services
- On-Demand Provisioning — AI models are provisioned automatically when needed
- Per-Task Deployments — Different AI tasks can use different model configurations
Key Management
AI API keys are managed at the organization level with automatic fallback:
- BYOK Priority — Your organization's keys take precedence when available
- Managed Key Fallback — CodeCargo's managed keys are used when BYOK keys are not configured
- Secure Storage — All keys are encrypted and stored securely
Model Provisioning
AI models are provisioned on-demand when you use AI features like the GenAI Editor or Expert Workflow Agent. The system automatically selects the appropriate model and key configuration based on your organization's settings.
Notifications
CodeCargo notifies you about important events — compliance issues, CargoWall alerts, account and access changes, and system updates. You control where notifications go (destinations) and which events reach you (subscriptions), at both the organization and personal level. Organization admins set the defaults; individual users can override them from their profile.
Destinations
Destinations define where CodeCargo sends notifications. Every member always has the in-app notification bell; on top of it you can add Slack channels, webhook endpoints, and email addresses.
| Channel | Description | Setup |
|---|---|---|
| In-app bell | Notification feed in the top navigation bar | Always on — no setup required |
| Slack | Post notifications to Slack channels | Connect via OAuth, then subscribe channels with /codecargo subscribe |
| Webhook | Send to custom HTTP endpoints | Provide an HTTPS URL and optional secret |
| Deliver notifications by email | Provide an email address |
Create and manage destinations from Organization Settings → Notifications or Profile → Notification Preferences. Once added, a destination can be used in per-event routing alongside any other channel.
In-App Notification Bell
The notification bell in the top navigation bar scopes its feed and unread count to your active organization. When you switch organizations, the bell updates to show only that org's notifications. Notifications that belong to no specific org — such as a personal access token expiring — remain visible in every org.
Mark all as read and Clear all act on the visible (org-scoped) set, so clearing one org's bell does not affect another org's notifications.
Connecting Slack
Slack notifications use a proper OAuth integration rather than a webhook URL. Setup is a two-step process:
- Connect the workspace (org admin): Navigate to Organization Settings → Notifications and click Add Slack. This starts an OAuth flow that installs the CodeCargo Slack app into your workspace and stores a bot token for your organization. Only org admins can perform this step.
- Subscribe a channel (any workspace member): In any channel you want notifications in, run
/codecargo subscribe. The bot confirms the subscription in-channel. You can only subscribe to channels you already belong to.
The slash command supports:
| Command | Action |
|---|---|
/codecargo subscribe | Subscribe the current channel |
/codecargo unsubscribe | Remove the current channel's subscription |
/codecargo status | Check whether the current channel is subscribed |
/codecargo help | List the available commands |
Subscribed channels appear in the org's Channels list under notification settings. You can remove one there or by running /codecargo unsubscribe in the channel.
Private Channels
Public channels work immediately after subscribing. For a private channel, invite the CodeCargo bot to the channel first. If the bot cannot post, you will see a friendly error in the channel at delivery time.
One Workspace, Multiple Orgs
A Slack workspace can be connected to more than one CodeCargo organization. The slash command automatically narrows to the organizations you administer — if that is exactly one, it is selected for you. If you administer more than one, pass the org alias (/codecargo subscribe <org-alias>) or omit it and choose from the list the bot replies with.
Linking Your Slack Account
Before you can subscribe or unsubscribe channels, your Slack identity must be linked to your CodeCargo account. This lets CodeCargo apply your organization permissions — only CodeCargo org admins can manage subscriptions from Slack.
The first time you run /codecargo in a connected workspace, the command replies with an ephemeral message containing a Connect your CodeCargo account link:
- Click the link — it opens the
/slack/linkpage in your browser. - If you are not already signed in to CodeCargo, you are routed through login and returned to the link page automatically.
- Review the Slack workspace and user shown, then confirm the connection.
The link is global — you complete it once, and it applies across every CodeCargo organization your account can access.
Org Admin Required
After linking, the slash command checks whether you are an org admin before allowing subscribe, unsubscribe, or status. You count as an org admin if your org-level role is Admin, you are a GitHub organization owner, or you belong to a team whose org-level role is Admin — the same criteria used for the notification settings page in the web UI. The help command is always available regardless of role.
Webhooks and Email
Add and manage webhook and email destinations from Organization Settings → Notifications or Profile → Notification Preferences:
- Click Add Destination.
- Choose the channel type and provide the required URL or email address.
- Test the destination to confirm it is working.
- Enable or disable destinations as needed.
Security
Webhook URLs are masked in the interface — only the domain and last few characters are shown, enough to identify a destination without exposing the full URL or secret.
Subscriptions
Subscriptions control which notifications you receive and how they are delivered. For each category of event you can configure:
- Severity threshold — the minimum level that triggers a notification (Info, Warning, Error, Critical)
- Delivery — send immediately, or batch into a digest
- Channels — which destinations receive that category
Nudges and Delivery Frequency
CodeCargo also sends nudges automatically for important organizational events:
- Compliance issues — outstanding guardrail failures requiring attention, surfaced through Workflow Compliance
- CargoWall alerts — new destinations to review, blocked egress, and baseline status from CargoWall
- Repository status — repositories not enforcing policies, and stalled baselines
Many nudge categories come from periodic scans rather than real-time events, so they show a Frequency picker rather than a simple immediate/digest choice. The options offered for each category reflect its actual cadence, so the label matches when you can expect delivery:
| Category | Fastest frequency |
|---|---|
| Guardrail "Items need attention" | Hourly |
| CargoWall baselines ready / repos not enforcing / stalled baselines | Hourly |
| CargoWall destinations to review / blocked egress | Daily |
| PAT expiring | Daily |
| LLM budget threshold / access granted | As it happens |
| Org sync, agent runs | On/off only |
For hourly categories, Hourly means you are notified within about an hour of the underlying count changing — for example, a new guardrail failure appearing or being resolved. An unchanged backlog does not re-notify you: deduplication collapses repeated scans onto the same notification until the count actually changes. Daily or Weekly batches those changes into a digest. For daily categories such as destinations to review and blocked egress, Daily is the fastest option because the underlying scan runs once per day by design.
Entitlement Required
Advanced notification features require appropriate plan entitlements. Contact your organization administrator if notification options are not available.
Organization vs Personal Settings
Subscriptions work at two levels:
- Organization defaults — set by admins; apply to all members unless overridden
- Personal overrides — individual preferences that take precedence over the org defaults
This lets organizations establish baseline notification policies while giving each member control over their own experience.
For repo-shaped nudges — CargoWall baselines, destinations to review, blocked egress, repos not enforcing, and stalled baselines, as well as guardrail compliance nudges — notifications are delivered per member based on which repositories you can access. Because delivery is personalized, you can set your own frequency, severity threshold, and channel routing for these categories from Profile → Notification Preferences. Your personal preference wins over the org default for those categories.
Overrides your organization's default for you
When you configure frequency or severity for a repo-shaped nudge in your personal notification preferences, the label "Overrides your organization's default for you" confirms that your setting takes effect instead of the org-wide default.
For broadcast org nudges — such as org sync and LLM budget alerts — notifications are delivered org-wide at the org's cadence and are never routed to a member's personal channels. These categories appear only in Organization Settings → Notifications and are not configurable from your personal profile. The LLM budget category is additionally restricted to org admins.
For categories that are personal by nature (PAT expiry, access granted), there is no org default — they appear only in your personal notification preferences.
Off-App Message Details
When notifications go to Slack, email, or a webhook, CodeCargo adds context that the in-app bell doesn't need.
Organization Name
A single Slack channel, email inbox, or webhook endpoint can receive notifications from multiple organizations. So you can tell which org a message refers to, each off-app notification includes the organization name:
- Slack — a context line
Organization: <name>appears under the notification heading - Email — an
Organization: <name>line appears under the notification title (omitted for personal notifications with no org) - Webhook — an
orgNamefield is included alongside the existingorgIdin the JSON payload
Personal notifications (such as PAT expiry alerts) have no associated org and show no org label in any channel.
Action Links
Action links in Slack messages, emails, and webhook payloads are absolute URLs. CodeCargo combines each notification's relative UI path with your deployment's UI base URL before delivery. For example, if your base URL is https://your-deployment.example, /runs/123 becomes https://your-deployment.example/runs/123, so links open correctly in email clients and external tools.
