Catalog PyPI
PACKAGE EXPLORERView in registry

aicademy

PyPI

Aicademy Practice CLI — solve Kubernetes exam scenarios locally with KIND

ckackadcksclidevopskubernetespractice
Versions collected1
Direct dependencies9From release 0.5.4
Last observed21 Oct, 10:04 UTC

README

Version 0.5.4 documentation

Aicademy CLI

Practice CKA, CKAD, and CKS exam scenarios locally — powered by KIND + Aicademy API.

PyPI Python License: MIT

Installation

Using pip

pip install aicademy
uv tool install aicademy

Using pipx

pipx install aicademy

Quick Start

# 1. Login to Aicademy
aicademy login

# 2. Check / install prerequisites
aicademy install-tool all --check
aicademy install-tool all

# 3. Start a practice question (creates KIND cluster automatically)
aicademy question start cka-01

# 4. Read the full task instructions in your terminal
aicademy question instructions

# 5. Solve the scenario using kubectl, helm, etc.

# 6. Verify your solution
aicademy verify

# 7. Clean up the cluster
aicademy question clear

Command Reference

CommandDescription
aicademy loginAuthenticate (browser flow or direct token)
aicademy logoutClear stored credentials
aicademy auth whoamiVerify token validity
aicademy question start <id>Start question environment (creates KIND cluster)
aicademy question instructions [id]Show full task instructions in terminal
aicademy question instructions [id] --webOpen question page in browser
aicademy question clear [id]Delete KIND cluster and clear session
aicademy verify [id]Run verify.sh and report result
aicademy install-tool <name>Install kubectl / kind / docker / all
aicademy install-tool <name> --checkCheck if tool is installed (no install)
aicademy install-tool <name> --dry-runPreview install commands

Prerequisites

ToolPurposeInstall
DockerRuns KIND nodesaicademy install-tool docker
kubectlKubernetes CLIaicademy install-tool kubectl
kindLocal K8s clusteraicademy install-tool kind

OS Support

OSPackage Manager
Windowswinget
macOSHomebrew
LinuxOfficial shell scripts

Categories

ExamSlugQuestionsFree
Certified Kubernetes Administratorcka2010
Certified Kubernetes Application Developerckad2010
Certified Kubernetes Security Specialistcks2010

Development

Project Structure

The codebase is organized modularly:

  • aicademy_cli/main.py: The entry point and top-level Typer application.
  • aicademy_cli/commands/: All user-facing Typer CLI groups (auth, question, tools, verify).
  • aicademy_cli/api.py: Centralized HTTP requests and error handling.
  • aicademy_cli/core/: Internal logic like cluster management (kind.py) and helper methods (utils.py).

Using uv

# Clone and install in dev mode
git clone https://github.com/devcrypted/aicademy-cli
cd aicademy-cli
uv sync

# Run against local dev server
AICADEMY_API_URL=http://localhost:5173 uv run aicademy login

# Run tests
uv run pytest

# Lint
uv run ruff check .
uv run mypy aicademy_cli/

Publishing to PyPI

Publishing is 100% automated via GitHub Actions (ci.yml) using Trusted Publishing.

To release a new version:

  1. Update the version in pyproject.toml (e.g., version = "0.1.2").
  2. Commit and push the change to the main branch.
  3. The CI pipeline will automatically run tests, build the package, publish it to PyPI, and create a GitHub Release with the corresponding vX.X.X tag.

Security

  • CLI tokens stored in ~/.aicademy/config.json
  • Tokens expire after 7 days — run aicademy login to renew
  • Question tasks and scenarios only delivered when you have an active session (anti-scraping)
  • Revoke all tokens with aicademy logout

License

MIT © Aicademy

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
0.5.431 Aug 20269

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

PENDING
devcrypted/aicademy-cli

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 21 Oct, 10:04 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:21c75450b0271168966fdbbb20c942c53141339899dcacf57d063149c9bc7574