Andamio Logo
Apps & Tooling/CLI

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

TaskCommand
See your dashboardandamio user me
List your coursesandamio course list
List project tasks (public)andamio project tasks <project-id>
Check if a user existsandamio user exists <alias>
Browse API endpointsandamio spec paths

Authentication

TaskCommand
Authenticate (browser)andamio user login
Authenticate (headless/CI)andamio user login --skey ./payment.skey --alias myalias
Check auth statusandamio user status

Course Owner and Teacher

TaskCommand
List courses you ownandamio course owner list
Create a course on-chainandamio tx run /v2/tx/instance/owner/course/create --body '<json>' --skey ./payment.skey --tx-type course_create
Set course metadataandamio course owner update --course-id <id> --title "My Course" --description "..." --public
List courses you teachandamio teacher courses
Export a module for editingandamio course export <course-id> <module-code> or --course "Name"
Import updated contentandamio course import ./compiled/101 --course-id <id> or --course "Name"
Import all modules at onceandamio course import-all ./compiled/my-course --course-id <id>
Create a new moduleandamio course create-module --course-id <id> --code 101 --title "My Module"
Register a module from chainandamio course teacher register-module --course-id <id> --module-code 101 --slt-hash <hash>
Publish a moduleandamio course teacher publish-module --course-id <id> --module-code 101
List pending reviewsandamio course teacher commitments --course-id <id>
Read one submission in fullandamio 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

TaskCommand
List projects you ownandamio project owner list
Create a projectandamio project owner create --project-id <id> --pending-tx-hash <hash>
List tasks (manager)andamio project task list <project-id>
Create a task with token rewardsandamio project task create <project-id> --title "..." --lovelace 5000000 --expiration 2026-06-01 --token "policyid,XP,50"
Link a task to a GitHub issueandamio project task create <project-id> --title "..." --github-issue org/repo#42 --lovelace 5000000 --expiration 2026-06-01
Export tasks to Markdownandamio project task export <project-id>
List pending assessmentsandamio project manager commitments --project-id <id>
Verify task hashesandamio 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

TaskCommand
Full transaction lifecycleandamio 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.