The platform

6 modules. 2 are always on.

A platform is not a bundle you take whole. Labs and Instances are the product; the other 4 are yours to switch on, and yours to leave off. A team that wants machines and nothing else runs machines and nothing else — no courses, no quizzes, no scoreboard, and none of the memory they cost. Everything here can be turned on later, from the console, per instance.

Labs

always on

A lab is a real Linux container with its own address on your VPN — not a browser sandbox. Someone SSHes into it, runs Docker inside it, breaks it, and gets it back. Templates define what a lab starts as; anyone can fork one.

Who turns it on Every platform has this. It is the thing being sold.

Instances

always on

Your users manage their own machines: start, stop, snapshot, restore, resize, and reach a serial console when they have locked themselves out. The same controls your operators have, scoped to what each person owns.

Who turns it on Every platform has this.

Learn

optional heavy +embed

Roadmaps and a syllabus: an ordered path through material with progress kept per person. With an AI key configured it also answers questions against the material rather than in general.

Who turns it on Colleges and academies running a course someone has to finish in order.

Discuss

optional heavy +embed

Threaded discussion attached to the work, AI replies, and a "for you" feed that ranks by similarity rather than recency.

Who turns it on Cohorts big enough that questions should be answered once, publicly.

Evaluate

optional heavy +judge0

Quizzes and a code arena — submissions run against real test cases in an isolated executor, not marked by hand.

Who turns it on Anywhere a score has to mean the same thing for everyone.

CTF Missions

optional

Missions with flags, clans, and timed events with a live scoreboard.

Who turns it on Security teaching, and internal competitions.

"Heavy" is measured, not a warning label. The full stack is 3,594 MB against a 4 GB machine; a platform starts six services and the eleven others wait. Learn and Discuss add an embedding service capped at 3 GB — more than an entire small plan — and Evaluate adds a code executor with its own database and workers.

The economy

Zeal and Jolt

Two currencies, deliberately. One measures what someone has done and cannot be spent; the other is spent and does not rank anyone. Collapsing them into one number is how a leaderboard becomes something you buy.

Zeal

Progress, and the ranking. Earned by finishing quizzes, solving code-arena problems and capturing flags. It is the number a leaderboard sorts on.

It is never spent. Nothing in the platform takes Zeal away from someone, which is what lets a rank mean "what you have done" rather than "what you have done lately, minus what you bought".

Jolt

Utility, and it is spent. Buys hints on a problem and renews a lab that is about to expire.

Separate from Zeal so that needing a hint costs something real without costing a rank — and so that a platform can be generous with one and strict with the other.

Where it comes from

Awards are a transfer from a system account, not a number written onto a person. Every award and every spend is a row naming both sides.

Which means the ledger balances: what a platform has handed out is a figure you can total, not an estimate.

Three things about it worth knowing

A balance is computed, never incremented.

Someone's total is the sum of what they received minus what they spent, derived from the rows every time. There is no running total to drift, so a balance cannot end up disagreeing with the history that produced it — the failure every points system has, where the number is right and the log is not.

Re-doing something does not pay twice.

An award is tied to the thing it was for, and that pairing is unique: a second award for the same quiz replaces the first rather than adding to it. Retaking a quiz to farm points does not work, and it does not have to be prevented by blocking the retake.

The awarding account is real.

Points come from a platform account with a balance, which refills when it runs down. It is deliberate: the alternative is minting from nowhere, and then "how much has this platform awarded this term" has no answer.

Zeal and Jolt belong to the labs platform running on your instance, not to us — your platform awards them, sets what they cost, and keeps its own ledger. Nothing is reported to Selfmade Ninja, and there is no shared leaderboard across platforms.

Pick the modules when you deploy

Every one of these can be switched on later from the console. Starting small is the cheaper mistake.