AI-native engineering interviews

Real VMs. Real tools.
Interviews for the AI era.

Give candidates a full cloud desktop with VS Code, a browser, and AI tools. Record everything for async review.

Get Started See how it works
$ orthos create --challenge backend-debug
Creating interview session...
Provisioning VM .................. done
Starting desktop ................. done
Tunnel ready .................... done
→ https://session-a7f3.orthos.dev
  Share this link with your candidate.

How it works

Three steps. Zero setup.

No SDK. No calendar plugin. No candidate prep. Just a link.

01

Create a session

Pick a challenge. Orthos provisions an isolated cloud VM with everything pre-installed — VS Code, Chrome, terminal, Claude Code.

02

Share the link

Candidate clicks one URL — no download, no install. Full Linux desktop in their browser tab. AI tools included. They just start working.

03

Review async

Screen recording, terminal history, git timeline, file changes — all captured automatically. Watch the session on your schedule, not theirs.


Why Orthos

Built for how engineers actually work.

Candidates get the tools they'd use on the job. You get the signal you'd get from a trial day — in 90 minutes.

Full cloud desktop

4-core VM with VS Code, Chrome, terminal. Not a sandbox — a real development environment accessible from any browser.

AI-native by default

Claude Code is pre-installed. Candidates use AI the way they would at work — because that's the skill you're actually evaluating.

Full session recording

Screen capture, terminal replay, git history, file diffs — all recorded automatically. Review the whole session, not just the output.

Ephemeral & isolated

Every session gets a fresh VM. No data leaks between candidates. Infrastructure is destroyed after review. Zero cleanup.


What candidates see

A real desktop. In a browser tab.

Not a toy. Not a sandbox. The same tools they use every day.

session-a7f3.orthos.dev
EXPLORER
▾ project/
app/
models/
user.rb
controllers/
config/
spec/
models/
user_spec.rb
user.rb
14class User < ApplicationRecord
15  has_many :sessions
16  has_many :api_keys
17
18  scope :active, -> {
19    where(deactivated_at: nil)
20  }
21
22  def authenticate(token)
23    api_keys.find_by(token: token)
24      &.touch(:last_used_at)
25  end
TERMINAL
candidate@vm $
claude
╭─────────────────────╰
│ Claude Code v1.2    │
╮─────────────────────╯
> Looking at the
  cache scoping in
  user.rb...

Ready to ditch the whiteboard?

Start running interviews that test real engineering — not memorized algorithms.

Get Started