Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.charmos.io/llms.txt

Use this file to discover all available pages before exploring further.

The interface block defines the input form users see in Charm Store.

Basic Example

interface:
  input:
    type: "object"
    required: ["message"]
    properties:
      message:
        type: "string"
        title: "Message"
        description: "What should the agent do?"
        x-ui-widget: "textarea"
  output:
    type: "object"
  state:
    format: "json"
    schema:
      type: "object"
      properties:
        history:
          type: "array"
      additionalProperties: false

JSON Schema Basics

Use standard JSON Schema concepts:
  • type
  • required
  • properties
  • title
  • description
  • default

Widget Hints

x-ui-widget can help the Store choose a better input control. Common examples:
  • textarea
  • password
  • file
  • color

State Schema (Optional)

If your agent is interactive or long-running (daemon), you can define a state schema using interface.state.
interface:
  state:
    format: "json"
    schema:
      type: "object"
      properties:
        conversation_history:
          type: "array"
      additionalProperties: false
This ensures the platform maintains your required state structure between executions.

Agent Inputs

The values submitted by the user are passed to your agent as a dictionary. Field names should match what your agent code expects.

Best Practices

  • Keep labels user-friendly.
  • Add descriptions for ambiguous inputs.
  • Avoid exposing internal implementation names.
  • Use required fields only when the agent cannot run without them.