Open source · Self-hosted · MIT

Practice thinking for yourself.

Vibe coding is making developers faster and their instincts weaker. Dojo is the counter-practice: timed katas with no AI, then a sensei that reviews your reasoning after you submit.

No account needed for the playground. Running an instance needs Docker and a GitHub OAuth app.

Illustrative evaluation — not a real session

NEEDS WORK

“You fixed the symptom, but left the race condition. Explain what happens when both requests arrive together.”
Direct feedback about the work. No score, no reassurance theatre.
PassedPassed with notesNeeds work

The kata loop

You do the thinking.
The sensei does the review.

AI belongs after the attempt, never during it. A kata is one problem and one timer. The sensei may ask one follow-up question before it gives the verdict.

  1. Pick your session.Set your mood and the time you have, then choose one of three katas: code, a technical conversation, or a whiteboard design.
  2. Work through it.No AI, no pause and no replacement picks. The timer runs.
  3. Submit what you have.The sensei streams an evaluation of your work and reasoning. Code katas can run your tests in a Piston sandbox, and the sensei sees the results.
  4. Read, reflect, return.Review the analysis and the topics to revisit. Share the result if you want; a shared page is public.

The honor code

Nothing technical stops you from opening an assistant during a kata. Dojo trusts you, because the practice only works if you keep it.

  • No AI during the kata. Debrief with AI after.
  • No skipping katas you find uncomfortable.
  • The timer runs. You submit what you have.

If you cheat yourself here, you cheat yourself everywhere.

What is inside

Practice, and a record
that you showed up.

An instance serves one group. Whoever runs it decides who is invited.

Katas

Code, chat or whiteboard.

Refactor code, discuss a technical decision or work through a system design. Junior, mid or senior helps shape which katas you are offered, alongside the topics you choose.

Belts

Earned by showing up.

White to black, computed from completed katas, topic variety, active days and time at your rank. The verdict never adds points, but a kata that ends in Needs work does not count as completed. A belt is not a certificate. Read the rules.

Engawa

Try an idea, no account.

An anonymous code playground: drop in a snippet and run it. No kata, no verdict.

Open the playground →

Scrolls are external learning apps that an operator registers and embeds in Dojo. What an instance offers depends on what its operator publishes. How scrolls are authored.

Run your own

Self-hosted, not
signed up for.

  • Your data, your server. Practice history and verdicts stay in your database.
  • Your keys. Live evaluation uses the LLM provider you configure, so its cost is yours, and it receives what you write in a kata. The sensei defaults to a mock, so you can try the loop without a key.
  • Your guest list. Sign-up is by invitation, issued by you. There is no hosted account.

A full instance, Docker only

git clone https://github.com/rodacato/dojo
cd dojo
cp .env.example .env
# set the GitHub OAuth values and WEB_URL=http://localhost in .env
docker compose up --build
docker compose exec dojo-api \
  node dist/infrastructure/persistence/seed.js

The last command loads the katas; a new instance starts with none. Code execution needs the dev container or a Kamal deploy, and everything needs the running instance, so nothing works offline.

Contribute

What is welcome,
and what is not.

Dojo has a point of view about practice, and the contributing guide protects it.

Welcome

  • New kata variations
  • Prompt improvements
  • Bug fixes with reproductions
  • Accessibility fixes

Not welcome

  • Gamification features
  • Softening the sensei’s tone
  • AI assistance during a kata
  • Scoring leaderboards
Read the contributing guide →