# Agent Adapters Source: https://docs.charmos.io/adapters/overview Adapters tell Charm how to call your agent code. Different frameworks expose different runtime objects, so the adapter bridges your code to the Charm runner. ## Supported Adapter Types | Type | Best For | Entry Point Style | | ----------- | -------------------------------------------- | ----------------- | | `custom` | Plain Python functions/classes | `module:object` | | `langchain` | LangChain chains/runnables | `module:chain` | | `langgraph` | LangGraph graphs | `module:graph` | | `crewai` | CrewAI crews | `module:crew` | | `openclaw` | OpenClaw/browser-tool agents | OpenClaw host | | `hermes` | Self-improving agents with persistent memory | `module:agent` | ## Configure an Adapter ```yaml theme={"theme":{"light":"min-light","dark":"min-dark"}} runtime: adapter: type: "custom" entry_point: "src.main:agent" ``` ## Choosing an Adapter * Use `custom` for Python agent that do not use any frameworks. * Use `langchain`, `langgraph`, or `crewai` when you already use that framework. * Use `openclaw` for OpenClaw based agents. * Use `hermes` for Nous Research Hermes agents with self-improving skills and persistent memory. ## Third-party adapter plugins Any pip package can register additional `runtime.adapter.type` values via `[project.entry-points."charm.adapters"]`. These require a [custom runtime image](/guides/custom-runtimes) on the cloud runner. See [Extensibility Overview](/guides/extensibility) and [Custom Adapters](/guides/custom-adapters). ## Adapter Types * [Custom](/adapters/custom) * [LangChain](/adapters/langchain) * [LangGraph](/adapters/langgraph) * [CrewAI](/adapters/crewai) * [OpenClaw](/adapters/openclaw) * [Hermes](/adapters/hermes) # Create Agent Source: https://docs.charmos.io/api-reference/agents/create-agent /openapi.json post /v1/agents Create a new agent # Delete Agent Source: https://docs.charmos.io/api-reference/agents/delete-agent /openapi.json delete /v1/agents/{agent_id} Delete an agent # Get Agent Source: https://docs.charmos.io/api-reference/agents/get-agent /openapi.json get /v1/agents/{agent_id} Get an agent by ID # List Agents Source: https://docs.charmos.io/api-reference/agents/list-agents /openapi.json get /v1/agents List agents # Update Agent Source: https://docs.charmos.io/api-reference/agents/update-agent /openapi.json patch /v1/agents/{agent_id} Update an agent # Create Subscription Source: https://docs.charmos.io/api-reference/billing/create-subscription /openapi.json post /v1/billing/subscriptions Create subscription # Get Subscription Source: https://docs.charmos.io/api-reference/billing/get-subscription /openapi.json get /v1/billing/subscriptions/{subscription_id} Get subscription by ID # Get Wallet Source: https://docs.charmos.io/api-reference/billing/get-wallet /openapi.json get /v1/billing/wallet Get user's wallet balance # List Subscriptions Source: https://docs.charmos.io/api-reference/billing/list-subscriptions /openapi.json get /v1/billing/subscriptions List subscriptions # Record Transaction Source: https://docs.charmos.io/api-reference/billing/record-transaction /openapi.json post /v1/billing/transactions Record a transaction # Stripe Webhook Source: https://docs.charmos.io/api-reference/billing/stripe-webhook /openapi.json post /v1/billing/webhook-event Handle Stripe webhook # Control Daemon Source: https://docs.charmos.io/api-reference/daemons/control-daemon /openapi.json post /v1/daemon/{agent_id}/control Control daemon # Create Daemon Source: https://docs.charmos.io/api-reference/daemons/create-daemon /openapi.json post /v1/daemons Create daemon # Get Daemon Status Source: https://docs.charmos.io/api-reference/daemons/get-daemon-status /openapi.json get /v1/daemon/{agent_id}/status Get daemon status # List Daemons Source: https://docs.charmos.io/api-reference/daemons/list-daemons /openapi.json get /v1/daemons List daemons # Start Daemon Source: https://docs.charmos.io/api-reference/daemons/start-daemon /openapi.json post /v1/daemon/{agent_id}/start Start daemon # Stop Daemon Source: https://docs.charmos.io/api-reference/daemons/stop-daemon /openapi.json post /v1/daemon/{agent_id}/stop Stop daemon # Execute Agent Source: https://docs.charmos.io/api-reference/execute/execute-agent /openapi.json post /v1/execute Execute an AI agent with input payload and stream results via SSE # Cancel Run Source: https://docs.charmos.io/api-reference/runs/cancel-run /openapi.json post /v1/runs/{run_id}/cancel Cancel a running run # Complete Run Source: https://docs.charmos.io/api-reference/runs/complete-run /openapi.json post /v1/runs/{run_id}/complete Mark run as complete # Get Run Source: https://docs.charmos.io/api-reference/runs/get-run /openapi.json get /v1/runs/{run_id} Get run status and result # Get Run Events Source: https://docs.charmos.io/api-reference/runs/get-run-events /openapi.json get /v1/runs/{run_id}/events Get events for a run # Update Progress Source: https://docs.charmos.io/api-reference/runs/update-progress /openapi.json post /v1/runs/{run_id}/progress Update run progress # Get Agent Errors Source: https://docs.charmos.io/api-reference/studio/get-agent-errors /openapi.json get /v1/studio/agents/{agent_id}/errors Get error breakdown # Get Agent Installs Source: https://docs.charmos.io/api-reference/studio/get-agent-installs /openapi.json get /v1/studio/agents/{agent_id}/installs Get installation counts by day # Get Agent Runs Chart Source: https://docs.charmos.io/api-reference/studio/get-agent-runs-chart /openapi.json get /v1/studio/agents/{agent_id}/runs Get run counts grouped by day # Get Agent Stats Source: https://docs.charmos.io/api-reference/studio/get-agent-stats /openapi.json get /v1/studio/agents/{agent_id}/stats Get aggregate stats for an agent # Get Latency Distribution Source: https://docs.charmos.io/api-reference/studio/get-latency-distribution /openapi.json get /v1/studio/agents/{agent_id}/latency-distribution Get latency distribution # Get Session Depth Source: https://docs.charmos.io/api-reference/studio/get-session-depth /openapi.json get /v1/studio/agents/{agent_id}/session-depth Get session depth distribution # Get Studio Agents Source: https://docs.charmos.io/api-reference/studio/get-studio-agents /openapi.json get /v1/studio/agents List agents owned by authenticated user # Get Token Distribution Source: https://docs.charmos.io/api-reference/studio/get-token-distribution /openapi.json get /v1/studio/agents/{agent_id}/token-distribution Get token usage distribution # Get Usage Log Source: https://docs.charmos.io/api-reference/studio/get-usage-log /openapi.json get /v1/studio/agents/{agent_id}/usage-log Get detailed usage logs # Get Thread Runs Source: https://docs.charmos.io/api-reference/threads/get-thread-runs /openapi.json get /v1/threads/{thread_id}/runs List all runs for a thread # Get Agent Versions Source: https://docs.charmos.io/api-reference/versions/get-agent-versions /openapi.json get /v1/versions/{agent_id} Get all versions for an agent # Rollback Agent Source: https://docs.charmos.io/api-reference/versions/rollback-agent /openapi.json post /v1/rollback Rollback agent to previous version # Upgrade Agent Source: https://docs.charmos.io/api-reference/versions/upgrade-agent /openapi.json post /v1/upgrade Upgrade agent to new version # Changelog Source: https://docs.charmos.io/changelog/overview This page will become the docs entry point for Charm release notes. Use the changelog to understand what changed between releases, whether you need to upgrade, and which operational steps are required. ## Planned Sections * Latest release. * Recent changes. * Breaking changes. * Migration notes. * Older releases. ## Release Categories Charm release notes should group changes into: * Features. * Fixes. * Breaking changes. * Infrastructure and migrations. * Documentation. * Internal maintenance. ## What to Look For Before upgrading, check: * required SDK or CLI version, * `charm.yaml` compatibility changes, * migration or deploy requirements, * runtime image changes, * billing/auth/security notes, * known issues. ## Release Notes Charm uses Release Drafter to prepare draft GitHub Releases from merged pull requests. Release owners should review the generated draft, fill in the summary and upgrade notes, then publish it from GitHub Releases. ## Source of Truth GitHub Releases are the source of truth for published changelogs. The docs changelog should link to published releases and only duplicate release text when a docs-native archive is needed. ## Pull Request Labels Every user-facing pull request should include one release label: * `release:feature` for new capabilities. * `release:fix` for bug fixes. * `release:breaking` for incompatible API, CLI, runtime, or manifest changes. * `release:security` for security fixes or hardening. * `release:infra` for deployment, runner, billing, auth, or migration changes. * `release:docs` for documentation-only changes. * `release:chore` for internal maintenance that should still appear in release notes. * `release:skip` for changes that should not appear in release notes. Use `release:major`, `release:minor`, or `release:patch` only when the default version bump from the category label is not correct. The release label check requires exactly one category label on every pull request. The label sync workflow creates and updates these labels in GitHub when the workflow runs. # Release Notes Template Source: https://docs.charmos.io/changelog/release-notes Use this structure when reviewing the draft GitHub Release generated by Release Drafter. ## Template Release Drafter creates a draft GitHub Release after changes are merged to `main`. Before publishing, release owners should edit the draft body so it follows this structure. Each section should be concise and user-facing: * Explain why the change matters. * Link related PRs or issues. * Call out migration and deploy requirements. * Include rollback or mitigation notes for infrastructure changes. ## Pull Request Inputs Release notes are generated from pull request titles, authors, numbers, and `release:*` labels. Use a clear PR title and fill in the Release Notes section in the PR template so the release owner can quickly rewrite the generated draft into public-facing language. ## Example ```markdown theme={"theme":{"light":"min-light","dark":"min-dark"}} ## v0.5.0 - 2026-05-11 ### Summary This release adds the first public open-source docs skeleton and release process. ### Features - Added docs pages for templates, references, and open-source contribution. ### Fixes - Fixed broken navigation entries. ### Breaking Changes - None. ### Infrastructure and Migrations - None. ### Documentation - Added release process and docs versioning pages. ### Upgrade Notes - No action required. ### Known Issues - Some pages are still first-pass content and need final design. ``` # charm auth Source: https://docs.charmos.io/cli/auth Manage the local credentials used by the Charm CLI. ## Sign In ```bash theme={"theme":{"light":"min-light","dark":"min-dark"}} charm auth login ``` This opens the browser-based login flow and stores a local token for future commands such as `charm push` and `charm logs`. ## Check Current User ```bash theme={"theme":{"light":"min-light","dark":"min-dark"}} charm auth whoami ``` Use this before publishing if you are unsure which account the CLI will use. ## Manual Token For headless environments or CI-style workflows: ```bash theme={"theme":{"light":"min-light","dark":"min-dark"}} charm auth manual --token ``` Only use manual tokens in trusted environments. ## Sign Out ```bash theme={"theme":{"light":"min-light","dark":"min-dark"}} charm auth logout ``` This removes local Charm credentials. ## Credential Storage The CLI stores local configuration under the user's Charm config directory, commonly `~/.charm/config.toml`. Do not commit local credential files. # charm config Source: https://docs.charmos.io/cli/config Manage local configuration settings for the Charm CLI. ## Usage ```bash theme={"theme":{"light":"min-light","dark":"min-dark"}} charm config [command] ``` ## Commands ### 1. Set a Configuration Value Use `charm config set` to update a specific configuration value. Keys are formatted as `section.key`. ```bash theme={"theme":{"light":"min-light","dark":"min-dark"}} charm config set core.api_base {api_base_url} ``` ### 2. List Configuration Use `charm config list` to view all your current local configuration settings. ```bash theme={"theme":{"light":"min-light","dark":"min-dark"}} charm config list ``` ## Storage Configuration is saved locally, typically in `~/.charm/config.toml`. Do not commit this file to version control. # charm init Source: https://docs.charmos.io/cli/init Scaffold a new Charm agent project. ## Usage ```bash theme={"theme":{"light":"min-light","dark":"min-dark"}} charm init [--template