Generally available

Self-hosted workshops,
labs, and CTFs.

Workshop Control is a portable platform for running technical training. Lab guide, challenge engine, and a real-time leaderboard — packaged so your team can stand it up on a Tuesday and run a workshop on a Wednesday.

Self-hosted Commercial available · Community and Hosted coming soon

Author

Markdown-driven labs

WYSIWYG editor that round-trips cleanly to markdown. Paste images, embed videos, drop in code blocks. Source-mode toggle when you want exact control.

Challenge

Three challenge types

Text match (with regex), multiple choice, and checklist. Hints with point cost, unlock dependencies, decay scoring, first-blood bonus, attempt caps.

Project

Leaderboard for the room

Polished projector view designed for the back of the room. 5-second polling, first-blood notches, configurable accent. Drop it on a TV during the session.

What's new

Less setup, more workshop.

Import

Create a workshop from a Google Doc

Write the workshop in a Google Doc, challenges included, and download it as Markdown and PDF. Upload both: headings become sections and menu entries, screenshots arrive at full resolution, and each section's Challenges block becomes its questions. Prefer to keep questions separate? Edit them all offline in one challenges.md file.

Updates

One-click self-updates

Each install checks a signed release feed daily. A superadmin clicks Update; the platform takes a backup first, then upgrades itself. Servers without internet access can upload an offline package instead.

Guide

A built-in sample and help guide

Every install ships with a sample workshop that is also the manual: how to deploy, configure, author, and run, with real challenges in every section. New releases add a fresh edition beside the old one, and the formatting guide shows exactly how to lay out a Doc for import.

Admins

Admin management

Invite admins by email or add them with a password, then sort and filter the roster. Each admin owns their workshops. When one leaves, you move their workshops to another admin, export them, or delete them, so nothing is left without an owner.

See the full walkthrough →

CTF mode

Running CTFs? You don't need a second platform.

Switch any workshop to CTF mode and players land straight on the challenge board: Jeopardy tiles or a plain list, with point values, first-blood bonuses, and unlock dependencies. The lab guide is there if you want one.

Run as many events as you like on one install. Each admin builds and runs their own, and every event keeps its own players and leaderboard.

Portable by design

One directory.
Zip it. Move it.

Each workshop lives in its own directory — markdown chapters, challenge JSON, images, and a per-workshop SQLite for scoring. Export to a bundle, hand it to a colleague, restore on their box, run it tomorrow.

  • No external services required — Node, Caddy, SQLite, done.
  • Bundle export/import for content portability across instances.
  • Built-in backup + restore for full DR.
data/workshops/zero-trust-101/
├── workshop.json            # metadata + owner + publish_state
├── workshop.db              # per-workshop SQLite (scoring)
├── chapters/
│   ├── 01-intro/
│   │   ├── meta.json
│   │   └── content.md
│   └── 02-network-fundamentals/
│       └── ...
├── challenges/
│   ├── abc-find-the-port.json
│   └── def-tcp-vs-udp.json
└── images/
    └── <hash>-<uuid>.png
What's inside

Built for the real workshop loop.

A small product, not a platform-of-platforms. Every feature exists because the person running the workshop needs it on the day.

auth

Magic link or password

Participants register with email + display name. Magic-link mode via SMTP; password mode for offline events. Choose the sign-in method per workshop.

ctf

Jeopardy tile board

Toggle a workshop into CTF mode with a tile-grid challenge layout. Categories, point values, decay, first-blood bonuses, unlock dependencies.

admin

Many authors, one box

Each admin owns their workshops and decides who can find each one: not listed, their own catalog, shared with other admins, or the front page. Superadmins run the platform; other admins run their workshops.

export

PDF lab guide + certificate

Generate a take-home PDF of any workshop's lab guide. Auto-issue completion or progress certificates to participants based on score threshold.

lobby

Public-facing entry code

For internet-exposed instances, a single shared entry code gates every workshop behind a 14-day cookie. Speed bump for casual discovery — per-workshop auth still runs.

ops

One-click backup + restore

Full disaster recovery in one tarball. Hostname-gated restore, auto-restart via systemd. Workshop deletes archive-on-delete for 30-day recovery.

How it works

Three steps from zero to workshop.

  1. 1

    Deploy

    Stand up the platform on a Debian box (or your KVM appliance image). Caddy + Node + SQLite. systemd unit ships in the box.

  2. 2

    Author

    Import a Google Doc or write in the editor. Add challenges. Drop in images. Preview as a participant. Save it as a template for future cohorts.

  3. 3

    Run

    Share the URL with your cohort. Project the leaderboard. Watch the room. Export results when you're done.

Run your next workshop on your own terms.

Commercial self-hosted is available now, with no watermarks, unlimited admins, and support. The free Community edition and our Hosted plan are coming soon.