What this page covers
This page consolidates the example guidance that used to be split across multiple docs pages.Public SDK example flow
- Build app manifests with
App(...) - Declare behavior with
@app.agent(...)and@app.tool(...) - Run with standalone CLI commands (
ara <command> app.py) fordeploy,setup-auth,run,run-async,run-status,events,setup, andinvite - Manage authenticated cloud sessions with
ara start,ara status, andara stop(global aliases) - Authenticate first with
ara auth login(or useARA_API_KEYfor CI/headless)
Maintained examples (recommended order)
00-get-started.py01-a-agent-skills-loading.py01-b-agent-skills-loading.py01-c-agent-skills-loading.py02-canonical-email-chat-cron.py03-async-ngrok-webhook.py04-calcom-booking.py05-a-framework-adapters-langgraph.py05-b-framework-adapters-agno.py06-programmatic-secrets-redeploy.py07-app-schedule-decorator.py07b-app-schedule-decorator.py07c-runtime-automation-manager.py
examples/.env.example as the baseline for env keys. For the canonical email demo, set both
RESEND_API_KEY and CRON_EMAIL_FROM.
07-app-schedule-decorator.py is the first-class scheduling example for the new
@app.schedule(...) API (agent + tool schedules with at and cron, plus dynamic add/drop via automation tools).
07b-app-schedule-decorator.py shows the runtime-managed “fire-and-forget” pattern where jobs are created via
automation_create during execution instead of static schedule decorators in code, using an apply-style helper.
07c-runtime-automation-manager.py demonstrates the runtime automation lifecycle with create/list/delete flows.
Event-ingress harness pattern
- Browser/UI input -> proxy/server ->
POST /v1/apps/{app_id}/events - Keep runtime keys on server side, never in client bundles
- Include diagnostics around
agent_id,event_id, and response payloads
Canonical chat + cron demo
- Use
examples/02-canonical-email-chat-cron.pyfor the canonical browser + runtime flow - Demonstrates chat-driven tool calls plus
automation_create/automation_list/automation_update/automation_delete - Includes minimal Vite frontend in
examples/frontend/02-canonical-email-chat-cron/for local validation - Frontend requires
VITE_ARA_APP_IDandVITE_ARA_RUNTIME_KEYfromara setup-auth 02-canonical-email-chat-cron.py ara setup 02-canonical-email-chat-cron.pyalso includessetup.webhook.fastapi_endpointswhen endpoint decorators are present
Async webhook harness pattern
- Use
run-asyncwith--response-mode webhookfor long-running flows - Start with
ara setup-auth app.py, then export returnedapp_header_keyasARA_APP_HEADER_KEY - For local iteration, use the maintained
examples/03-async-ngrok-webhook.pysample + companion scripts - For public endpoint ingress, prefer
@fastapi_endpoint(...)and endpoint auth modes (none|header|bearer|hmac) over hardcoded gateway headers
Optional integration pattern
- Keep core SDK usage provider-agnostic
- Place provider-specific credentials in env vars (
CALCOM_API_KEY, etc.) - Keep integration adapters in example repos, not in core docs/API surface
Example-specific decorators
examples/01-c-agent-skills-loading.py defines a local @skill_handler decorator inside the tool function.
That decorator is user-land Python, not an ara-sdk primitive. The SDK primitives in that example are
@app.tool(...) and @app.agent(...).
Recommended learning order
/sdk/overview/sdk/quickstart/sdk/reference- Then open the maintained code examples:
