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.
How It Works
Section titled “How It Works”- An external channel (e.g., Slack) sends a webhook to the App’s endpoint
- The App verifies the request using channel-specific security (e.g., Slack signing secret)
- A session is found or created based on the configured session strategy
- The agent processes the message and responds through the channel
Channel Types
Section titled “Channel Types”Each app has a single channel type with channel-specific configuration stored as JSON.
| Channel | Status | Description |
|---|---|---|
| Slack | Available | Deploy agents as Slack bots |
| Planned | — | |
| Web Widget | Planned | — |
See Slack Integration for a step-by-step setup guide.
Lifecycle
Section titled “Lifecycle”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
Section titled “Session Strategies”Session strategies control how incoming messages map to sessions. The right strategy depends on your use case:
| Strategy | Behavior | Best for |
|---|---|---|
per_thread (default) | Each conversation thread gets its own session | Support bots, Q&A |
per_channel | One session per channel | Persistent channel assistants |
per_user | One session per user | Personal assistants |
Managing Apps
Section titled “Managing Apps”Via UI
Section titled “Via UI”- Navigate to Apps in the sidebar
- Click Create App
- Fill in name, select a harness and agent, configure the channel
- Click Create
- Use Publish to make the app live
Via API
Section titled “Via API”Create an app:
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:
curl -X POST http://localhost:9300/api/v1/apps/{app_id}/publishList apps:
curl http://localhost:9300/api/v1/appsAPI Reference
Section titled “API Reference”| Method | Path | Description |
|---|---|---|
| POST | /v1/apps | Create app |
| GET | /v1/apps | List 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}/publish | Publish app |
| POST | /v1/apps/{app_id}/unpublish | Unpublish app |