Dojo combines a lesson, a tutor, and a place to attempt the work. A programming lesson can use a terminal. A mathematics lesson can use a notebook with questions, written working, and submissions.
Start Dojo
bun run --cwd apps/dojo dev
Open http://127.0.0.1:4800. Set DOJO_PORT before the command if you need a different port.
The learning flow
The learner opens a lesson or requests a generated learning path. The tutor inspects the student's current state, gives a focused task, reviews the attempt, and chooses the next step. The server has separate paths for terminal activity and notebook activity.
When the learner returns, the tutor is instructed to inspect the current notebook and prior attempts before adding another question. Student progress and the current question should drive continuation rather than repeating onboarding.
Execution boundaries
Programming work can execute in Docker-backed lesson containers. The sandbox implementation also has a host fallback and a DOJO_SANDBOX=off mode. Verify the selected execution mode before handing a terminal to someone else.
The notebook is a browser learning surface for questions, written work, and submissions. It does not provide a general-purpose Python kernel.
Tutor access
Tutor setup uses stored student credentials with a host-login fallback in the current implementation. DOJO_TUTOR_MODEL controls model selection. Verify a real tutor turn separately from loading the webpage.
Dojo manages tutor sessions through the engine and uses the agents SDK for account integration. Its tutor session lifecycle is managed by the Dojo server.