Open source · Go library · Apache 2.0

The workshop that
students actually complete.

Guide your students step-by-step, from setup to completion, distributed as a single executable file. Participants run one command, their browser opens, and automatic validators handle the rest.

Kubernetes 101 — localhost:7331
Create namespace
02
Deploy the app
Configure ingress
Expose service
Scale deployment

Deploy the application

Apply the deployment manifest to create your first pod in the my-workshop namespace.

Run in your terminal
$ kubectl apply -f deployment.yaml
Validator will run automatically…
Checking kubectl get deploy -n my-workshop…
✓  Deployment found — step complete
Before
30 min setup · Broken envs · Lost before slide 1
With Worky
One file, zero friction, everyone follows along.
How it works

From code to classroom
in three steps.

Worky handles distribution so you can focus on teaching.

01 — Create

Write your workshop

Use the Worky Go library to define steps, instructions, and automatic validators. Each step can check if the participant completed the task before unlocking the next one.

import "github.com/davideimola/worky"
02 — Build

Compile to one binary

Run worky build and get a single executable. Everything bundled — UI, content, validators. Nothing to install on the participant's machine.

worky build
03 — Distribute

Participants just run it

Share the file. Participants download it, run one command, and their browser opens a guided interface. Step-by-step instructions, automatic validation, zero setup.

$ ./my-workshop serve
For creators

Built for developer educators.

Every decision in Worky is made to reduce friction between you and your participants. You teach, it handles the rest.

Automatic step validation

Define validators in Go that check if participants completed each step correctly. The workshop knows when they're done, no manual confirmation needed.

Single binary distribution

Ship your entire workshop — docs site, checks, progress tracker — as one Go binary. No Docker, no cloud, no separate web server required.

Progressive chapter locking

Chapters unlock only when the previous one passes validation. Participants can't skip ahead, keeping everyone in sync during live sessions.

Live progress tracking

The browser sidebar updates in real-time via SSE as checks pass. No refresh needed — participants see their progress instantly.

Pre-built checks

FileExists, EnvVarSet, CommandSucceeds, HTTPStatus and more — ready to use from the checks sub-package. Write less boilerplate, ship faster.

CLI scaffolding

worky init scaffolds a complete workshop in seconds — site included. worky new chapter adds chapters with the Go snippet ready to copy.

The API

Minimal surface.
Maximum control.

The entire workshop runtime is configured in one New() call. No YAML, no DSL, just Go.

main.go Go
worky.New(worky.Config{
  Name:     "My Workshop",
  Port:     7331,
  Chapters: []worky.Chapter{
    {
      ID:     "00",
      Name:   "Setup",
      Checks: []worky.Check{
        {Run: checks.FileExists("done.txt")},
      },
    },
  },
}).Run()
Steps are just functions
Each Check.Run is a plain Go func() (bool, error). Test them in isolation, compose them freely.
Validators are composable
Combine FileExists, EnvVarSet, CommandSucceeds and more from the checks sub-package — or write your own.
One command to build
worky build produces a fully self-contained binary. Participants need nothing installed.
Read the docs
Open source

Free forever.
No strings attached.

Worky is Apache 2.0-licensed and has zero runtime dependencies beyond the Go standard library. Audit it, fork it, contribute to it.

Apache
License
Go
Language
0
Dependencies
3
Platforms