Aicademy Practice CLI — solve Kubernetes exam scenarios locally with KIND
Project description
Aicademy CLI
Practice CKA, CKAD, and CKS exam scenarios locally — powered by KIND + Aicademy API.
Installation
Using pip
pip install aicademy
Using uv (recommended)
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
| Command | Description |
|---|---|
aicademy login |
Authenticate (browser flow or direct token) |
aicademy logout |
Clear stored credentials |
aicademy auth whoami |
Verify 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] --web |
Open 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> --check |
Check if tool is installed (no install) |
aicademy install-tool <name> --dry-run |
Preview install commands |
Prerequisites
| Tool | Purpose | Install |
|---|---|---|
| Docker | Runs KIND nodes | aicademy install-tool docker |
| kubectl | Kubernetes CLI | aicademy install-tool kubectl |
| kind | Local K8s cluster | aicademy install-tool kind |
OS Support
| OS | Package Manager |
|---|---|
| Windows | winget |
| macOS | Homebrew |
| Linux | Official shell scripts |
Categories
| Exam | Slug | Questions | Free |
|---|---|---|---|
| Certified Kubernetes Administrator | cka |
20 | 10 |
| Certified Kubernetes Application Developer | ckad |
20 | 10 |
| Certified Kubernetes Security Specialist | cks |
20 | 10 |
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:
- Update the
versioninpyproject.toml(e.g.,version = "0.1.2"). - Commit and push the change to the
mainbranch. - The CI pipeline will automatically run tests, build the package, publish it to PyPI, and create a GitHub Release with the corresponding
vX.X.Xtag.
Security
- CLI tokens stored in
~/.aicademy/config.json - Tokens expire after 7 days — run
aicademy loginto renew - Question tasks and scenarios only delivered when you have an active session (anti-scraping)
- Revoke all tokens with
aicademy logout
License
MIT © Aicademy
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aicademy-0.3.1.tar.gz.
File metadata
- Download URL: aicademy-0.3.1.tar.gz
- Upload date:
- Size: 150.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1a2072edb425872b220998e31311c036ca99984c29e424354c9fc6e380027e3d
|
|
| MD5 |
134fab21f98c466d45e72e6effcce14d
|
|
| BLAKE2b-256 |
f13d6bea7bbc5935b2e795c89255748059579e9fba96698fe1eff1e18ee18a2a
|
Provenance
The following attestation bundles were made for aicademy-0.3.1.tar.gz:
Publisher:
publish.yml on devcrypted/aicademy-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aicademy-0.3.1.tar.gz -
Subject digest:
1a2072edb425872b220998e31311c036ca99984c29e424354c9fc6e380027e3d - Sigstore transparency entry: 2153764782
- Sigstore integration time:
-
Permalink:
devcrypted/aicademy-cli@48c0d02038252432fd39613fe4aef9003957c48a -
Branch / Tag:
refs/heads/main - Owner: https://github.com/devcrypted
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@48c0d02038252432fd39613fe4aef9003957c48a -
Trigger Event:
push
-
Statement type:
File details
Details for the file aicademy-0.3.1-py3-none-any.whl.
File metadata
- Download URL: aicademy-0.3.1-py3-none-any.whl
- Upload date:
- Size: 37.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
265dd61a6a7ce800e9b9a337ca888b7e3494673617a77c33178238c1c2b5e3a1
|
|
| MD5 |
59293beda71dc31e3f3ccd23d7d494f8
|
|
| BLAKE2b-256 |
eab1572ccbbc308a97440de3e0a0e3c3e25a3bd7f20093998bc503ecb2ca93ee
|
Provenance
The following attestation bundles were made for aicademy-0.3.1-py3-none-any.whl:
Publisher:
publish.yml on devcrypted/aicademy-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aicademy-0.3.1-py3-none-any.whl -
Subject digest:
265dd61a6a7ce800e9b9a337ca888b7e3494673617a77c33178238c1c2b5e3a1 - Sigstore transparency entry: 2153764823
- Sigstore integration time:
-
Permalink:
devcrypted/aicademy-cli@48c0d02038252432fd39613fe4aef9003957c48a -
Branch / Tag:
refs/heads/main - Owner: https://github.com/devcrypted
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@48c0d02038252432fd39613fe4aef9003957c48a -
Trigger Event:
push
-
Statement type: