This guide creates a minimal Charm agent, runs it locally, and shows how the project is structured.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.
1. Create a Project
Run:python template is the smallest starting point. It is best when you want to learn the shape of a Charm project before choosing a larger framework such as LangChain, LangGraph, CrewAI, or OpenClaw.
2. Inspect the Project
A Charm project usually has this structure:charm.yaml: the manifest that describes your agent, input form, runtime, pricing, auth, and publishing metadata.src/main.py: the agent implementation.requirements.txtorpyproject.toml: Python dependencies installed when the agent runs.
3. Understand charm.yaml
charm.yaml is the contract between your code and the Charm platform.
It defines:
- the name, version, description, and store metadata,
- the input schema shown to users,
- the runtime adapter and entry point,
- required environment variables,
- execution mode and lifecycle,
- policies such as internet access and max steps.
4. Run Locally
If the template accepts a simple text input, run:5. Validate the Manifest
Before publishing, validate the project:- invalid
charm.yamlfields, - missing entry points,
- unsupported adapter configuration,
- problematic paths,
- pricing or auth configuration mistakes.
6. Test in Docker
If you installedcharmos[runner] and Docker is running, test in the local sandbox:
7. Next Steps
- Learn how publishing works in Publish.
- Browse starter projects in Templates.
- Review platform execution modes in Execution Modes.
