Open-source alternatives to Port: a self-hosted Backstage portal

Backstage is the main open-source option for replacing Port's hosted developer portal in your own infrastructure. This page maps Port's capabilities, gaps, costs and migration path.

On this page

Which open-source alternative to Port fits your team

If your Port renewal, a licensing change or a data residency requirement is forcing a decision, Backstage is the main self-hosted open-source replacement for Port's portal layer, and it fits teams that are ready to own a portal they build, configure and run inside their own infrastructure. It is not a hosted product with a configuration screen. It is a framework that your platform team assembles into a working portal, which is why the decision depends as much on your operating model as on the feature list. Teams usually start looking for alternatives for a small set of reasons: a renewal that changes the cost base, a licensing change that alters what they may run, a requirement that catalog data stay in their own cloud accounts or data centers, or the discomfort of having the entity model and self-service actions tied to one vendor's schema. Port itself can be self-hosted for its integrations, since its data integrations, most built on its Ocean framework, can run with Helm or Docker in your infrastructure. That means the residency question may be partly solved without replacing Port at all. Confirm with Port which components would still run in its hosted service in your setup, because the replacement decision turns on the portal layer and the people who will run it.

Before you commit, ask three questions of your own team. Do you have engineers who will maintain a TypeScript and React application, upgrade plugins and track Backstage releases, which ship on a published monthly and weekly cadence in the Backstage versioning policy? Do you have an owner for the catalog data model, meaning who decides which kinds and relations represent your services? And will developers accept catalog-info.yaml files in their repositories as the source of truth? If the answer to any of these is no, a self-managed commercial alternative with vendor support may be the better fit, and it is worth comparing those options before you start a migration. Ask any vendor, including Port, for a written breakdown of recurring license fees, the infrastructure they expect you to run, and the support terms included.

Open-source options that replace Port's portal layer

Port's value sits in three places: a catalog of entities, self-service actions, and a portal UI on top. Backstage covers all three in one self-hosted framework, while other self-hosted catalog options cover narrower slices. The cards below describe what each option brings and what your team must build or staff.

Backstage as the core framework

Backstage is an Apache-2.0 framework created by Spotify and accepted to the CNCF in 2020, now at the Incubating maturity level. It provides the Software Catalog, Software Templates, TechDocs and a plugin ecosystem, so one self-hosted instance can replace Port's catalog, actions and portal UI. It fits teams with frontend and platform engineering capacity to own a React application. Check whether your team will maintain the app, the plugins and the upgrade cycle.

Software Catalog and descriptor files

Backstage models services, APIs, resources, systems, domains, groups and users as entity kinds described in catalog-info.yaml files stored with the code. Port blueprints map to these kinds through a mapping exercise, and the catalog can hold OpenAPI, AsyncAPI, GraphQL or gRPC API definitions. Confirm that your Port blueprints map cleanly to the available kinds before you commit, and decide where ownership data will come from.

Software Templates for self-service actions

Software Templates replace Port's self-service actions by scaffolding new repositories, services and infrastructure requests from a parameterized form. The templates run the steps your team defines, so the work moves from a SaaS action definition into version-controlled template code. Expect the largest build effort here, because each action needs its own pipeline, permissions and error handling. Inventory your existing actions first.

TechDocs for documentation

TechDocs follows a docs-like-code model, where Markdown files live next to the code and MkDocs builds the documentation site. This replaces documentation features that Port users often keep in separate wikis. Your team must choose where the builds run and how the published sites are stored and access-controlled. Confirm the MkDocs plugins your docs rely on before migration.

Lighter self-hosted catalog alternatives

Some teams need only a service catalog and ownership view, not a full portal framework. Self-hosted catalog tools of this kind usually bring a smaller UI scope but depend on their own release cycle and integration coverage. Evaluate each candidate for build effort, plugin or integration maintenance, and whether it covers the actions and docs you use today. Ask each vendor for its self-hosting terms in writing before you compare.

Plugin maintenance and upgrade cadence

Backstage's main release line ships monthly, and the next line ships weekly, so plugins and custom code need regular upgrades. Each plugin you add becomes a dependency your team patches and tests. Plan for a standing owner of the Backstage instance, and budget engineering time for upgrades alongside feature work. Ask any partner for a written scope covering upgrades, support and testing.

How Port's capabilities map to Backstage

This table sets Port's main capabilities against the closest Backstage equivalent, with gaps marked where a plugin or custom entity design is needed. Read the middle column as the starting point for a proof of concept, and check the last column against Port's current feature set before you commit to a migration plan.

Port capabilityBackstage equivalentGap or effort to expect
Blueprints and entitiesCatalog kinds such as Component, API, Resource, System, Domain, Group and User, described in catalog-info.yaml filesPort blueprints allow custom data models. Backstage kinds are fixed, so custom fields need a validated schema, annotations or a custom entity design.
Data integrations (Ocean)Catalog processors, entity providers and plugins that ingest from cloud accounts, CI systems and identity providersOcean's prebuilt integrations are not one-to-one with Backstage plugins. Confirm each source you rely on has a maintained plugin or budget for a custom provider.
Self-service actionsSoftware Templates that scaffold repositories, pipelines and catalog entries from a formTemplates cover creation workflows well. Day-two actions such as restarts or scaling need custom actions or an external workflow engine.
Scorecards and maturity checksNo built-in scorecard engine in the core catalog; typically handled through community plugins or custom reportingThis is a clear gap. Plan for plugin evaluation or custom checks, and confirm how Port's scorecard rules are exported before you map them.
DocumentationTechDocs, which builds MkDocs sites from Markdown kept beside the codeGood fit for docs-like-code teams. Teams that rely on Port's in-portal editing will need an authoring workflow change.
Access to entity data and APICatalog API and search, plus plugin backends that expose data to other toolsConfirm the query patterns your automations use. Read access is straightforward, but write-back to the catalog often needs custom code.
Hosting and operationsSelf-hosted in your own cluster, with your team owning upgrades, plugins and the databasePort can host integrations or run them in your infrastructure with Helm or Docker. Backstage removes the vendor-hosted option, so budget for ongoing platform engineering.

Mapping Port blueprints and entities to Backstage catalog kinds

In Port, most software units are modelled as blueprints such as service, microservice, or application, each with its own custom properties. In Backstage, the closest match is the Component kind, described in a catalog-info.yaml file kept next to the code. Set apiVersion: backstage.io/v1alpha1 and kind: Component, then use spec.type (for example service or website) and spec.lifecycle to carry the lifecycle state. Put the owner in spec.owner and the group that contains the component in spec.system.

  • Blueprint identifier: Map each Port blueprint to a Component type value, or to a set of types, and record the original blueprint name in metadata.tags or an annotation so you can trace it back during cutover.
  • Custom properties: Standard fields such as language, repository and on-call contact go to metadata.annotations or spec fields. Properties with no Backstage equivalent need a decision: keep them as annotations, or model them as a separate entity.
  • Relations: Port relations between services usually become spec.dependsOn and spec.dependencyOf entries.
  • Ingestion: Most teams keep descriptors in each repository and register them with a Location or a repository discovery provider.

Check which Port properties are actually used by dashboards or actions before you migrate them, because unused properties rarely justify extra modelling work.

What a self-hosted Backstage portal costs compared with a hosted product

This table sets each cost component of a hosted Port subscription against the same component in a self-hosted Backstage portal. Read each row for who gets paid, whether the cost is one-time or recurring, and what pushes it up or down. Port's subscription is a single recurring line, while Backstage moves most of the cost into infrastructure and engineering time that you own.

Cost componentHosted PortSelf-hosted Backstage
Platform feeRecurring subscription paid to Port, quoted by Port against your usage and seatsNo licence fee for the open-source framework (Apache-2.0). Recurring cost is the infrastructure and staff that run it
Hosting and infrastructurePort hosts the portal. Data integrations can run on Port or in your infrastructure with Helm or DockerRecurring cloud or data center cost for the Backstage app, its database and CI runners for TechDocs builds. Scales with catalog size and user count
Initial build and configurationOne-time setup of blueprints, integrations and self-service actions in the Port consoleOne-time build of the app, catalog model, authentication and Software Templates, usually the largest front-loaded cost. Ask for a fixed-scope estimate
Plugin development and maintenanceLargely covered by the subscription and Port's own roadmapRecurring. Custom plugins for integrations Port provides out of the box need engineers who own them after launch
Upgrades on the release linesHandled by Port as part of the hosted serviceRecurring. Backstage ships a monthly main release line and a weekly next line, so someone must test and apply upgrades on a planned cadence
Migration of blueprints and entitiesNot applicable when staying on Port. Exporting data is a one-time task if leavingOne-time mapping of Port blueprints to catalog kinds, plus validation of ownership and relations. Effort grows with the number of blueprints
Support and incident responseVendor support under your subscription termsInternal on-call and platform team time, or a retainer with an implementation partner. Confirm response terms in writing
Internal skillsOperators need Port administration and Ocean integration knowledgeEngineers need TypeScript, Node.js, Kubernetes and Backstage plugin skills. Hiring or training is a recurring cost if skills are scarce
What to request in a quoteSubscription terms, usage limits, data residency options and self-hosted integration supportWritten scope covering build, migration, upgrade cadence, support hours and handover. DeployOpen quotes from a written scope

How to migrate off Port in seven phases

The sequence moves Port's catalog, self-service actions and integrations onto a self-hosted Backstage instance one step at a time, so each phase closes with a working, checked output. Port integrations can keep running until the cutover, which lets the team retire the SaaS portal only after the replacement has proven itself.

  1. Inventory blueprints, entities, integrations and actions

    The platform team lists every Port blueprint, its entities and relations, each data integration (including any built on Ocean and how it resyncs), every self-service action and every consumer of the portal, such as scorecards, search or API calls from pipelines. Owners of each item are named next to it. Done means a spreadsheet or table where every blueprint and action has a target Backstage kind, an owner and a decision to keep, rebuild or drop it.

  2. Export data and map it to catalog-info.yaml

    Engineers export entity data through Port's API and documentation, then map each blueprint to a Backstage kind such as Component, API, Resource, System, Domain, Group or User. Ownership and team data should come from your identity provider rather than being copied by hand. Each mapping is written into catalog-info.yaml files in the owning repositories, validated against the descriptor format. Done means a sample of entities loads into a test Backstage catalog with the expected owners and relations.

  3. Build Software Templates for priority actions

    The team ranks self-service actions by how often they are used and how much manual work they remove, then rebuilds the top few as Backstage Software Templates. Each template gets a parameter form, the repository scaffolding and the pipeline steps the action triggers. Platform engineers review templates with the teams that request them. Done means each rebuilt template creates a working service from start to finish in a non-production environment, and the remaining actions have a dated backlog entry.

  4. Run a pilot with one team

    One product team adopts the self-hosted portal for its catalog entries, templates and documentation while the rest of the organization stays on Port. The pilot surfaces gaps in mappings, permissions and onboarding. Feedback is logged and fixed before the next team joins. Done means the pilot team completes its routine tasks in Backstage and signs off on the catalog data for its services.

  5. Operate a parallel run

    Port and Backstage run side by side. Integrations keep feeding Port, and the team checks that Backstage shows the same owners, services and action results. Differences are reconciled and the sync process is written down. Done means a defined period passes with no unresolved mismatches between the two catalogs, and the team agrees on the criteria that count as a match.

  6. Cut over integrations and access

    Integrations are repointed from Port to Backstage catalog ingestion or your CI pipelines, and users are moved to the new portal through your single sign-on setup. Access controls are reviewed so that only the intended groups can run each template. Port remains available for rollback until the cutover is verified. Done means all consumers read from Backstage, access reviews are recorded, and a rollback plan has been tested.

  7. Decommission Port and retain evidence

    Once the cutover is stable, the team exports final records, revokes Port tokens and integration credentials, and confirms with Port how your data is deleted under your contract. The decommissioning record is kept with the migration documentation, including the inventory, mappings and access reviews. Done means Port access is removed, the contract end is confirmed in writing, and the documentation is stored where auditors or internal reviewers can find it.

How much engineering time a Backstage portal needs

The recurring engineering cost of a self-hosted Backstage portal is not the initial setup. It is the continuous upkeep: keeping plugins current, following the release cadence, running the database and cluster, and keeping catalog data accurate. Port's hosted model moves most of that upkeep to the vendor, so the honest comparison is between the ongoing work your team takes on and the subscription and integration work you stop paying for. Before you commit, measure that upkeep in a pilot rather than relying on a general estimate. The release cadence is the most predictable recurring task. Backstage's main release line ships monthly, on the Tuesday before the third Wednesday of each month, and the next release line ships weekly on Tuesdays, according to the Backstage versioning policy. Someone must decide which line to follow, schedule upgrades, and test custom plugins and Software Templates against each release. Plugin count is the main driver here: every community or in-house plugin is another dependency that can break on upgrade, so track how long each upgrade cycle takes with your actual plugin set.

Catalog data quality and integrations are the least visible costs. Each Port blueprint you rebuild as a Backstage kind needs a source of truth, usually a catalog-info.yaml file in each repository, and someone must keep those files and their owners current. Identity provider setup is a drivers of effort too: user and group entities must map cleanly from your directory, and that mapping is often where pilots run long. In a pilot, record the hours spent on plugin upgrades, identity mapping, failed catalog ingestions, database and cluster operations, and descriptor fixes, then extrapolate from that log. Ask your implementation partner to quote against that measured workload and to state which items are one-time and which recur each quarter.

What you give up when you leave Port and the usual workarounds

Moving from a hosted portal to self-hosted Backstage changes who runs the infrastructure, who keeps integrations current, and who answers when something breaks. Each card below names one thing you give up and the workaround most teams use, so you can judge the internal effort before committing.

Vendor-managed hosting and upgrades

Port runs the portal service for you, so upgrades and uptime are the vendor's job. With Backstage, your team owns the deployment, the database, the authentication setup and every upgrade. Backstage ships a main release line monthly and a next line weekly, so plan for a recurring upgrade rhythm and a staging environment to test plugin compatibility before production. Ask who on your team will own that cycle and how often it gets done.

Hosted integrations with configurable resync

Port's data integrations, built largely on its Ocean framework, can run hosted by Port with a resync interval you configure. Self-hosting moves that job into your infrastructure, deployed with Helm or Docker, so your team schedules, monitors and repairs the sync jobs. Confirm which of your sources need near-real-time updates and which can tolerate a longer interval, since that choice drives the load and the number of workers you run.

Packaged UI and out-of-the-box catalog views

Port ships a finished interface for browsing entities, building dashboards and running actions. Backstage provides the Software Catalog, Software Templates and TechDocs as a framework, so the look, navigation and any views Port gives you by default must be built or assembled from plugins. Expect a frontend workstream that covers catalog layout, entity pages and the scorecard views your developers actually use. Review the plugin list against your must-have views before you estimate the build.

Data integrations you must now maintain

Port's catalog fills from many tools through prebuilt integrations. In Backstage, each source needs an ingestion path: a catalog-info.yaml convention in repositories, a community or custom plugin, or a small integration you write. Entity kinds such as Component, API, Resource and System give you a schema to map into, but the connectors are yours. Inventory every source feeding Port today, then sort each into an existing plugin, a custom connector or a manual process.

Vendor support and incident response

With a hosted product, a support queue is part of the subscription. Open-source Backstage is backed by a community and a CNCF project, but production incidents land on your on-call rota. If your organization needs a named escalation path, you can buy a support retainer from an implementation partner, which covers upgrades, monitoring and fixes on a defined schedule. Ask any partner for the written scope, response expectations and what happens during a major Backstage upgrade before signing.

Which option fits by situation

Residency requirements usually concern where catalog metadata, service ownership and integration payloads are stored and processed. Port can run its data integrations hosted by Port or self-hosted in your infrastructure with Helm or Docker, according to Port's documentation, so residency needs should be checked against which parts of the pipeline Port hosts. A self-hosted Backstage instance keeps the catalog, TechDocs and plugin data inside your own cloud account or data center by design.

  • Where the catalog lives: Backstage stores its catalog in a database you operate, so you decide the region, network path and backup location.
  • Integration data flow: Confirm whether Port's hosted integrations move any payloads outside your region before you rely on them.
  • Docs and build artifacts: TechDocs builds documentation sites from Markdown in your repositories, which you can host internally.
  • Plugin egress: Review which plugins call external APIs, since each one can send data outside your boundary.
  • Operator access: Define who in your organization can read the database and logs.

Ask Port in writing which components run in their hosted service for your contract and region, and map the answer against your residency policy before choosing a path.

Questions teams ask before replacing Port with Backstage

What drives the effort of replacing Port with a self-hosted Backstage portal?

The effort depends mostly on how much of Port you actually use. A catalog that maps a handful of blueprints to Backstage kinds such as Component, API, Resource, System and Group is a bounded job. Effort rises with custom integrations, self-service actions that must become Software Templates, scorecard logic, and the number of identity provider and CI/CD connections. Backstage is an Apache-2.0 framework, so the software itself carries no license fee, but you pay for the engineers who build, operate and extend it. Ask any implementation partner for a written scope that lists each blueprint, action and integration, since that list is what the quote should follow.

How long does it take to get a first working Backstage software catalog?

The first milestone is usually a catalog that lists services from your repositories, with owners and basic metadata, and that is the part to plan first. We do not publish durations, and the timeline depends on your number of repositories, the state of your existing metadata and how quickly access to your identity provider and source control is granted. A practical approach is to start with one team's services, validate the catalog-info.yaml files and ownership links, and then expand. Your written scope should state that first milestone and its acceptance criteria explicitly.

What does our internal team need to provide for a Backstage project?

Your team needs to own decisions that only your organization can make. These include the catalog model, which entity kinds map to your services, who approves template changes, and which systems count as the source of truth for ownership. Engineers need to add catalog-info.yaml descriptors to repositories, and someone must run the platform after go-live, including upgrades. Platform engineering staff should also be ready to review Backstage's release line, which ships monthly for the main line and weekly for the next line according to the Backstage versioning policy. Confirm these responsibilities in the written scope before work starts.

Can we build a Backstage portal ourselves without outside help?

Yes, many teams do, provided they have engineers comfortable with TypeScript, Kubernetes, identity integration and ongoing platform operations. Backstage has a large plugin ecosystem and public documentation, so the learning curve is real but well documented. Outside help is most useful for the parts that are easy to get wrong: a secure hosting setup, authentication and authorization design, backup and upgrade procedures, and documentation that auditors can review. DeployOpen plans, implements, customizes, hardens, backs up, upgrades and documents self-hosted platforms inside your own cloud accounts, data centers or air-gapped networks, under fixed-scope agreements.

Can Port's self-hosted data integrations keep working during a migration?

Port's integrations can be run by Port or self-hosted in your infrastructure with Helm or Docker, according to Port's documentation. During a migration, many teams keep those integrations running while they build the Backstage catalog, so existing data remains available to consumers. Be aware that a self-hosted Port integration still depends on Port's platform for the portal itself. Plan the cutover so that Backstage receives the same ownership and service data from its own catalog descriptors or from a sync job, and confirm with Port which integration version and configuration you need to keep.

How do we keep catalog data in sync with source systems in Backstage?

Backstage keeps catalog data current through its ingestion model: descriptors in Git repositories, scheduled or provider-based discovery, and plugins that read from systems such as your identity provider. Each source needs a defined owner and a refresh rule, otherwise entities drift from reality. Port's equivalent is a configurable resync interval for hosted integrations. In Backstage, you decide the refresh method per source, typically by reading team and user data from your identity provider and service data from catalog-info.yaml files. Test drift detection early, because stale ownership is the most common cause of a catalog that engineers stop trusting.

When does a retainer make sense after the Backstage portal goes live?

A retainer makes sense when the portal becomes a service your teams depend on and someone must keep it running. Ongoing support, upgrades and continuous testing are available as retainers, and they cover the recurring work that a one-time project does not: monitoring, applying Backstage releases, patching plugins, restoring backups and reviewing new templates. Compare the retainer with the cost of an internal engineer who would carry the same on-call and upgrade duties. Ask for a written statement of what the retainer includes, how requests are prioritized and how upgrades are scheduled.

Does Backstage cover the compliance evidence our auditors ask for?

Backstage can hold ownership records, service documentation and access-related configuration, which helps with evidence collection, but it does not produce compliance evidence on its own. Auditors need documented controls, access reviews, change records and backup proof, and independent auditors and certification bodies issue any audit report or certification. DeployOpen prepares systems, controls and evidence for compliance assessments but does not issue audit reports, attestations or certifications. Agree with your assessor early which catalog data and TechDocs pages they will request.

How DeployOpen works on this

DeployOpen plans, implements, integrates, hardens, documents and supports self-hosted open-source platforms inside your own infrastructure, including Backstage portals that replace Port. Engagements start with a written scope that fixes deliverables and timelines before any build work begins.

How we scope

  • Inventory your Port blueprints, entities, integrations and self-service actions, then map each to a Backstage catalog kind or Software Template.
  • Agree which identity source supplies users and groups, and which catalog-info.yaml ownership fields must be populated.
  • Record the written scope, deliverables and timeline before work starts; engagements are fixed-scope and quoted from that scope.

How we build

  • Deploy Backstage in your cloud account, data center or air-gapped network, with the catalog, templates and TechDocs configured for your teams.
  • Build Software Templates for the self-service actions Port currently triggers, with the approvals and secrets handling your policies require.
  • Test the portal and its integrations, including access controls and the API definitions it publishes, before cutover.

How we hand over

  • Document the catalog schema, template catalog, plugin configuration and upgrade steps so your engineers can maintain the instance.
  • Provide backup and restore procedures for the catalog database and configuration, and run them with your team.
  • Deliver compliance readiness evidence, such as access reviews and change records, for your own auditors to assess; DeployOpen does not issue attestations.

How we support

  • Plan Backstage upgrades against the project's release cadence, with test runs in a staging environment first.
  • Offer ongoing support, upgrades and continuous testing as a retainer after the handover.
  • Confirm with your team which plugins, such as scorecards or cloud integrations, need maintenance and who owns each one.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.