Core concepts
Workspace, machine, recipe, stack, template, test, interview, question, challenge - every word EasyEnv uses, in one place.
EasyEnv has a small vocabulary you'll see across the dashboard, the CLI, and this documentation. Read this once and the rest of the docs will feel obvious.
Workspace#
A workspace is a project-sized environment. It groups one or more machines that should boot, live, and die together. A typical web app workspace might contain three machines: a Node.js app server, a Postgres database, and a Redis cache. Members invited to the workspace see all three.
Machine#
A machine is a real virtual machine (a Linux VM) running inside a workspace. Each machine has a hostname, a private IP on the EasyEnv mesh network, an SSH endpoint, and a status (provisioning, running, stopped, failed).
Recipe#
A recipe is the blueprint for a single machine: which OS image to start from, which packages to install, which services to start, and any custom configuration to apply. Each recipe corresponds to one Ansible role under the hood.
Recipes are the unit of reuse. The same postgres recipe powers a candidate's debugging exercise, a developer's local stack, and an internal demo - with no drift between them. Browse them all at /catalog.
Stack#
A stack is a service or addon installed onto an already-running machine. Where a recipe builds the whole machine from scratch, a stack runs once on top of an existing machine to install one specific thing.
Use a stack when you want to:
- Run a sidecar container with
docker-run(e.g.image=nginx:latest) without rebuilding the machine. - Layer a one-off bash script or installer onto a machine in a way that's still tracked and reproducible.
- Add an extension or addon (e.g.
pg_stat_statementson Postgres) without forking the base recipe.
A stack-recipe is the catalog entry, and a stack is one instance of it attached to a specific machine. The CLI command is easyenv stack add.
Template#
A template is a saved workspace shape: which recipes to combine, which sizes to pick, and which post-boot scripts to run. Templates are the primary way teams share a known-good environment. Pick a template and you get the same N machines + recipes that the original author validated.
Test#
A test is a reusable technical assessment definition. It bundles a workspace shape (which machines and recipes the candidate gets) with a list of questions, a time limit, and a scoring rubric. Build a test once and reuse it across every candidate for that role.
Interview. The UI relabels it to Test because that's what hiring managers actually call it.Interview#
An interview is one instance of a test sent to one candidate. It has a start time, a deadline, a candidate identity, and (after completion) a result. Two flavors:
- Live interview: you and the candidate share a workspace in real time. Built-in Jitsi video, shared terminal, shared cursor.
- Offline interview (also known as a take-home assignment): the candidate gets their own workspace and completes the test on their schedule. You review the replay later.
InterviewItem. Same object, friendlier UI label.Question#
A question is one unit inside a test. EasyEnv supports two kinds:
- Text question: a free-text prompt the candidate answers in writing. Ideal for system-design questions, post-mortems, or trade-off explanations.
- Hands-on challenge: a full-environment exercise (see below).
Challenge#
A challenge (or hands-on challenge) is a question type that points at a recipe with something intentionally broken or missing. The candidate's job is to diagnose and fix it inside their machine. We ship a library of pre-broken recipes (look for the summit_ prefix in the catalog) and you can write your own.
Each challenge has a pass condition: a command we run on submission to decide whether the candidate solved it. Example: pg_isready -h localhost exiting 0 means the broken Postgres is back up.
Account#
An account is your team or organization container. Members, billing, plan limits, recipes, and templates all live under an account. A user can belong to multiple accounts and switch between them in the dashboard or with easyenv account use.
Plan#
Every account has a plan that governs concurrent workspace count, total CPU and RAM, monthly minutes, and feature access. See pricing for the current tiers.
