Why TeamCity Professional limits push teams to decide between Enterprise and open source
Teams that have outgrown TeamCity Professional limits face two paths: buy Enterprise or additional agent licenses and keep TeamCity, or move the same builds to self-hosted Jenkins or Woodpecker CI. The Professional edition stops at 100 build configurations, 10 pipelines and 3 agents, and once connected agents exceed the licenses held, TeamCity blocks new builds. That ceiling tends to arrive during a busy release week, which forces the decision before the team has measured what its estate actually needs.
The limit comes from licensing and capacity, so it does not show that the builds cannot run anywhere else. The right answer depends on three factors: how many agents must run at peak, how many Windows builds the team depends on, and how heavily it relies on build chains and snapshot dependencies. Woodpecker CI runs workflows in containers and connects to several forges, which suits Linux container builds. Jenkins runs on many platforms through its agents and plugins, but its pipelines are written in a different model. Test your Windows and build chain requirements against each engine before choosing.
Start with an inventory: count the agents active in a normal week and at peak, list the build configurations still in use, and note which ones need Windows or chained builds. Ask the vendor for a written quote that states whether Enterprise and agent licenses are annual, how additional agents are billed, and what happens when usage grows mid-term. On the open-source side, the cost is mostly the engineering time to build, maintain and back up the server and agents, which recurs as long as the platform runs. Compare both quotes against that inventory before committing to either path.
What the Professional ceiling requires from your CI estate
TeamCity Professional limits your CI estate on four fronts at once: how many build configurations and pipelines you run, how many agents stay connected, how licensing grows with them, and what you can take with you if you leave. Each card below is a decision to make before a limit blocks a build, whether you buy Enterprise or move to open source.
Build configurations and pipelines
Professional allows 100 build configurations and 10 pipelines. Count both from your versioned settings export so the number reflects what is in the repository. Teams that keep adding small projects often reach the pipeline ceiling before the configuration ceiling, so track both figures every month. Confirm in the TeamCity documentation how templates and build chains count toward these limits before you rely on them. If you stay on Professional, consolidate duplicated configurations now. If you move to Jenkins or Woodpecker CI, the same inventory becomes your list of pipeline files to write.
Agent counts and licenses
Professional allows 3 agents, and TeamCity blocks new builds when connected agents exceed the licenses you hold. Compare the agent count with peak parallel demand, such as the hour before a release, because average load hides the problem. Autoscaling or ephemeral build hosts can push the count above the limit without anyone noticing, so check which agents register automatically. On Enterprise, every additional agent is a recurring license line. Jenkins and Woodpecker CI carry no per-agent license, but you pay for the machines, their upkeep and the staff who run them.
Licensing that scales with growth
Enterprise is licensed per agent, so cost rises with each build machine you add. Ask the vendor how agent licenses are added, whether unused licenses carry over, and how billing works if you exceed the licensed count mid-term. Model two scenarios: the agent count you run today and the peak you expect after the next product launch or acquisition. Open-source engines remove the per-agent license line, but their cost recurs in infrastructure, plugin maintenance and engineering time. Write those recurring items into the comparison over the same horizon so the two options are measured on equal terms.
Handing off build history and secrets
Hosted CI services hold deployment secrets and keep artifacts for limited periods, so an exit needs both exported before cutover. Secret values often cannot be read back: GitHub returns only secret names, and CircleCI states that variable values are not readable after they are set. After CircleCI's January 4, 2023 incident, customers were told to rotate secrets, which is the same step you should plan for any move. Confirm whether TeamCity secure values can be exported, and if they cannot, plan to re-enter and rotate them in the new system. Export build history and logs before you cancel the subscription.
How TeamCity Enterprise, Jenkins and Woodpecker CI compare against the limits
TeamCity Enterprise keeps the same server, build chains and agent model, and lifts the Professional ceilings through licensing. Your limits become whatever your Enterprise terms cover, so the core questions are how many build configurations, pipelines and agents you need and what each costs at renewal.
- Ceilings lifted by license: Professional stops at 100 build configurations, 10 pipelines and 3 agents. Enterprise replaces those caps, but get the exact terms in writing from JetBrains before you plan around them.
- Agent licensing recurs: Enterprise is licensed per agent, so every added build agent is a recurring line item. Ask what happens when agent count exceeds the license and whether unlicensed agents can still connect.
- Familiar features stay: Build chains, IDE integration and Windows agents remain part of the TeamCity model, which matters if builds depend on Windows-only tooling. Confirm these features are included in the edition you buy.
- Operations stay with you: You still run the server, database, backups and upgrades inside your own infrastructure. Ask how upgrades are supported for your version and what true-up billing applies when agent counts grow.
Before renewal, export your Kotlin DSL or XML settings and build history, then request a quote that lists Enterprise terms, agent count and true-up rules for the next term.
Jenkins is distributed under the MIT License, so the software itself carries no license fee and no built-in cap on build configurations, pipelines or agents. Your costs move to the controller, the build agents, plugin maintenance and the staff who run them, all of which recur for as long as the instance is in service.
- No license ceiling: Jenkins can distribute work across multiple machines. The scaling guide describes adding controllers for new teams and a primary and backup controller behind a proxy such as HAProxy or F5.
- Dedicated agents: The scaling guide recommends dedicated build agents so the controller handles HTTP requests and manages the build environment. Each agent is infrastructure you pay to run.
- Plugin upkeep: Jenkins has more than 2,300 community plugins. LTS 2.580.1 stopped bundling several plugins, including the bouncycastle API, SSH server and JUnit plugins, so teams that rely on them must install them through the plugin manager.
- Java and LTS cadence: Java 21 has a planned end of support in September 2027 and Java 25 in September 2029. The final LTS release for Java 17 was 2.541.3 in March 2026. Plan a regular review for each LTS line.
- Pipelines as code: Jenkinsfiles use Declarative or Scripted syntax. Configuration as Code reads YAML from
CASC_JENKINS_CONFIGbut does not install plugins, so pin plugin versions in your image or Helm chart.
Ask your team to size plugin maintenance, Java upgrades and backup of $JENKINS_HOME, which holds configuration, plugins and secrets, and confirm agent support for your Windows toolchain.
Woodpecker CI is licensed under Apache-2.0 and is built around containers: every workflow step runs its commands inside a container image. It has no per-agent or per-configuration license, so its limits come from your own hosting capacity, and it connects to the forge where your repositories already live.
- Where it runs: Agents run workflows on Docker, Kubernetes or the local machine. On Kubernetes, each step runs in a standalone pod that shares files through a temporary persistent volume claim, which is 10G and ReadWriteMany by default.
- Forge fit: Woodpecker supports GitHub, Gitea, Forgejo, GitLab, Bitbucket and Bitbucket Datacenter. Connecting several forges to one server is still experimental, so plan one forge per server for now.
- Scaling path: SQLite is the default database, with PostgreSQL or MariaDB recommended for larger instances. An optional autoscaler can create cloud VMs for pending builds.
- Plugin and syntax trade-offs: Plugins are container images configured as steps. The docs say Drone plugins generally work but may need adjustments. Parallel workflows with
depends_oncover many pipelines, but check them against your current build chains. - Release tracking: Version 3.19.0 was released on October 7, 2026, fixing an injection of matrix environment variables into the default clone step and enforcing agent labels on the server. Confirm Windows agent support before committing.
Test your three most complex pipelines on a staging instance and confirm Windows and IDE requirements against the current Woodpecker documentation.
How to move off the Professional limits without losing build history
This sequence inventories TeamCity configurations, picks a target per project group, builds a parallel environment, and cuts over only after build history, artifacts and secrets are accounted for.
Inventory every build configuration with versioned settings
Enable versioned settings on the TeamCity server so the project tree, build configurations, templates, parameters and VCS roots are committed to a .teamcity directory in Kotlin DSL or XML. The TeamCity administrator and a lead developer for each project should review the export and mark which configurations are active, which are dormant and which depend on each other through snapshot dependencies or build chains. Done means the repository holds a complete, reviewed inventory that a second person can read without opening the TeamCity UI.
Decide the target for each project group
Group the inventory by team, product or risk level, then choose for each group whether to stay on TeamCity with Enterprise or agent licenses, move to self-hosted Jenkins, or move to Woodpecker CI. Count build configurations, pipelines and agents per group against the Professional limits to see which groups force the decision. Record the decision, the owner and the reason in the migration plan so later reviewers can see why a group moved or stayed.
Export build history, logs and artifacts before any tier change
Before you change the license tier or retire agents, export build history, logs and build artifacts that you need to keep, because hosted CI services in general keep artifacts for limited periods. Store the exports in your own storage with retention rules that match your audit obligations. Confirm with your compliance lead which records must survive the move. Done means each retained build has a stored log and artifact set that can be found by project and build number.
Inventory secrets and plan re-entry
List every parameter marked as a password or secure value, every deploy key, token and certificate referenced by the build configurations, and the systems each one unlocks. Secret values usually cannot be read back from a CI platform once stored, so plan to re-enter them from the original password manager or key store, and rotate any credential whose value is unknown or shared. Done means each secret has a named owner, a source of truth outside the CI server and a rotation decision.
Stand up the target server and agents
For Jenkins, install the controller on a supported Java version, keep builds on dedicated agents and place configuration, plugins and secrets under a backed-up $JENKINS_HOME. For Woodpecker, deploy the server with a production database, connect it to your forge, and run agents on Docker or Kubernetes, adding the optional autoscaler only if you need cloud VMs for bursty demand. Done means a test pipeline runs on an agent, a restore of the controller or server configuration has been rehearsed, and access controls match the TeamCity setup.
Translate pilot projects and run them in parallel
Convert a small set of representative configurations into Jenkinsfiles or Woodpecker YAML, then run them alongside TeamCity on the same commits. Compare build results, test counts, artifact outputs and deployment effects, and note every difference in environment variables, agent tooling or plugin behavior. Done means the pilot builds match the TeamCity results for an agreed set of commits, and the gaps you could not close are logged with an owner.
Cut over group by group and keep a rollback path
Move each project group to the new platform in the order you set during planning, switching triggers and deployment credentials only after its pilot passes. Keep TeamCity read-only and its agents available for the agreed rollback window so that a failed group can return to its previous build path. Done means every migrated group has a recorded cutover date, a successful production build on the new platform and a confirmed rollback decision for TeamCity.
Retire TeamCity licenses and agents deliberately
Once every group has cut over and the retention window has closed, remove remaining agents, revoke TeamCity tokens and cancel or downgrade the license in line with your contract terms. Confirm with the vendor what happens to your data and license records at that point. Done means no active builds or deployments depend on TeamCity, the exported archive is verified and the license change is documented.
Questions buyers ask before choosing Enterprise or open source
What drives the cost of TeamCity Enterprise compared with self-hosted Jenkins or Woodpecker CI?
TeamCity Enterprise carries recurring license fees tied to agents and edition, and you still run the server and agent hosts. Jenkins is distributed under the MIT License and Woodpecker CI under Apache-2.0, so neither charges a license fee, and the cost moves to infrastructure, plugin upkeep, upgrades, backups and the staff time to run them. Compare these components side by side: licenses or support contracts (recurring), server and agent compute (recurring), plugin and version maintenance (recurring), and migration effort (one-time). Ask TeamCity for current Enterprise and agent pricing in writing, and ask for a written scope before comparing totals. DeployOpen does not publish a price list, so any quote follows from the agreed scope.
How long does a move from TeamCity to Jenkins or Woodpecker CI take?
The duration depends on the size and complexity of what you have built in TeamCity, so it is set in the written scope rather than assumed up front. The main drivers are the number of build configurations and build chains, shared templates, the mix of Linux and Windows agents, the number of secrets to re-create, and the integrations that depend on TeamCity reports or triggers. The most reliable starting point is an inventory of your versioned settings, which lets the team count and classify each configuration before agreeing a timeline. Ask any provider to tie the timeline to that inventory and to the parallel-run period that comes before cutover.
What does a CI migration need from our own team?
The work needs named people who can grant access and make decisions. Expect to provide read access to the source forge, administrative or project access to the repositories that will trigger builds, and access to the hosts that will run agents. Secret owners must re-enter credentials in the new system, because CI secret values generally cannot be exported from one platform to another. Pipeline owners should review converted pipelines, approve parallel runs, and sign off on cutover. Release and security stakeholders should confirm the new deployment credentials and approval gates before TeamCity is retired. Confirm these responsibilities in the written scope so nobody discovers them during cutover.
Can our engineers migrate from TeamCity without outside help?
A capable in-house team can migrate a small estate alone, but the answer depends on skills you already have. Woodpecker CI uses YAML workflows that run each step in a container image, so teams familiar with containers and pipeline YAML can adopt it quickly. Jenkins asks more of the team: Jenkinsfile design, plugin selection and approval, controller and agent administration, and regular LTS upgrades. Many organizations split the work, keeping pipeline conversion in-house while bringing in outside help for the platform build, hardening, backups and cutover. Assess your staff's Jenkins and container experience honestly before choosing a split.
Does Woodpecker CI cover our Windows builds and TeamCity-specific features?
Confirm this before you commit, because Woodpecker's documented agent backends are Docker, Kubernetes and the local machine, and the supplied material does not establish Windows agent support. Ask the vendor or test in your own environment before you assume it. Also map any TeamCity features your teams depend on, such as build chains, snapshot dependencies, IDE integration and certain reporting, to the equivalent in the target engine. Jenkins can distribute work across multiple machines, and its plugin catalog is large, but each plugin must still be checked against your requirements. Record every feature gap in the inventory so the decision rests on evidence.
Will open-source CI stay supported and upgradable over the coming years?
Support depends on the release cadence and on your upgrade plan. Jenkins chooses a new LTS baseline every 12 weeks and ships three LTS releases per baseline, and its Java support policy lists dated end-of-support points for each Java version, so the platform needs a planned upgrade cycle. Woodpecker publishes regular releases, with version 3.19.0 released on October 7, 2026, and teams should track them the same way. Ask any provider how upgrades, plugin updates and security patches are tested and scheduled. Ongoing support and upgrades are available as retainers, and the scope should state which versions are covered.
What should a fixed-scope quote for a CI migration include?
A useful quote lists what is in scope, what is excluded, how success is measured, and when each deliverable arrives. Ask for the following items to appear in writing: an inventory of build configurations, chains, templates, agents and secrets; the target platform and its version; the mapping rules for each construct; the plan for secret re-entry and artifact or build history export; the parallel-run period and cutover steps; documentation and handover; acceptance criteria; and whether post-migration support is a separate retainer. Also ask how changes to scope are handled and who signs off each stage. DeployOpen agrees scope, deliverables and timelines in writing before work starts.
How do we keep builds running while both CI systems operate during the switch?
Run both systems in parallel until the new pipelines have proven themselves, and cut over one project group at a time. Woodpecker can connect to GitHub, GitLab, Gitea, Forgejo, Bitbucket and Bitbucket Datacenter, so builds can move in-house without moving repositories, which keeps source hosting out of the change. Keep TeamCity available for rollback until each group has passed its acceptance criteria. Plan the order of cutover around release calendars and freeze windows, and record every pipeline's owner. Review the Woodpecker forges overview to confirm your forge is supported and note that multi-forge setups on one server are still experimental.
Evidence to keep when you change CI platforms
A change board or auditor will want to see what the TeamCity estate contained, what moved, and who approved each step. The cards below cover the records to keep before, during and after a move, whether you buy Enterprise or migrate to open source. DeployOpen prepares this evidence, but independent auditors and certification bodies are the ones who issue any opinion.
Versioned configuration inventory
Keep the versioned settings export as the baseline of what TeamCity ran: the .teamcity directory in Kotlin DSL or XML, with its commit history. Record the commit hash that was used as the cutover source so a reviewer can see exactly which build configurations, parameters and templates were in scope. Note any configuration that lived only in the UI and was never versioned, since those items often disappear silently during a move.
Build history and artifact export
Export build history, logs and artifacts from TeamCity before the subscription or agent licence changes, and store them in a location you control. Record the date range, the number of builds exported and any builds that failed to export. Artifacts are the item most likely to be lost, so keep a checksum for each exported file.
Secret re-entry log with owners
TeamCity secure parameters cannot be read back once stored, so each secret must be re-entered in the new platform by a named person. Log each secret by name, not value, with the system it authenticates to, the owner who supplied it and the date it was re-entered. Rotate any credential that could not be confirmed as moved, and have the owner sign off on the entry.
Pipeline cutover record
Record which TeamCity build configurations and build chains were switched to Jenkins, Woodpecker CI or GitLab CI/CD, in what order, and under which change ticket. Include the rollback step for each pipeline and the first successful run on the new platform. Keep TeamCity runs available until each cutover is confirmed, and record when they were disabled.
Licence and agent counts before and after
Capture the TeamCity Professional position at the start of the change: build configuration count, pipeline count and connected agent count against the limits of 100 build configurations, 10 pipelines and 3 agents. Record the same counts for each option you evaluate, whether that is Enterprise with agent licences or the open-source target. Attach the agent inventory with hostnames and owners so the board can reconcile what was paid for against what ran.
Agent and runner access review
List every machine that ran TeamCity builds, the credentials each one held and who could reach it. Once agents are replaced by Woodpecker agents, Jenkins agents or GitLab Runners, review the new hosts in the same way and record the access decisions. This shows that the new build infrastructure was not given broader access than the old one.
How Jenkins and Woodpecker CI licensing affects a long-term decision
The first question for a long-term decision is which license governs the engine you adopt. Jenkins is distributed under the MIT License, a permissive license that lets your organization run, modify and distribute the software without paying the project for the right to do so. Woodpecker CI is licensed under Apache-2.0, which is also permissive and carries an explicit patent grant. Woodpecker exists because of a change in the other direction: Drone CI moved from Apache 2.0 to a proprietary license, and the community forked Drone 0.8 in 2019 as Woodpecker. Drone is now managed by Harness under the Polyform Small Business license, so a team that adopted Drone for its open terms had to re-evaluate. Read the license file in each repository yourself, and check whether any plugin, extension or add-on you depend on carries different terms.
Licensing change risk applies to any CI vendor, including the open-source projects you choose. A permissive license protects the code you already have, but it does not guarantee that a project will keep developing, so weigh governance and maintainer activity alongside current price. Ask who controls the project, whether it has a foundation or multiple companies contributing, how many maintainers are active, how often releases ship, and how security fixes are published. Jenkins is one of the projects hosted by the Continuous Delivery Foundation, and Woodpecker is maintained by a community project. Those are different governance models, and each carries its own continuity risk. Record the answers as part of the decision, and revisit them at each renewal of your support arrangement.
Vendor changes in this market are already happening. Atlassian announced on September 8, 2025 that it is sunsetting its Data Center products, with sales to new customers ending March 30, 2026 and end of life on March 28, 2029, and it has stated that Bitbucket and Bamboo Data Center will continue beyond that date under a Bitbucket Hybrid License. Separately, Atlassian and GitHub have both moved to meter self-hosted runners. Commercial terms can change on a published schedule or with little notice, so write down which contract terms, support windows and licensing metrics your TeamCity Enterprise purchase depends on. Whichever engine you choose, keep your pipeline definitions in your own Git repositories and confirm that your build history and secrets can be exported before you commit.
How DeployOpen works on this
DeployOpen plans, implements, integrates, hardens, documents and supports self-hosted open-source CI platforms inside your own infrastructure, so the move off TeamCity Professional limits is handled as a fixed-scope engagement with written deliverables. We start from your existing TeamCity configuration and agree in writing what moves, what stays and what gets retired.
How we scope
- Inventory every build configuration, pipeline, agent and build chain against the Professional limits before any choice between Enterprise and open source.
- Agree in writing which projects move to Jenkins or Woodpecker CI, which stay, and which are retired.
- Confirm how secrets, build artifacts and build history will be exported, since hosted and vendor-held values often cannot be read back out.
How we build
- Set up the chosen CI engine in your own cloud account, data center or air-gapped network, with agents sized to your workloads.
- Rebuild pipelines from the exported TeamCity settings and test them against the forge hosting your repositories.
- Configure secrets handling, access control and backups of the controller state, such as $JENKINS_HOME for Jenkins, before cutover.
How we hand over
- Deliver written documentation of the architecture, pipeline definitions, agent setup and the operating runbook for your team.
- Provide a mapping of each former TeamCity build configuration to its replacement, with the decisions recorded.
- Prepare the controls and evidence your compliance assessors will ask for, while independent auditors and certification bodies issue any reports.
How we support
- Ongoing support, plugin and platform upgrades, and continuous testing are available as retainers after handover.
- Ask for the quote to list each component in scope, the one-time migration work and the recurring support tasks separately.
- Confirm with the vendor and your own environment which current license limits and agent rules apply before the scope is signed.

