Overview
Manage Andamio courses, modules, and content from the command line
The Andamio CLI is a command-line tool for managing course content and project tasks. Export modules for local editing, create on-chain task bounties linked to GitHub issues, import changes, and manage authentication — all without leaving your terminal.
Want an AI agent to drive it? The Andamio Dev skills package pairs the CLI with an agent so it can operate Andamio alongside you.
Full documentation
The Andamio CLI is open source, and the andamio-cli repo is the source of truth for the complete command reference and workflows: the README and the lifecycle guides for transactions, courses, and projects. The rest of this page is a quick orientation.
What You Can Do
Browse and Query
| Task | Command |
|---|---|
| See your dashboard | andamio user me |
| List your courses | andamio course list |
| List project tasks (public) | andamio project tasks <project-id> |
| Check if a user exists | andamio user exists <alias> |
| Browse API endpoints | andamio spec paths |
Authentication
| Task | Command |
|---|---|
| Authenticate (browser) | andamio user login |
| Authenticate (headless/CI) | andamio user login --skey ./payment.skey --alias myalias |
| Check auth status | andamio user status |
Course Owner and Teacher
| Task | Command |
|---|---|
| List courses you own | andamio course owner list |
| Create a course on-chain | andamio tx run /v2/tx/instance/owner/course/create --body '<json>' --skey ./payment.skey --tx-type course_create |
| Set course metadata | andamio course owner update --course-id <id> --title "My Course" --description "..." --public |
| List courses you teach | andamio teacher courses |
| Export a module for editing | andamio course export <course-id> <module-code> or --course "Name" |
| Import updated content | andamio course import ./compiled/101 --course-id <id> or --course "Name" |
| Import all modules at once | andamio course import-all ./compiled/my-course --course-id <id> |
| Create a new module | andamio course create-module --course-id <id> --code 101 --title "My Module" |
| Register a module from chain | andamio course teacher register-module --course-id <id> --module-code 101 --slt-hash <hash> |
| Publish a module | andamio course teacher publish-module --course-id <id> --module-code 101 |
| List pending reviews | andamio course teacher commitments --course-id <id> |
| Read one submission in full | andamio teacher assignments get <course-id> <module-code> <student-alias> |
| Assess submissions (build the transaction) | andamio teacher assessment build --course-id <id> --alias <you> --decision <student>=accept |
Creating a course takes two commands. tx run builds, signs, submits and registers the course transaction. The API registers the course once the transaction confirms, and the response includes the course_id. course owner update then sets the course metadata. The --body JSON names your alias, the teachers and your wallet addresses, as shown in the Course Creation Workflow. This needs CLI v1.2.0 or later. course owner create is deprecated, and its --pending-tx-hash flag is ignored.
The assess transaction is the only way to record a teacher's decision. teacher assessment build builds it and stops at the unsigned transaction, so a person can see the decisions before approving them. Pass --decision once per learner, or --decisions-file <path> for a cohort. Then sign and submit it with tx sign and tx submit (see Transactions), or run the whole lifecycle with andamio tx run. CLI v1.3.0 removed course teacher review, which recorded nothing on chain.
andamio teacher assignments list --course <id> returns each pending submission as Markdown in content.evidence_text, alongside the raw Tiptap document in content.evidence — read the first for the prose, the second to verify an on-chain commitment hash.
Project Owner and Manager
| Task | Command |
|---|---|
| List projects you own | andamio project owner list |
| Create a project | andamio project owner create --project-id <id> --pending-tx-hash <hash> |
| List tasks (manager) | andamio project task list <project-id> |
| Create a task with token rewards | andamio project task create <project-id> --title "..." --lovelace 5000000 --expiration 2026-06-01 --token "policyid,XP,50" |
| Link a task to a GitHub issue | andamio project task create <project-id> --title "..." --github-issue org/repo#42 --lovelace 5000000 --expiration 2026-06-01 |
| Export tasks to Markdown | andamio project task export <project-id> |
| List pending assessments | andamio project manager commitments --project-id <id> |
| Verify task hashes | andamio project task verify-hash <project-id> |
Learners and Contributors
CLI 1.0 scoped the tool to the Owner, Teacher and Manager roles — the people who author work and assess it. Enrolling in a module, submitting assignment evidence, committing to a task, and claiming a credential are not CLI commands.
That work happens in the Andamio app, which signs and submits it in one flow. If you are following a pre-1.0 tutorial and run andamio course student ... or andamio project contributor ..., the CLI will tell you the same thing and exit with code 4.
Transactions
| Task | Command |
|---|---|
| Full transaction lifecycle | andamio tx run /v2/tx/... --body '...' --skey ./key.skey --tx-type ... |
| Sign and submit (step by step) | andamio tx build → tx sign → tx submit → tx register |
Quick Start
# Install with Homebrew (macOS and Linux)
brew install Andamio-Platform/tap/andamio-cli
# Or build from source (Go 1.21+)
go install github.com/Andamio-Platform/andamio-cli/cmd/andamio@latest
# Configure
andamio auth login --api-key YOUR_KEY
andamio user login
# List courses
andamio course list
# Export a module, edit locally, re-import
andamio course export <course-id> 101
vim compiled/my-course/101/lesson-1.md
andamio course import compiled/my-course/101 --course-id <course-id>Prebuilt binaries for macOS, Linux and Windows are on the Releases page. The Installation section of the README covers every install path and how to check a download.
Scripting
--output json is the stable surface. Data goes to stdout, progress and errors go to stderr, and no command reads stdin or prompts — everything works without a TTY. Discover ids first, then use them:
COURSE_ID=$(andamio course list --output json | jq -r '.data[0].course_id')
andamio course modules "$COURSE_ID" --output json | jq -r '.data[].course_module_code'Every failure carries an exit code and, under --output json, a matching kind field — both come from the same classification, so they never disagree. An empty result is not an error: a list command that finds nothing emits an empty collection and exits 0, which is what keeps "nothing to review" apart from "not permitted" and "service unreachable."
Run andamio help exit-codes for the full table, or read the Scripting section of the README.
Full Documentation
The comprehensive command reference and step-by-step workflows are maintained in the open-source repo, which is the source of truth:
- README — installation, authentication, every command, networks, output formats, configuration
- Transaction Lifecycle — the build → sign → submit → register → poll pipeline and recovery
- Course Lifecycle — create and manage courses end to end
- Project Lifecycle — create and manage projects and task bounties
One reference stays here in the docs: the Import Format for the outline.md / lesson-N.md files used by course import and course export.