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.1

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.1
File Size Uploaded Provenance
course_harness-0.4.1.tar.gz 917.7 kB Without provenance Details

Built distribution (wheel)

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

Total release size: 1.8 MB

Release files / course_harness-0.4.1.tar.gz

Download URL course_harness-0.4.1.tar.gz
Size 917.7 kB
Tags Source
SHA-256 checksum
How to use checksums
d7eb74ebc2b6e9df20dc0e5af40052ce378c54107512db35023ef8cc08726656
BLAKE2b-256 checksum
How to use checksums
45dcd365c0a9c65f93b4dfb5679d48fabc12f047b7fe0b00dc514bd3648a0757
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.1-py3-none-any.whl

Download URL course_harness-0.4.1-py3-none-any.whl
Size 840.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fab758a7ea26315033828726e0453df001284d2861210092aea7e61608082d61
BLAKE2b-256 checksum
How to use checksums
977d53f4841d725f7faf2a5d121ebc2f1683a9d46def8fb0713bd070b7775d8a
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.1

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