byte_layers
Interactive courses inside VSCode. A course is a folder of Markdown steps: byte_layers shows them in the sidebar, runs their commands in a terminal with one click, and checks your work as you go.
The steps run commands on your machine, in a VSCode terminal. Only open courses from a source you trust.
Features
- Course outline: chapters and steps in the sidebar, with your progress on each step
- Run blocks: ▶ runs a command in the byte_layers terminal, 📋 copies it
- Checks: a step can check your work with a script (exit code 0 = passed); on failure you see its output
- Hints: shown one at a time when you're stuck
- Setup scripts: a step can prepare its environment when it opens
- Progress kept: steps you've completed stay green across reloads
Install
Search for byte layers in the Extensions view of VSCode (or VSCodium, code-server), then click Install.
Supported on macOS and Linux.
Open a course
From the byte_layers site: click Ouvrir dans VSCode on a course page. VSCode asks to open the link, and byte_layers shows you the repository, the version and the folder (~/byte_layers/<course>, which you can change). Confirm, and the course is cloned with git and opened in a new window. If the folder already holds the course, byte_layers brings it to that version instead.
From a URL: run byte_layers: Open a Course from a URL from the Command Palette, paste the course repository (https), then a branch or tag (or nothing, for the default branch).
By hand: clone the course, open its folder (File → Open Folder…), click the byte_layers icon in the activity bar.
The first two need git on your machine.
Workspace Trust
VSCode asks whether you trust the authors of a folder when you open it. byte_layers respects that answer:
- Trusted folder: everything works.
- Untrusted folder (Restricted Mode): you can read the whole course, but byte_layers runs nothing. Run blocks, checks and setup scripts wait, and the panel tells you so.
To trust the folder later, click Manage Workspace Trust in the panel (or run the Workspaces: Manage Workspace Trust command). The panel picks the change up right away; you don't need to reload.
Writing a course
A course is plain Markdown in a .layers/ directory:
my-course/
└── .layers/
├── index.md # course root: title, description, options
├── 01-basics/
│ ├── index.md # chapter intro
│ ├── 01-what-is.md # step 1
│ └── 02-first-run.md # step 2
└── 02-cleanup.md # root-level step
Each step is a Markdown file with frontmatter and special fenced blocks:
---
title: "Run Your First Container"
description: "Start nginx and verify it's running"
---
## Run the container
```exec
docker run -d -p 8080:80 --name my-nginx nginx:latest
```
```verify
docker ps | grep my-nginx
```
```hint
Make sure Docker Desktop is running.
```
exec: a command with Run and Copy buttons. Run sends it to the byte_layers terminal.
verify: a bash script run when you click Verify. Exit code 0 = passed.
hint: revealed one at a time.
setup: runs once when the step opens.
acknowledge: an "I've read this" confirmation, with no script.
Every verify block of a section must pass for the section to count as completed.
Course options
In the course root index.md:
---
title: "My Course"
options:
# Let learners click an empty progress circle to mark a step done.
allowManualProgress: true
# 'never' | 'unverifiable' | 'always'
# 'unverifiable' (default): Next marks explanatory steps done;
# steps with checks still need them to pass.
autoCompleteOnNext: unverifiable
---
Courses written before the .layers/ name still open.
License
Proprietary — © 2026 Deltavia, all rights reserved. See the license file shipped with the extension. Each course comes with its own license.