Spacelift.io is a platform that helps you run infrastructure as code. It brings policy, visibility, and control to the workflows your teams already use.
The Backstage plugin connects your self hosted portal to Spacelift. It adds a page where you can see your stacks with status and recent runs. You can open a stack in Spacelift with one click. Where allowed, you can start a rerun without leaving Backstage. This puts day to day IaC activity in the same place your teams manage services and docs.
For engineers, the value is focus. During an incident, you can check stack health and the last changes from the portal. For routine work, you can review runs, watch progress, and jump to details only when needed. Platform teams get a shared view across spaces and projects, using the access that the Spacelift API key permits. That keeps control in one place while cutting tool switching.
At a high level, the plugin shows the stacks that the configured key can see. It surfaces status and run history, and offers quick actions when the stack allows it. Backstage remains your hub. Spacelift stays the system of record for IaC state and execution.
Installation Instructions
These instructions apply to self-hosted Backstage only.
Install the backend plugin with the new backend system
-
Add the backend package
# From your Backstage root directory yarn --cwd packages/backend add @spacelift-io/backstage-integration-backend
-
Register the backend plugin
In packages/backend/src/index.ts
// packages/backend/src/index.ts import { createBackend } from '@backstage/backend-defaults'; const backend = createBackend(); backend.add(import('@spacelift-io/backstage-integration-backend')); await backend.start();
-
Add configuration
In app-config.yaml
spacelift: hostUrl: '<your-subdomain>.app.spacelift.io' apiKey: ${SPACELIFT_API_KEY} apiSecret: ${SPACELIFT_API_SECRET}
Replace the subdomain placeholder with your Spacelift address without https. Keep the API values in environment variables.
Install the backend plugin with the old backend system
This plugin targets the new backend system that uses createBackend. It does not document a legacy router. If your app still uses the legacy backend, migrate to the new backend system before installing this plugin.
Install the frontend plugin
-
Add the frontend package
# From your Backstage root directory yarn --cwd packages/app add @spacelift-io/backstage-integration-frontend
-
Add the route so users can view the page
In packages/app/src/App.tsx
// packages/app/src/App.tsx import { SpaceliftIoPage } from '@spacelift-io/backstage-integration-frontend'; // other imports already present in your App const routes = ( <FlatRoutes> {/* other routes */} <Route path="/spacelift" element={<SpaceliftIoPage />} /> </FlatRoutes> );
-
Add the sidebar item so users can navigate to it
In packages/app/src/components/Root/Root.tsx
// packages/app/src/components/Root/Root.tsx import SpaceliftIcon from '@material-ui/icons/CloudQueue'; // other imports already present in your Root export const Root = ({ children }: PropsWithChildren<{}>) => ( <SidebarPage> <Sidebar> {/* other sidebar items */} <SidebarItem icon={SpaceliftIcon} to="spacelift" text="Spacelift" /> </Sidebar> {children} </SidebarPage> );
-
Ensure frontend config includes the host value
In app-config.yaml
spacelift: hostUrl: '<your-subdomain>.app.spacelift.io'
Environment variables
Set the API key values for the backend
export SPACELIFT_API_KEY="your-api-key-id"
export SPACELIFT_API_SECRET="your-api-key-secret"
You can place these in your Backstage process environment or your deployment environment.
Where the page shows up
- The page is available at the path /spacelift in your app
- The sidebar entry named Spacelift links to it
Permissions behavior
The backend uses the Spacelift API key you configure. The plugin does not add user level permissions. Limit access to this page using your Backstage permission setup. Keep the API key scoped to the minimum needed in Spacelift.
Compatibility
- Backend requires @backstage/backend-plugin-api version 1.3.0 or newer
- Frontend requires @backstage/core-components version 0.17.1 or newer
- Use Backstage 1.17.0 or newer for best results
Changelog
This changelog is produced from commits made to the Spacelift.io plugin since 5 months ago, and based on the code located here. It may not contain information about all commits. Releases and version bumps are intentionally omitted. This changelog is generated by AI.
Breaking changes
None
Features
- Add backend plugin with deployment scripts #1 merged 4 months ago
- Add frontend plugin #3 merged 4 months ago
Documentation
- Add architecture design schema. Add project structure docs. Fix links to Spacelift docs and npm page references #9 merged 4 months ago
- Update README files to use new npm org naming. Fix license inconsistency in README #8 merged 4 months ago
- Update README files #6 merged 4 months ago
Tests
CI
Internal
- Migrate types to a common project for reuse by frontend #2 merged 4 months ago
Set up Backstage in minutes with Roadie
Focus on using Backstage, rather than building and maintaining it.