Free Programming courses with real tests

Build your own
shell

See how the tools you use every day work under the hood. Build each piece in your editor, push, and a real test tells you within seconds whether it works.

Any language with a Docker image. On top of the tools you already use.

RustGoPythonTypeScriptCZigJavaElixirRubyC#HaskellSwiftDockerForgejoGitClaude CodeRustGoPythonTypeScriptCZigJavaElixirRubyC#HaskellSwiftDockerForgejoGitClaude Code

Why byox

What you build, you understand.

Tutorials get watched. Projects with tests get solved, and that's what sticks.

Understand what you use every day

Rebuilding a shell, an interpreter or a database shows you what sits behind the tools you take for granted.

Real feedback, not multiple choice

Every stage has a test. It passes or it fails, and when it fails you see the exact file and line, without opening a log.

End up with a working project

Not a loose exercise: a complete program, in your own repository, written by you.

How it works

Three steps. None of them is new to you.

Your editor, your terminal and git. byox runs the tests and keeps track of your progress.

  1. 01

    Pick what to build

    Your private repository is created with a skeleton that compiles and the stages as issues.

  2. 02

    Solve the stage

    Read the brief and code wherever you like. Test in the same Docker image the CI uses.

  3. 03

    Push

    If it passes, the stage is completed and the ones that depended on it unlock. If it fails, you see where.

~/build-your-own-shell
$ byox clone build-your-own-shell
✓ private repository created
  10 stages · 4 milestones

$ byox test 7
go test ./... -run TestStage07
✓ PASS

$ git push
plan · open issues
test · course image
advance ✓ #7 complete · #9 opens

Try it Push. See what opens.

0 of 10 stagesTap an available stageCourse complete

Your first push is one command away.

Start a course

Features

Everything you need to reach the end.

From the first push to the last stage, without leaving your editor.

Every push, tested. Forgejo runs the tests, closes what passes and opens what comes next.

Your push, live. Watch the CI run and, once it passes, see what opened and get a button to the next stage.

The error, with file and line. The test message and the exact spot. byox log gives you the full output.

A hint, not the answer. From general to specific: web, byox hint or /pista. Never in your repo.

Instructions wherever you are. The cover, the README and the map on the web, or byox show in the terminal.

Your streak, at a glance. Every day with a commit counts. Your Forgejo profile shows 16 weeks.

CLI commands: byox, show, test, watch, hint, log, open, clone, new, check, start, export, import, guide.

A CLI that knows your course. It detects the repo's course: test, ask for hints, watch the CI and share.

AI assistant

A tutor that knows your code.

Connect Claude Code, or any MCP client, and your assistant knows which stage you're on, reads the CI log and your repository at the commit that failed, and explains the cause without solving it for you.

  • /atascado diagnoses the failing test
  • /que_sigue tells you which stage is next
  • /revisar_etapa reviews your solution
  • /crear_curso writes a new course with you

Tools to support you while you learn and to create courses. The web shows which assistant is connected.

claude mcp add --transport http byox http://localhost:3333/mcp
Claude Codebyox · MCP

›

write_course_filescourse.yaml, 10 stages, skeleton and solution✓

validate_courseformat and dependency graph are valid✓

verify_courseskeleton: 10 of 10 fail · solution: 10 of 10 pass✓

start_courserepository published: build-your-own-shell✓

Done. Build your own Shell has 10 stages in 4 milestones and is already in your courses. Start with #1.

Create & share

No course for it yet? Create it.

Ask your assistant, write it by hand in your editor, or receive someone else's. Everything lives in your own instance.

Ask your assistant

Describe what you want to build. It writes the stages, the tests, the skeleton and a reference solution.

> /crear_curso
from Claude Code

Write it by hand

A template that already runs in Python, Rust, Go or Node. It's marked as hand-made and byox check shows you the status of each stage.

$ byox new my-course --lang go
$ byox check
$ byox start my-course

Share it with a code

A byox1-… code or a .byox file. It doesn't go through any server, and whoever receives it sees a preview before importing it.

$ byox export my-course
byox1-eJx9kD0OwjAMhfecwmKGq…

Who it's for

One format, different uses.

Developers

Learn a language or a concept by building something that works. Every stage is validated by a test, not a multiple-choice question.

Teachers

Turn a syllabus into stages with tests and share the course with your class using a code or a file.

Teams

Onboarding with guided projects on your own infrastructure. Everyone's code stays in your Forgejo.

Plans

Start free. Grow when you need to.

Self-hosted is free and open source. The cloud arrives with a one-week free trial and a paid plan.

Available

Self-hosted

Free · Open source (AGPL)

Install it on your own server with one command: Forgejo, CI, CLI and assistant.

Active courses
No limit of its own
Runner minutes
Whatever your hardware gives
MCP calls
No limit of its own
Install with one command
Coming soon

Free trial

1 week · In the cloud

Try byox in the cloud for a week, with nothing to install.

Active courses
2 per month
Runner minutes
1000
MCP calls
50 per week
More information
Coming soon

Cloud

Paid, monthly or yearly · In the cloud

byox in the cloud, with nothing to install and more room to work through your courses.

Active courses
Unlimited per month
Runner minutes
3000
MCP calls
250 per week
More information

What each limit measures

Active course
A course you started that month.
Runner minutes
The time the CI takes to run your courses' tests.
MCP calls
What your AI assistant uses to read and move through your courses.

Later on

  • Teams Coming soon

    Onboarding and training with guided projects, with visibility for whoever leads.

    More information
  • Enterprise Custom

    A license to run byox on your own infrastructure, with support.

    More information

FAQ

Frequently asked questions

What do I need to install?

Docker and Git (on Windows, Git Bash). bash setup.sh creates your user, starts Forgejo, the CI runner and byox, and leaves everything running. The CLI is optional.

Which language do I code in?

Whichever the course defines: each one ships a Docker image where its tests run, so on your machine you only need Docker. To write your own courses there are templates in Python, Rust, Go and Node.

Do I need Docker to test my code?

Not always. byox test uses the same image as the CI, but with --local it runs the tests with your own tools.

Who writes the courses?

Your assistant, through the byox MCP, or you by hand with your editor and git. You can also import other people's courses with a code or a .byox file.

Where does my code live?

In a private repository on your Forgejo. Nothing leaves your machine unless you publish it somewhere else.

What if I get stuck?

You get hints you ask for one at a time, the error with file and line, and an assistant that reads the log and your code at that commit to explain the cause without handing you the solution.

Will there be a cloud version?

We're working on it: it will have a one-week free trial and a paid plan, monthly or yearly. If you're interested for yourself, your class or your team, leave your email in the plans section. Self-hosted will stay free and open source.

Can I use it with other assistants?

The byox MCP is a standard HTTP server: any MCP-compatible client can use its tools. The web shows which one is connected.

Is it safe to import a course?

The tests of an imported course run in your Docker. Only import codes from people you trust; you see a preview before confirming.

What will you build?

Spin up byox on your machine with one command and complete your first stage today.

bash setup.sh Copy