Shared project context, work management and observable execution for humans and their coding agents.
See the code
Shared context for projects that outlive a coding session.
🏠 Self-hosted · 🔌 Bring your own agents · 🧭 Your methodology
Start every new coding session with an organized, coherent and updated context
Backplane is a shared workspace for your team and coding agents. Keep tasks, project definitions, notes, and decisions together, so the next person or agent can pick up the work with the context behind it. Shared skills preserve how your team works, ready to reuse across projects.
🏠 Self-host Backplane · 🔌 Connect your agent · 🌐 Website, Cloud & support
Your workshop · Skills · Runner TUI · Screenshots · Documentation · Report an issue
[!NOTE] Open Source Preview. Start with Self-hosting for an instance with password login. Bring your own agents whenever you're ready.
APIs and workflows may evolve. Runners are experimental; review the known limitations before planning a deployment.
See the project at a glance. Keep the details within reach.
Tidewatch demo project · Open full size: Light / Dark
A shared workshop. Your way of building.
Think of Backplane as a well-equipped garage for your projects. The plans are on the wall, the tools are within reach, and the work is ready for whoever walks in next: you, a teammate, or your agent.
Your team defines the method. Backplane gives it a shared home. Keep the what and when on your boards, the context in notes and resources, and the how in reusable skills.
There is no prescribed project methodology. Start from optional templates, bring your own conventions, and choose how the tools work together. That freedom takes some setup. You can also build a more guided experience on top of Backplane.
The workshop is ready. The way you build is yours.
A map of the tools, not a fixed sequence. Open full size: Light / Dark
|
Organize the work, keep the context Tasks, definitions, notes, and decisions give you and your team a shared place to plan, track progress, and preserve why a decision was made. Start here. Useful on its own, without an agent. | |
|
Let your agent join the project Connect through MCP to read and update boards, cards, and notes from the coding tools you already use. Your agent, your credentials. No runner required. | |
|
Make delegated work observable Add optional runners for configured workflows. Choose roles, providers, budgets, and approval gates, then follow progress, results, and costs. Experimental. Configure the process around your team. |
Boards, notes, and resources keep the what and when. Skills carry the how.
Turn a useful method into a shared, reusable skill: your release checklist, debugging approach, review standards, or team conventions. Keep it in your workspace library and apply it to the project boards that need it.
SKILL.md bundles or start
from the built-in catalog. Your methodology stays yours.
A good method should survive the session that discovered it.
Harborlight demo workspace · September 2026 · Open full size: Light / Dark
Your tools can change. Your project context can stay together.
Backplane exposes boards, cards, notes, skills, and project context through MCP. Choose a terminal, editor, or desktop assistant. Familiar clients with local MCP server support include:
| Where you work | MCP clients |
|---|---|
| ⌨️ Terminal | Claude Code · Codex · Gemini CLI · GitHub Copilot CLI · OpenCode |
| 🧑💻 Editor | Cursor · GitHub Copilot in VS Code · Cline · Roo Code |
| 💬 Desktop | Claude Desktop |
Use backplane-mcp over stdio to connect a compatible MCP client,
including your own agent, to your instance.
Streamable HTTP is also available where the client supports it. Follow the
linked client documentation and our MCP setup guide;
configuration and available MCP features vary by client.
⚙️ Want Backplane to run the work? The optional runner currently executes Claude Code and Codex CLI. Runners are experimental and are a separate setup from connecting an MCP client.
📍 Give everyone the same starting point
Scope, objectives, and boundaries stay alongside the work they guide. Full size: light · dark |
🔎 Follow the work beyond its status
Keep the description, dependencies, participants, and linked pull request together. Full size: light · dark |
Original captures of fictional demo projects, September 2026. Screenshots follow your light or dark theme.
Want the full tour? Explore more product screens, including notes, resources, approvals, skills, and activity views.
🖥️ Plan in Backplane. Run with your own agents. See what happened.
The optional Backplane Runner takes work from the platform, runs your configured workflow in your repositories, and reports the results. The terminal UI (TUI) guides setup; the console keeps execution visible.
Your next run, ready to review before it starts.
Local demo TUI capture · August 2026 · Open full size: Light / Dark
From a card to a recorded result. The console shows the work as it moves through the configured stages, including agent completion and Git activity.
Local demo executions captured August 25, 2026. Light and dark show separate runs, so timestamps and reported costs differ. Open full size: Light / Dark.
Runners are experimental. Start with the runner setup guide and provider guide for current requirements and configuration.
When we founded Valaris, I kept coming back to two questions:
- How do we keep a team aligned when everyone works with coding agents?
- How do we stay aware of our projects' context and progress?
Backplane started as our project management tool. It gradually became our shared context manager: the place we use every day to organize work, preserve decisions, and collaborate on our own projects and our customers' projects.
Coding agents are awesome. But over longer projects, their sessions can start to look like Swiss cheese: useful work, with holes in the context between sessions, people, and tools. Those gaps accumulate unless someone actively takes care of them.
"Trust me bro" isn't enough for us. We want to understand what's planned, when and how it should happen, and what happened before.
And we want that information to be easy to share with both people and agents.
Backplane gives us a durable place to keep that context and coordinate the work around it. We built it for ourselves, and we're opening it up because we think others might find it useful too.
Different sessions. One place to pick up the thread.
session 01 session 02 session 03
\ | /
+----------+----------+
|
[ Backplane ]
context that stays
flowchart TB
H["People"] <-->|Web app| B["Backplane<br/>Project context · Tasks · Skills"]
A["Your coding agent"] <-->|MCP| B
B -->|Configured work and context| R["Optional runners<br/>Experimental"]
R -->|Progress, results, costs| B
R --> G["Your repositories"]
🧩 Bring the intelligence. Backplane keeps the work connected.
Runners can work in separate Git branches and open pull requests. They execute agent commands on their host; see Known security posture.
The runner currently supports Claude Code and Codex CLI, with GitHub and Gitea for the pull-request lifecycle. Connecting through MCP does not require a runner.
| Component | What it is |
|---|---|
backend/ | FastAPI + SQLAlchemy API: workspaces, boards, cards, executions, the scheduler that decides which runner gets which card |
frontend/ | React + Vite web app: boards, pipeline builder, runner console, live observer |
mcp-server/ | MCP server exposing the platform tool catalog to AI agents: on PyPI as backplane-mcp (README) |
runner/ | The autonomous runner (Go): polls for work, drives the coding agent, pushes branches, opens PRs |
docs/ | References and historical design documents; follow each document's status notice |
scripts/ | Development, verification, and packaging scripts |
🏠 Your infrastructure. Your project context.
Run Backplane with one Compose file: Postgres, backend, and frontend. Local password login is enabled by default, with no cloud dependency.
☁️ Cloud & support: Visit getbackplane.ai for product information and the planned Backplane Cloud offering, including managed hosting, support, and guided onboarding. Cloud is not yet available.
1. Configure and start
git clone https://github.com/Valaris-Studio/backplane.git
cd backplane
cp .env.example .env
# in .env, fill in the two required secrets:
# POSTGRES_PASSWORD: any strong value
# OAUTH_STATE_SIGNING_KEY: generate with: openssl rand -hex 32
# browsing from another machine? also set BACKPLANE_URL=http://<host-ip>:8080
docker compose -f docker-compose.prod.yml up -d
2. Create your admin account
Open http://localhost:8080 or your BACKPLANE_URL.
The first-run screen creates your admin account; later visits use the normal login page.
Use BACKPLANE_HTTP_PORT to override the port.
The first start builds backend and frontend from source, then runs database migrations automatically. There are no published images for these two services and no manual migration step. Allow a few minutes for the first build and startup.
The frontend accepts traffic only after the backend reports healthy. Until then, the page is unavailable while the stack finishes starting.
Follow the backend logs:
docker compose -f docker-compose.prod.yml logs -f backend
Check service status:
docker compose -f docker-compose.prod.yml ps
Services show (healthy) once ready. If the backend cycles between
unhealthy and restarting, inspect its logs for a migration or startup crash.
3. Explore a populated workspace (optional)
Seed the same demo workspace used in development. Pass the email of your first-run account to give it owner access to the seeded workspace:
docker compose -f docker-compose.prod.yml exec -T backend python -m scripts.seed_demo --email you@example.com
[!IMPORTANT] Putting Backplane on the internet? Follow
SECURITY.mdand Securing a Self-Hosted Deployment in the in-app documentation for TLS, proxies, and OIDC.
🔌 Bring your agent into the same project context.
Once your instance is running, connect an MCP-capable coding agent to read context and work with boards, cards, and notes.
backplane-mcp with your instance URL and API key.default toolset for everyday project work.The MCP server is available on PyPI
and runs through uvx backplane-mcp. The setup guide covers credentials,
client configuration, and protecting remote HTTP connections.
💡 Give your agent somewhere to start. Once connected, try:
Read this project's definition and assigned skills, then summarize its goals and working conventions.
Show me the blocked cards and their dependencies.
Record our decision in a project note so the next session can find it.
Use your own prompts and conventions. The shared context stays in Backplane when you switch sessions or tools.
See the terminal UI and demo execution above ↑
⚙️ Ready to let agents pick up work? Add a runner as a separate step. Runners are experimental. You need a coding-agent CLI on PATH and forge credentials.
Open Runner → Runners → Create runner to use the Launch runner wizard:
Identity → Roles → Config → Launch
The wizard ends with the command that starts the binary. For the full guide, see
Documentation → Getting Started → Registering a Runner in the app, or
runner/README.md.
The in-app guide is also available at /documentation without creating a workspace.
[!NOTE] Before your first
make dev-runner: if~/.claude.jsondoes not exist, runtouch ~/.claude.json. Otherwise Docker creates a root-owned directory at that path instead of bind-mounting the file.
🛠️ Working on Backplane itself? Start here.
This is the local development setup, with automatic authentication. For an instance with password login, follow Self-hosting.
You need: Docker + Compose, git, make, bash, and curl.
The stack runs in containers. Native Python, Node, pnpm, and Go installs are only
needed for development outside Docker.
Optional lsof improves the health helpers' port checks.
1. Start the stack in Terminal A
# Terminal A
git clone https://github.com/Valaris-Studio/backplane.git
cd backplane
cp .env.example .env # defaults work for local dev as-is
make dev # Postgres :5433 + backend :8000 + frontend :5173
make dev stays in the foreground and streams logs.
Wait for Application startup complete from the backend and VITE ready
from the frontend. Migrations run automatically, so first boot takes a little longer.
2. Add sample work in Terminal B (optional)
# Terminal B (optional)
make seed-demo # a sample workspace + populated board
The demo gives you a populated board to explore. It is safe to re-run and
refuses to add demo data to an instance that already holds real work.
Use FORCE=1 only if you intend to override that protection.
3. Open the app
dev@valaris.dev, with no signup flow.Stop and resume: Ctrl+C in Terminal A stops the stack. Your database stays
in a Docker volume, so make dev picks up where you left off.
[!WARNING]
make cleandeletes your database. It runsdocker compose down -vand also removes localnode_modulesand build output. Use it only when you want to throw everything away.
make doctor gives a one-shot health readout: container health, listening
ports, endpoint probes, and migration head.make quickstart-gate verifies this Quickstart in a temporary copy, using
disposable containers, volumes, and randomized ports. It needs Docker and
can run while make dev is up.Use make runner-test for runner checks. Bare Go tests inside this repository
can modify the live worktree.
📚 The full guide ships with the app.
Open /documentation on your instance:
self-hosted ·
local development.
It covers core concepts, every pipeline field, operations, and architecture, plus a candid guide to current rough edges.
Find the reference you need:
| Looking for | Read |
|---|---|
| Events | Event taxonomy |
| Forge credentials | Accounts, tokens, scopes, and troubleshooting |
| Agent and forge providers | Provider guide |
| REST API | Schema · API browser |
| Development | Contribution policy, setup, architecture, and tests |
| Architecture history | Historical reference; use in-app docs for current behavior |
| Pipeline history | Historical design; use in-app docs for current fields |
Need the live API contract? A running instance serves Swagger UI at
/api/docs in development and the machine-readable schema at /api/openapi.json.
The checked-in export may lag the live schema. Regenerate it with
python scripts/export-openapi.py while the backend venv is active.
🚧 Know what fits today and what still needs care.
Authentication works out of the box, but is still young. It has less mileage than the rest of the platform. Verify your first deployment carefully.
| Authentication today | Details |
|---|---|
| Local login | Email + password is on by default, with a first-run admin setup screen. No identity provider or fronting proxy is required. |
| Login protection | Failed logins are throttled per IP. Accounts lock after 5 consecutive failed attempts. |
| Account management | Workspace admins manage accounts. Password recovery requires an admin to set a temporary password. |
| External authentication | Generic OIDC (Keycloak, Authentik, Google, Entra, Okta), Google Cloud IAP, and explicit trusted-proxy mode are supported. Production refuses to start with no verifier. |
| Not implemented | SAML, SCIM, enforced MFA, and email-based password reset. |
Other boundaries to consider:
ghcr.io/valaris-studio/backplane-runner)
and standalone binaries with checksums
(darwin/linux/windows × arm64/amd64),
and the MCP server through uvx backplane-mcp.🔒 Telemetry is off by default. The endpoint ships empty.
Sending a ping requires both settings:
BACKPLANE_TELEMETRY_ENABLED=true
BACKPLANE_TELEMETRY_ENDPOINT=<your-explicit-endpoint>
Inspect the payload implementation.
💬 Your feedback helps shape Backplane.
| You can help with | Where to go |
|---|---|
| Bug reports, feature requests, and questions | Open an issue |
| Security reports | Follow SECURITY.md privately. Never open a public issue. |
| Your own adaptations | Fork freely under the applicable component licenses. |
Backplane is maintained solely by the Valaris team and is not accepting outside code contributions yet. External pull requests will be closed unreviewed. We have no contributor agreement in place and want you to know before investing time in a patch.
We expect to open contributions once the architecture settles.
CONTRIBUTING.md carries the current policy, development loop,
Router → Service → Repository → Model layering rules, and test-first expectation.
⚖️ Licensing follows the component. See the full map in
LICENSES.md.
| Component | License |
|---|---|
Platform core: backend/, frontend/, mcp-server/ | AGPL-3.0-or-later |
Runner: runner/ | MIT |
| API / OpenAPI / MCP tool schemas | Apache-2.0 |
Third-party dependencies, including the documented non-OSI exception (GSAP),
are covered in THIRD_PARTY_LICENSES.md.
🏷️ The product is Backplane. The valaris MCP namespace and VALARIS_*
environment variables remain stable technical identifiers so existing agent
configurations keep working.
See the full naming policy.
Keep the next session connected to the work you have already done.
Self-host Backplane · Connect your agent · Explore Backplane, Cloud & support
6 commits
Python
45.5%
TypeScript
34.8%
Go
19.1%
Shared project context, work management and observable execution for humans and their coding agents.
See the code
Shared context for projects that outlive a coding session.
🏠 Self-hosted · 🔌 Bring your own agents · 🧭 Your methodology
Start every new coding session with an organized, coherent and updated context
Backplane is a shared workspace for your team and coding agents. Keep tasks, project definitions, notes, and decisions together, so the next person or agent can pick up the work with the context behind it. Shared skills preserve how your team works, ready to reuse across projects.
🏠 Self-host Backplane · 🔌 Connect your agent · 🌐 Website, Cloud & support
Your workshop · Skills · Runner TUI · Screenshots · Documentation · Report an issue
[!NOTE] Open Source Preview. Start with Self-hosting for an instance with password login. Bring your own agents whenever you're ready.
APIs and workflows may evolve. Runners are experimental; review the known limitations before planning a deployment.
See the project at a glance. Keep the details within reach.
Tidewatch demo project · Open full size: Light / Dark
A shared workshop. Your way of building.
Think of Backplane as a well-equipped garage for your projects. The plans are on the wall, the tools are within reach, and the work is ready for whoever walks in next: you, a teammate, or your agent.
Your team defines the method. Backplane gives it a shared home. Keep the what and when on your boards, the context in notes and resources, and the how in reusable skills.
There is no prescribed project methodology. Start from optional templates, bring your own conventions, and choose how the tools work together. That freedom takes some setup. You can also build a more guided experience on top of Backplane.
The workshop is ready. The way you build is yours.
A map of the tools, not a fixed sequence. Open full size: Light / Dark
|
Organize the work, keep the context Tasks, definitions, notes, and decisions give you and your team a shared place to plan, track progress, and preserve why a decision was made. Start here. Useful on its own, without an agent. | |
|
Let your agent join the project Connect through MCP to read and update boards, cards, and notes from the coding tools you already use. Your agent, your credentials. No runner required. | |
|
Make delegated work observable Add optional runners for configured workflows. Choose roles, providers, budgets, and approval gates, then follow progress, results, and costs. Experimental. Configure the process around your team. |
Boards, notes, and resources keep the what and when. Skills carry the how.
Turn a useful method into a shared, reusable skill: your release checklist, debugging approach, review standards, or team conventions. Keep it in your workspace library and apply it to the project boards that need it.
SKILL.md bundles or start
from the built-in catalog. Your methodology stays yours.
A good method should survive the session that discovered it.
Harborlight demo workspace · September 2026 · Open full size: Light / Dark
Your tools can change. Your project context can stay together.
Backplane exposes boards, cards, notes, skills, and project context through MCP. Choose a terminal, editor, or desktop assistant. Familiar clients with local MCP server support include:
| Where you work | MCP clients |
|---|---|
| ⌨️ Terminal | Claude Code · Codex · Gemini CLI · GitHub Copilot CLI · OpenCode |
| 🧑💻 Editor | Cursor · GitHub Copilot in VS Code · Cline · Roo Code |
| 💬 Desktop | Claude Desktop |
Use backplane-mcp over stdio to connect a compatible MCP client,
including your own agent, to your instance.
Streamable HTTP is also available where the client supports it. Follow the
linked client documentation and our MCP setup guide;
configuration and available MCP features vary by client.
⚙️ Want Backplane to run the work? The optional runner currently executes Claude Code and Codex CLI. Runners are experimental and are a separate setup from connecting an MCP client.
📍 Give everyone the same starting point
Scope, objectives, and boundaries stay alongside the work they guide. Full size: light · dark |
🔎 Follow the work beyond its status
Keep the description, dependencies, participants, and linked pull request together. Full size: light · dark |
Original captures of fictional demo projects, September 2026. Screenshots follow your light or dark theme.
Want the full tour? Explore more product screens, including notes, resources, approvals, skills, and activity views.
🖥️ Plan in Backplane. Run with your own agents. See what happened.
The optional Backplane Runner takes work from the platform, runs your configured workflow in your repositories, and reports the results. The terminal UI (TUI) guides setup; the console keeps execution visible.
Your next run, ready to review before it starts.
Local demo TUI capture · August 2026 · Open full size: Light / Dark
From a card to a recorded result. The console shows the work as it moves through the configured stages, including agent completion and Git activity.
Local demo executions captured August 25, 2026. Light and dark show separate runs, so timestamps and reported costs differ. Open full size: Light / Dark.
Runners are experimental. Start with the runner setup guide and provider guide for current requirements and configuration.
When we founded Valaris, I kept coming back to two questions:
- How do we keep a team aligned when everyone works with coding agents?
- How do we stay aware of our projects' context and progress?
Backplane started as our project management tool. It gradually became our shared context manager: the place we use every day to organize work, preserve decisions, and collaborate on our own projects and our customers' projects.
Coding agents are awesome. But over longer projects, their sessions can start to look like Swiss cheese: useful work, with holes in the context between sessions, people, and tools. Those gaps accumulate unless someone actively takes care of them.
"Trust me bro" isn't enough for us. We want to understand what's planned, when and how it should happen, and what happened before.
And we want that information to be easy to share with both people and agents.
Backplane gives us a durable place to keep that context and coordinate the work around it. We built it for ourselves, and we're opening it up because we think others might find it useful too.
Different sessions. One place to pick up the thread.
session 01 session 02 session 03
\ | /
+----------+----------+
|
[ Backplane ]
context that stays
flowchart TB
H["People"] <-->|Web app| B["Backplane<br/>Project context · Tasks · Skills"]
A["Your coding agent"] <-->|MCP| B
B -->|Configured work and context| R["Optional runners<br/>Experimental"]
R -->|Progress, results, costs| B
R --> G["Your repositories"]
🧩 Bring the intelligence. Backplane keeps the work connected.
Runners can work in separate Git branches and open pull requests. They execute agent commands on their host; see Known security posture.
The runner currently supports Claude Code and Codex CLI, with GitHub and Gitea for the pull-request lifecycle. Connecting through MCP does not require a runner.
| Component | What it is |
|---|---|
backend/ | FastAPI + SQLAlchemy API: workspaces, boards, cards, executions, the scheduler that decides which runner gets which card |
frontend/ | React + Vite web app: boards, pipeline builder, runner console, live observer |
mcp-server/ | MCP server exposing the platform tool catalog to AI agents: on PyPI as backplane-mcp (README) |
runner/ | The autonomous runner (Go): polls for work, drives the coding agent, pushes branches, opens PRs |
docs/ | References and historical design documents; follow each document's status notice |
scripts/ | Development, verification, and packaging scripts |
🏠 Your infrastructure. Your project context.
Run Backplane with one Compose file: Postgres, backend, and frontend. Local password login is enabled by default, with no cloud dependency.
☁️ Cloud & support: Visit getbackplane.ai for product information and the planned Backplane Cloud offering, including managed hosting, support, and guided onboarding. Cloud is not yet available.
1. Configure and start
git clone https://github.com/Valaris-Studio/backplane.git
cd backplane
cp .env.example .env
# in .env, fill in the two required secrets:
# POSTGRES_PASSWORD: any strong value
# OAUTH_STATE_SIGNING_KEY: generate with: openssl rand -hex 32
# browsing from another machine? also set BACKPLANE_URL=http://<host-ip>:8080
docker compose -f docker-compose.prod.yml up -d
2. Create your admin account
Open http://localhost:8080 or your BACKPLANE_URL.
The first-run screen creates your admin account; later visits use the normal login page.
Use BACKPLANE_HTTP_PORT to override the port.
The first start builds backend and frontend from source, then runs database migrations automatically. There are no published images for these two services and no manual migration step. Allow a few minutes for the first build and startup.
The frontend accepts traffic only after the backend reports healthy. Until then, the page is unavailable while the stack finishes starting.
Follow the backend logs:
docker compose -f docker-compose.prod.yml logs -f backend
Check service status:
docker compose -f docker-compose.prod.yml ps
Services show (healthy) once ready. If the backend cycles between
unhealthy and restarting, inspect its logs for a migration or startup crash.
3. Explore a populated workspace (optional)
Seed the same demo workspace used in development. Pass the email of your first-run account to give it owner access to the seeded workspace:
docker compose -f docker-compose.prod.yml exec -T backend python -m scripts.seed_demo --email you@example.com
[!IMPORTANT] Putting Backplane on the internet? Follow
SECURITY.mdand Securing a Self-Hosted Deployment in the in-app documentation for TLS, proxies, and OIDC.
🔌 Bring your agent into the same project context.
Once your instance is running, connect an MCP-capable coding agent to read context and work with boards, cards, and notes.
backplane-mcp with your instance URL and API key.default toolset for everyday project work.The MCP server is available on PyPI
and runs through uvx backplane-mcp. The setup guide covers credentials,
client configuration, and protecting remote HTTP connections.
💡 Give your agent somewhere to start. Once connected, try:
Read this project's definition and assigned skills, then summarize its goals and working conventions.
Show me the blocked cards and their dependencies.
Record our decision in a project note so the next session can find it.
Use your own prompts and conventions. The shared context stays in Backplane when you switch sessions or tools.
See the terminal UI and demo execution above ↑
⚙️ Ready to let agents pick up work? Add a runner as a separate step. Runners are experimental. You need a coding-agent CLI on PATH and forge credentials.
Open Runner → Runners → Create runner to use the Launch runner wizard:
Identity → Roles → Config → Launch
The wizard ends with the command that starts the binary. For the full guide, see
Documentation → Getting Started → Registering a Runner in the app, or
runner/README.md.
The in-app guide is also available at /documentation without creating a workspace.
[!NOTE] Before your first
make dev-runner: if~/.claude.jsondoes not exist, runtouch ~/.claude.json. Otherwise Docker creates a root-owned directory at that path instead of bind-mounting the file.
🛠️ Working on Backplane itself? Start here.
This is the local development setup, with automatic authentication. For an instance with password login, follow Self-hosting.
You need: Docker + Compose, git, make, bash, and curl.
The stack runs in containers. Native Python, Node, pnpm, and Go installs are only
needed for development outside Docker.
Optional lsof improves the health helpers' port checks.
1. Start the stack in Terminal A
# Terminal A
git clone https://github.com/Valaris-Studio/backplane.git
cd backplane
cp .env.example .env # defaults work for local dev as-is
make dev # Postgres :5433 + backend :8000 + frontend :5173
make dev stays in the foreground and streams logs.
Wait for Application startup complete from the backend and VITE ready
from the frontend. Migrations run automatically, so first boot takes a little longer.
2. Add sample work in Terminal B (optional)
# Terminal B (optional)
make seed-demo # a sample workspace + populated board
The demo gives you a populated board to explore. It is safe to re-run and
refuses to add demo data to an instance that already holds real work.
Use FORCE=1 only if you intend to override that protection.
3. Open the app
dev@valaris.dev, with no signup flow.Stop and resume: Ctrl+C in Terminal A stops the stack. Your database stays
in a Docker volume, so make dev picks up where you left off.
[!WARNING]
make cleandeletes your database. It runsdocker compose down -vand also removes localnode_modulesand build output. Use it only when you want to throw everything away.
make doctor gives a one-shot health readout: container health, listening
ports, endpoint probes, and migration head.make quickstart-gate verifies this Quickstart in a temporary copy, using
disposable containers, volumes, and randomized ports. It needs Docker and
can run while make dev is up.Use make runner-test for runner checks. Bare Go tests inside this repository
can modify the live worktree.
📚 The full guide ships with the app.
Open /documentation on your instance:
self-hosted ·
local development.
It covers core concepts, every pipeline field, operations, and architecture, plus a candid guide to current rough edges.
Find the reference you need:
| Looking for | Read |
|---|---|
| Events | Event taxonomy |
| Forge credentials | Accounts, tokens, scopes, and troubleshooting |
| Agent and forge providers | Provider guide |
| REST API | Schema · API browser |
| Development | Contribution policy, setup, architecture, and tests |
| Architecture history | Historical reference; use in-app docs for current behavior |
| Pipeline history | Historical design; use in-app docs for current fields |
Need the live API contract? A running instance serves Swagger UI at
/api/docs in development and the machine-readable schema at /api/openapi.json.
The checked-in export may lag the live schema. Regenerate it with
python scripts/export-openapi.py while the backend venv is active.
🚧 Know what fits today and what still needs care.
Authentication works out of the box, but is still young. It has less mileage than the rest of the platform. Verify your first deployment carefully.
| Authentication today | Details |
|---|---|
| Local login | Email + password is on by default, with a first-run admin setup screen. No identity provider or fronting proxy is required. |
| Login protection | Failed logins are throttled per IP. Accounts lock after 5 consecutive failed attempts. |
| Account management | Workspace admins manage accounts. Password recovery requires an admin to set a temporary password. |
| External authentication | Generic OIDC (Keycloak, Authentik, Google, Entra, Okta), Google Cloud IAP, and explicit trusted-proxy mode are supported. Production refuses to start with no verifier. |
| Not implemented | SAML, SCIM, enforced MFA, and email-based password reset. |
Other boundaries to consider:
ghcr.io/valaris-studio/backplane-runner)
and standalone binaries with checksums
(darwin/linux/windows × arm64/amd64),
and the MCP server through uvx backplane-mcp.🔒 Telemetry is off by default. The endpoint ships empty.
Sending a ping requires both settings:
BACKPLANE_TELEMETRY_ENABLED=true
BACKPLANE_TELEMETRY_ENDPOINT=<your-explicit-endpoint>
Inspect the payload implementation.
💬 Your feedback helps shape Backplane.
| You can help with | Where to go |
|---|---|
| Bug reports, feature requests, and questions | Open an issue |
| Security reports | Follow SECURITY.md privately. Never open a public issue. |
| Your own adaptations | Fork freely under the applicable component licenses. |
Backplane is maintained solely by the Valaris team and is not accepting outside code contributions yet. External pull requests will be closed unreviewed. We have no contributor agreement in place and want you to know before investing time in a patch.
We expect to open contributions once the architecture settles.
CONTRIBUTING.md carries the current policy, development loop,
Router → Service → Repository → Model layering rules, and test-first expectation.
⚖️ Licensing follows the component. See the full map in
LICENSES.md.
| Component | License |
|---|---|
Platform core: backend/, frontend/, mcp-server/ | AGPL-3.0-or-later |
Runner: runner/ | MIT |
| API / OpenAPI / MCP tool schemas | Apache-2.0 |
Third-party dependencies, including the documented non-OSI exception (GSAP),
are covered in THIRD_PARTY_LICENSES.md.
🏷️ The product is Backplane. The valaris MCP namespace and VALARIS_*
environment variables remain stable technical identifiers so existing agent
configurations keep working.
See the full naming policy.
Keep the next session connected to the work you have already done.
Self-host Backplane · Connect your agent · Explore Backplane, Cloud & support
6 commits
Python
45.5%
TypeScript
34.8%
Go
19.1%