Skip to content

Apps

An App binds a Harness and Agent to a distribution channel, turning your agent into a deployed service that responds to external messages. Apps provide a publish/unpublish lifecycle — only published apps accept incoming requests.

  1. An external channel (e.g., Slack) sends a webhook to the App’s endpoint
  2. The App verifies the request using channel-specific security (e.g., Slack signing secret)
  3. A session is found or created based on the configured session strategy
  4. The agent processes the message and responds through the channel

Each app has a single channel type with channel-specific configuration stored as JSON.

ChannelStatusDescription
SlackAvailableDeploy agents as Slack bots
WhatsAppPlanned
Web WidgetPlanned

See Slack Integration for a step-by-step setup guide.

Apps follow a draft/published lifecycle:

  • Draft: App is configured but does not accept incoming requests. Use this state while setting up or testing.
  • Published: App is live and accepting incoming messages. Webhook requests are processed.
  • Archived: App is soft-deleted and hidden from listings.

Unpublishing an app stops new message processing. Existing sessions remain accessible.

Session strategies control how incoming messages map to sessions. The right strategy depends on your use case:

StrategyBehaviorBest for
per_thread (default)Each conversation thread gets its own sessionSupport bots, Q&A
per_channelOne session per channelPersistent channel assistants
per_userOne session per userPersonal assistants
  1. Navigate to Apps in the sidebar
  2. Click Create App
  3. Fill in name, select a harness and agent, configure the channel
  4. Click Create
  5. Use Publish to make the app live

Create an app:

Terminal window
curl -X POST http://localhost:9300/api/v1/apps \
-H "Content-Type: application/json" \
-d '{
"name": "Support Bot",
"harness_id": "harness_...",
"agent_id": "agent_...",
"channel_type": "slack",
"channel_config": {
"signing_secret": "your-slack-signing-secret",
"bot_token": "xoxb-your-bot-token",
"session_strategy": "per_thread"
}
}'

Publish an app:

Terminal window
curl -X POST http://localhost:9300/api/v1/apps/{app_id}/publish

List apps:

Terminal window
curl http://localhost:9300/api/v1/apps
MethodPathDescription
POST/v1/appsCreate app
GET/v1/appsList apps
GET/v1/apps/{app_id}Get app
PATCH/v1/apps/{app_id}Update app
DELETE/v1/apps/{app_id}Archive app
POST/v1/apps/{app_id}/publishPublish app
POST/v1/apps/{app_id}/unpublishUnpublish app