Features

Everything your build farm needs in one place.

BuildDock pairs a hosted multi-tenant control panel with a small BuildDock Agent so your studio computers become a managed build fleet. No cloud compute fees, no inbound firewall holes.

Source control

Bring your own SCM.

Each project picks its own backend. The agent runs the right tooling locally; credentials live on the agent disk via Windows DPAPI.

  • SVN - full pipeline today. Cleanup, revert, switch -r N for pinned revisions, post-pipeline scrub.
  • Git - agent ships with MinGit (~45 MB). Branches, tags, commits.
  • Perforce / Helix Core - CLI-only install; no P4V GUI bundled.
  • Plastic SCM / Unity Version Control - cm.exe command-line client.

Per-project working copies

One working copy per project on each agent. svn switch / git checkout swaps branches in place - no checkout-from-scratch tax on every build.

Branch-aware build forms

The build-trigger form's source-ref input changes label + default per SCM: trunk for SVN, @head for Perforce, /main for Plastic.

Engines

Unreal first, Unity and Godot in the pipeline.

Unreal Engine builds run end-to-end today. Unity is scaffolded panel-side (project capability flags, JobDto wire shape, build form). Godot is on the roadmap.

  • Unreal Engine - RunUAT BuildCookRun with operator-pickable Development / Shipping, distribution, iterative cooking, clean. Pin the engine version per project; the agent invokes the matching install. No version lock-in on our side.
  • Symbol bundles - distribution builds extract .pdb + .dll into a separate SYM zip; the staged build ships PDB-free.
  • Project-files regen - opt-in UnrealBuildTool -projectfiles step for boxes where teammates added .cpp/.h without committing binaries.
  • Extra UAT args - whitelist-only operator-supplied overrides per build.

Worker pipeline pre-checks

Disk space, free RAM, agent reachability, current job count - all surfaced before you queue. Builds queued to disabled agents never claim.

Build-name templating

Archive zip names render through a template (project / SVN revision / job id / timestamp / DRM flag). Same template for Steam, Drive, Dropbox, OneDrive.

Distribution

Upload to every destination that matters.

Per-build checkboxes on the build form, one-click re-upload cards on the build detail page, and a JobDto that carries fresh OAuth tokens just-in-time.

Steam (SteamPipe)

Per-project app ID + depots. Branch list managed in the panel + surfaced as a dropdown when re-uploading. Cached Steam Guard sentry per agent for 2FA-free re-uploads. Optional DRM-wrap step.

Google Drive

Per-studio service-account JSON. Per-project destination folder ID. Symbol bundle uploaded alongside the build archive. Streams the zip on the fly - no disk staging.

Dropbox

Per-studio OAuth. Chunked uploads via /2/files/upload_session/* (32 MB chunks). Pipe-streamed zip, no disk stage. Refresh tokens are stable.

OneDrive

Per-studio OAuth (works with personal + work/school MS accounts). Graph createUploadSession + 10 MiB chunked PUTs. Spills the zip to a temp file so memory stays flat regardless of archive size.

Console targets (scaffolded)

PS5, Xbox, Nintendo Switch - project-form fields land today; worker pipelines deferred to the NDA-restricted SDK work. Wire shape is settled so the upgrade is non-breaking.

Epic Games Store, GOG (scaffolded)

Per-project + per-studio credentials shipped panel-side. BuildPatchTool + GOG Pipeline Builder worker integrations queued.

Automation

Schedules, triggers, presets.

Three ways to fire a build without anyone clicking. Each one carries its own template so you can mix daily Shipping cooks with on-commit Development cooks.

  • Schedules - cron-style. Skip-if-no-SVN-changes check before update. Coalesces fresh fires against an existing pending job so daily schedules don't pile up.
  • Triggers - fire on SVN revision changes. Cooldown windows. Pinnable to specific source refs.
  • Presets - one-click build buttons on the Overview, with a confirmation modal showing exactly what'll run before it fires.

Cancellation

Pending jobs cancel immediately. In-flight jobs are flagged for the claiming worker to stop on next heartbeat (under 60 s) - the agent kills the process tree cleanly.

Stale-job sweep

Periodic tick marks jobs worker_lost when their claimed agent hasn't heartbeated past the threshold, so the queue never wedges on a dead box.

Per-stage hooks

Fire scripts at pre-SVN, pre-build, post-archive, on-success, on-failure, post-Steam. Each hook has an opt-in "fail the build on non-zero exit" toggle.

Shared script library

Scripts are first-class panel objects: per-studio script body, one approval per agent per script (DPAPI-sealed hash). Multiple hooks can reference the same script - one approval covers them all.

Hooks

Plug into every stage.

PowerShell, Python, or batch - whatever fits the job. Environment variables carry the project slug, SVN revision, archive path, worker name, hook point, and more.

Common uses: posting to Slack on success/failure, deploying symbolfiles to your crash-reporter, kicking off downstream integration tests, syncing translated builds to localisation servers, swapping in DRM-wrapped binaries before SteamPipe.

Security

Trust boundaries the way you'd draw them.

Outbound-only agent

Agents poll the panel over HTTPS. No inbound ports. No VPN. No port-forwarding. Air-gappable from the public internet via a corporate proxy if needed.

Per-agent bearer tokens

Each agent has its own token, sealed via Windows DPAPI on the agent disk. Tokens are revocable from the panel without touching the agent box.

No remote-command channel

The panel never sends arbitrary commands to an agent. Jobs reference (projectSlug, profileKey); the agent resolves to trusted local command lines. Crafted POSTs can't escape that.

Studio isolation

Every panel query is scoped by studio_id at the SQL level. Cross-studio guards on the atomic job-claim. Studios never see each other's data - same database, different rows.

Role-based permissions

Granular permission slugs (builds.launch, projects.write, settings.edit_steam, ...) plus role bundles. Invite-based onboarding via signed tokens.

CSRF + Argon2id

Every mutating session-authed endpoint enforces CSRF. Passwords hashed with Argon2id. Server-side sessions only - no JWT, no localStorage tokens.

Day-to-day

Built for the operator who has to fix it at 2 am.

Streaming build logs

Live tail per phase + level. Stage filter, level filter (info / warn / error with auto-detection of UAT / MSVC error patterns), fullscreen mode.

Median-duration ETAs

Progress bar interpolates against the project's recent median build time so you get a smooth ETA instead of the worker's coarse phase checkpoints.

Live worker resources

Disk / RAM / CPU readouts on the build detail page while the build runs. Low-disk warning when below the agent's headroom threshold.

Build history + reports

Per-project success rate, mean / median duration trends, agent-by-agent throughput. Audit log for every mutating action.

Auto-updating agents

The agent fleet picks up new versions on heartbeat. No SSH-and-reinstall. Setup wizard runs once per agent for the first install.

First-install wizard

The agent installer offers opt-in installs for SVN, Git, Perforce, Plastic, MSVC build tools, Unity tooling, and Python. Pick a non-C: drive for the heavy VS install. Sign in with Google straight from the wizard.

Ready to ship without the headache?

Request access and we'll send you a registration link the moment your studio's slot opens.