| name | dari |
| description | Use when the user wants to create, deploy, publish, or run a Dari-hosted Flue agent; work with dari.yml; use the Dari CLI/API; create sessions; configure lifecycle webhooks; manage credentials or CI publishing. Triggers on "dari.yml", "dari deploy", "dari init", "Dari agent", "agent session", "webhook", or "hosted agent API". |
Dari Agent Skill
Dari deploys and runs normal Flue projects. The happy path is a Flue repo plus a small Dari deploy file.
Always keep new projects Flue-native:
chat/
package.json
dari.yml
agents/
chat.ts
name: chat
Do not add harness, flue, routing, custom_tools, built_in_tools, skills, extensions, sandbox-provider config, runtime-server files, or placeholder provider secrets to new Dari deploy files. Put prompts, model choices, tools, connectors, and agent behavior in Flue code.
Create A Project
Prefer the CLI scaffold:
dari init chat
cd chat
npm install
If creating files by hand, use a normal Flue package:
{
"name": "chat",
"version": "1.0.0",
"private": true,
"type": "module",
"dependencies": {
"@flue/cli": "0.10.1",
"@flue/runtime": "0.10.1"
}
}
import { createAgent } from '@flue/runtime';
export default createAgent(() => ({
model: 'openrouter/moonshotai/kimi-k2.6',
}));
If the code reads a provider key directly, declare the secret name in dari.yml:
name: chat
sandbox:
secrets:
- OPENROUTER_API_KEY
Credentials
Store declared secrets as organization credentials before deploying:
dari auth login
dari credentials add OPENROUTER_API_KEY
dari deploy .
Never commit real keys. Do not add fake or placeholder secret values.
Deploy
From the project root:
dari auth login
dari deploy .
For CI or headless scripts, create a platform API key and set DARI_API_KEY:
dari api-keys create --name ci
export DARI_API_KEY=dari_...
dari deploy . --quiet
Use --agent-id only when updating a specific existing agent that cannot be resolved by name.
Run Sessions
Start a new session and send the first message in one command:
dari session send --agent chat "hello from Dari"
Continue an existing session:
dari session send sess_123 "follow up"
dari session events sess_123 --limit 50
Webhooks
Webhooks are for lifecycle notifications. Configure them after deploying:
dari agent webhook set agt_123 https://example.com/dari/webhook --event session.completed --event session.failed
Store the returned signing_secret immediately. Verify incoming requests with the Dari-Webhook-Timestamp and Dari-Webhook-Signature headers.
API Basics
Use the CLI when possible. For direct API calls, send a platform key as a bearer token:
curl https://api.dari.dev/v1/agents \
-H "Authorization: Bearer $DARI_API_KEY"
Create a session and send messages through the documented /v1 session endpoints when the CLI is not suitable.
Checklist Before Deploying
dari.yml has name and only optional sandbox.env/sandbox.secrets entries.
- The repo has
package.json and agents/<name>.ts.
- Every secret listed in
sandbox.secrets is stored with dari credentials add or provided as a session secret.
- Secrets are in Dari credentials or the user's secret manager, not in source files.
- Generated docs or README examples use
dari deploy ..
- No Pi, custom-runtime, sandbox-provider, routing, tool-manifest, skill-manifest, or extension instructions were added to the Flue happy path.
Docs