Skip to main content

A CLI for Ed Discussion — browse courses, threads, and comments in terminal

Project description

edstem-cli

A terminal-first CLI for Ed Discussion: browse courses, lessons, threads, and comments without leaving the terminal.

Features

  • Courses: list all enrolled courses
  • Lessons: list course lessons and inspect lesson slides
  • Threads: list, filter, and sort course threads
  • Thread detail: view full thread with answers and comment tree
  • Activity: browse your activity across courses
  • User profile: view current user info
  • JSON output: export any data for scripting and AI agent integration

AI Agent Tip: Always use --json for structured output instead of parsing the default rich-text display. Use --max to limit results.

Installation

# Recommended: uv tool (fast, isolated)
uv tool install edstem-cli

# Alternative: pipx
pipx install edstem-cli

Install from source:

git clone https://github.com/bunizao/edstem-cli.git
cd edstem-cli
uv sync

Update

Update the CLI using the same method you used to install it:

# If installed with uv tool
uv tool upgrade edstem-cli

# If installed with pipx
pipx upgrade edstem-cli

If you installed from source:

git pull
uv sync

Running an older version? Check with edstem --version first. If a command in this README does not exist locally, update the CLI before trying again.

Quick Start

Get your API token from: https://edstem.org/settings/api-tokens

# View your profile and courses
edstem user

# List enrolled courses
edstem courses

# List threads in a course
edstem threads 12345

# List lessons in a course
edstem lessons 12345

# View a thread with comments
edstem thread 67890

Usage

# Courses
edstem courses
edstem courses --archived
edstem courses --json

# Threads
edstem threads <course_id>
edstem threads <course_id> --sort top
edstem threads <course_id> --category "HW1"
edstem threads <course_id> --type question
edstem threads <course_id> --unanswered
edstem threads <course_id> --max 50 --json

# Thread detail
edstem thread <thread_id>
edstem thread <course_id>#<number>      # by course thread number
edstem thread <thread_id> --json

# Lessons
edstem lessons <course_id>
edstem lessons <course_id> --module "Week 1"
edstem lessons <course_id> --type python --status attempted
edstem lesson <lesson_id>
edstem lesson <lesson_id> --json

# Activity
edstem activity                          # all courses
edstem activity <course_id>              # specific course
edstem activity --filter answer --json

# User
edstem user
edstem user --json
# Option 1: Environment variable
export ED_API_TOKEN="your-token-here"

# Option 2: Will prompt on first use and save automatically
edstem user

Configuration

Create config.yaml in your working directory:

fetch:
  count: 30

rateLimit:
  requestDelay: 1.0
  maxRetries: 3
  retryBaseDelay: 3.0
  maxCount: 100
  • fetch.count is the default item count when --max is omitted

Development

# Install dev dependencies
uv sync --extra dev

# Lint + tests
uv run ruff check .
uv run pytest -q

Acknowledgements

This project builds on ideas and structure from
twitter-cli.
Thanks to the original project for the foundation and inspiration.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

edstem_cli-0.2.0.tar.gz (65.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

edstem_cli-0.2.0-py3-none-any.whl (23.0 kB view details)

Uploaded Python 3

File details

Details for the file edstem_cli-0.2.0.tar.gz.

File metadata

  • Download URL: edstem_cli-0.2.0.tar.gz
  • Upload date:
  • Size: 65.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for edstem_cli-0.2.0.tar.gz
Algorithm Hash digest
SHA256 bedc0939e777424915c0435b04cb07489414a7f3f9dc7cfddd550e9636f6088a
MD5 3f850ab084ac67f70cfe132ba0c33379
BLAKE2b-256 c34597b9e7a520f409e34066f23071c381fb5b6845222a248fa9f3ec18e57c37

See more details on using hashes here.

Provenance

The following attestation bundles were made for edstem_cli-0.2.0.tar.gz:

Publisher: publish.yml on bunizao/edstem-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file edstem_cli-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: edstem_cli-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 23.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for edstem_cli-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7044b2f547c5bfebb3233dc2f646257be14f2b30646c13fe1f234f8906143c3b
MD5 bc0bdbd62935df138988cb668cd74e3f
BLAKE2b-256 c2693f293c3a2eefee179836cd6b102a51dc3455b2f1fb464b784d5939d8cc1b

See more details on using hashes here.

Provenance

The following attestation bundles were made for edstem_cli-0.2.0-py3-none-any.whl:

Publisher: publish.yml on bunizao/edstem-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page