Skip to main content

Course Harness

Course Harness is a local-first application for creating source-grounded Courses in a human-readable Course Workspace.

Install and launch

Install uv. It downloads Python 3.14 if you do not have it.

uvx 'course-harness[pinned]'

Or install it as a command-line tool:

uv tool install 'course-harness[pinned]'
course-harness

The pinned extra installs exactly the dependency versions each release was tested with, so an install keeps working as newer dependencies come out.

The command opens http://127.0.0.1:8765 with the Workspace Launcher, where you create or open a Course Workspace. Useful options:

course-harness /path/to/course-workspace  # open a Workspace directly (`.` works too)
course-harness --no-browser               # do not open the browser
course-harness --port 9000                # use another local port

Set up a model

Open Models to add a provider. Course Harness works with OpenRouter, OpenAI, Anthropic, Amazon Bedrock, and any OpenAI-compatible server. Under Found on this computer, it lists the provider credentials it can see and lets you add each one with a single click. It looks at OPENAI_API_KEY, ANTHROPIC_API_KEY, OPENROUTER_API_KEY, AWS_BEARER_TOKEN_BEDROCK, AWS session variables (such as those set by awsume), and the profiles in ~/.aws. None of these is used until you add it.

For Bedrock, an AWS profile is the most robust choice: only its name is stored, and the AWS SDK refreshes SSO and role credentials by itself. Session variables are read from the shell that started Course Harness, so after they expire, refresh them and restart from that shell. Prompt caching is turned on for Anthropic and OpenRouter models, and for Bedrock models that support it.

To use an OpenAI-compatible provider on another machine over plain HTTP, select Allow HTTP to another host. The API key and Course content are then sent unencrypted, so use it only on a network you trust.

What it does

  • Sources: add PDF, .pptx, .docx, and web pages, or discover papers through arXiv, Crossref, Semantic Scholar, and OpenAlex. Documents are read quickly on your device first. When a document looks scanned, image-heavy, or garbled, you can reprocess it with full Docling (an optional extra) or a hosted processor: LlamaParse, Mistral OCR, or one of your Model Presets. A hosted processor gets a document only after you agree to send documents to that vendor.
  • Course Agent: plans the Course, researches sources, and writes Lectures. Only Sources added to the Course can be cited.
  • Connectors: web search and page reading through remote MCP servers. Exa is set up by default and works without a key.
  • History: save and restore Course Revisions, publish Releases, and export Lectures to PowerPoint.

Canonical Course state lives in readable files in the Course Workspace. Caches, conversations, and credentials live in platform-native user locations outside it; credentials go to the operating system keyring when one is available. Settings → Diagnostics shows the exact locations.

Optional extras

Full Docling for difficult PDFs. For scanned PDFs, tables, and multi-column layouts you can reprocess a document with full Docling, which runs layout, table, and text recognition models locally:

uv tool install --torch-backend cpu 'course-harness[pinned,docling]'

--torch-backend cpu installs the CPU build of PyTorch. Without it, uv installs the CUDA build on Linux, which downloads several gigabytes of GPU libraries. Course Harness asks before it downloads the Docling models.

LibreOffice (libreoffice or soffice on PATH) gives high-fidelity slide thumbnails.

Development

See CONTRIBUTING.md to run Course Harness from a checkout, run the checks, and publish a release.

License

MIT

Metadata

Release files for course-harness 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for course-harness 0.4.0
File Size Uploaded Provenance
course_harness-0.4.0.tar.gz 916.1 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for course-harness 0.4.0
File Interpreter ABI Platform
course_harness-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.8 MB

Release files / course_harness-0.4.0.tar.gz

Download URL course_harness-0.4.0.tar.gz
Size 916.1 kB
Tags Source
SHA-256 checksum
How to use checksums
7e8f389d1c34de0db24f4212c1e1640cb7b802c5d7a82dd49d17a70993eb8a75
BLAKE2b-256 checksum
How to use checksums
a73eb30607c45225f17a85ef32339f178f8994dc40c05770ff1288e66894cd05
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / course_harness-0.4.0-py3-none-any.whl

Download URL course_harness-0.4.0-py3-none-any.whl
Size 839.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9193e26c2f99e0ca3bb37612d7f218a5671ce781ce22104fc04d17465185593a
BLAKE2b-256 checksum
How to use checksums
f7a8cbf3af41fd18e43789ba4d206c1ec2c643ab57fc5cf2d8dffd1767ef0dac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for course-harness 0.4.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page