Infra Stack Review

How Teams Build Internal Apps Without Exposing Code to Third-Party SaaS

Private inference and self-hosted CI/CD keep proprietary code away from vendor systems.

· 9 min read
Cover illustration for “How Teams Build Internal Apps Without Exposing Code to Third-Party SaaS”
Internal Developer Platforms & Self-Hosted Tooling · October 19, 2026 · 9 min read · 2,052 words

To build internal apps without exposing code to third-party SaaS, the team must host both the tools and the database inside infrastructure it controls. A self-hosted alternative to hosted development platforms and v0 needs private source control, CI/CD runners, an app builder, and AI inference within the approved trust zone. Managed platforms can reduce the operating burden without taking ownership of the cloud environment.

Why keeping tooling inside your own infrastructure is a different problem than keeping data there

AI coding assistants, low-code builders, and SaaS CI/CD runners save time by doing work for a team. But that work can send proprietary code, prompts, credentials, and build artifacts to vendor infrastructure. A database can stay behind the firewall while the tools used to build its applications cross that boundary.

The visibility gap makes this harder to govern. Standard web proxies, CASBs, and browser-based DLP cannot inspect encrypted cloud AI payloads without explicit TLS decryption. A vendor’s “zero data retention” promise governs what happens after transmission and receipt. For teams operating under requirements including FedRAMP High, HIPAA, and PCI-DSS v4.0.1, the location of that processing belongs in both the architecture decision and the vendor contract.

How cloud-hosted AI agents actually move code across the perimeter

Cloud coding assistants split execution between the developer’s local IDE and a vendor-controlled backend. The local component collects context, including snippets from open tabs, codebase information, and explicit chat prompts. It packages that material and sends it over TLS to the remote service. Encryption protects the journey, but the service decrypts the material to process it. The code has left the building even if the editor never closed.

More context-heavy designs upload the codebase in chunks to compute vector embeddings. They store metadata in remote vector databases, leaving a snapshot of repository structure on vendor infrastructure even between active queries. That is a broader exposure than sending one selected function for review.

When the agent, its context storage, and inference all stay inside controlled infrastructure, prompts and generated responses remain there too. The boundary then rests on where processing occurs, rather than on promises about what a remote service retains.

The four layers an internal app stack must own to stay inside the perimeter

Picture the stack from the bottom up. Source control is the foundation, holding repositories together with authentication, permissions, reviews, and audit trails. CI/CD sits above it, turning approved changes into tested, deployable artifacts on owned runners. The application builder builds on those foundations to make internal tools without sending app logic or credentials through an external builder. AI agents sit at the top and read and change code through inference that runs inside the authorized trust zone.

These are dependencies. A private repository loses its perimeter advantage when an external runner checks out its contents. An internal builder also leaves an opening if its coding agent sends those contents to a cloud model. Keeping inference private still leaves credentials on vendor servers if the application builder handles them there.

The distinction between hosting Git and operating source control matters at the base. Version history is only part of the job. Governance also needs repository management, APIs, integrations, and enforceable access rules, because every higher layer depends on those controls.

Diagram: The Four-Layer Private Stack: What Each Layer Must Own. Visualizes: Visualize a bottom-up stack of four layers that must all stay inside a controlled infrastructure perimeter to prevent code exposure.

Self-hosted source control as the foundation: what the platform choices actually trade off

Source control platforms differ in supported version-control systems, governance depth, and administration effort. RhodeCode unifies Git, Mercurial, and SVN with granular permissions, audit trails, and enterprise authentication. That makes it a fit for mixed environments and gradual SVN-to-Git migration without separating the old and new repositories into different management systems.

GitHub Enterprise Server brings pull requests, GitHub Actions, packages, and security capabilities to self-hosted infrastructure. Its fit is a Git-centric organization already built around GitHub workflows. Bitbucket Data Center serves a different starting point, where Jira and Confluence integration already carries much of the workflow.

Gitea has lightweight self-hosted Git that takes little work to run for small teams that do not need deep enterprise governance. Forgejo is an independent, open-source option run by its community for teams that care more about staying independent of a vendor.

The tradeoff is how much policy the platform must enforce. RhodeCode, GitHub Enterprise Server, and GitLab Self-Managed bring deeper governance with greater infrastructure and administration demands. Gitea and Forgejo fit teams that mainly need perimeter control without more infrastructure to manage or more work to run it.

Running CI/CD on your own runners: supply-chain security as the operational spine

Build execution is often the first place a private repository’s contents leave controlled infrastructure. Vendor-hosted runners handle code, secrets, artifacts, and test output, so runner placement is a security decision before it is a billing decision. With an own-cloud platform such as Porter, pipeline execution can sit in the team’s cloud account. The relevant boundary includes the build, its outputs, and the final deployment.

Abu Hena Mostafa Kamal’s May 29 2026 CNCF architecture shows how an internal pipeline can enforce supply-chain controls. Argo CD reconciles deployment state with Git, while a policy engine blocks workloads that violate admission policies. Trivy scans images and dependencies for vulnerabilities, and an image-signing tool signs images so the runtime can verify their pipeline origin. Falco extends detection into runtime. Kamal reports near-zero configuration drift and most vulnerabilities detected before staging.

With GitLab Self-Managed’s Community Edition, teams that host their runners do not pay by the minute. Infrastructure can cost less than equivalent SaaS overages, but that indicates only a potential saving. DevOps time dominates long-term ownership costs, and legacy CI migration can take months. What that investment buys is a repeatable security gate on every commit.

Self-hosted internal app builders: how the low-code layer handles data residency

Low-code builders let non-developers create internal apps, but they also become part of the data path. A SaaS builder can work with app logic, API credentials, and query results outside the team’s network. Connecting it to a private database does not make the builder private. Self-hosted low-code platforms put the tool itself on private servers, so the team controls how it is kept isolated and how to respond to incidents.

A decoupled UI-from-data design offers another useful pattern. The frontend connects to the team’s databases and internal APIs without sending their data through the builder’s servers. That keeps application data out of the builder’s servers, while where the authoring tool runs still matters for code and credentials. The two boundaries need separate treatment.

Superblocks illustrates how deployment rights affect the buying decision. Superblocks has a Teams plan that starts at $100/month billed annually, but to deploy in their own cloud through VPC or Cloud-Prem, customers need the custom-priced Enterprise plan. Central IT guardrails then apply to every app built on the platform. Microsoft Fabric Apps shows another way, with a desk booking application built entirely inside a Microsoft Fabric workspace without Power Apps, SharePoint lists, or another third-party SaaS subscription.

Which self-hosted AI coding tools keep internal app code inside your VPC

AI is the hardest layer to keep private because inference has its own infrastructure demands. Coder Agents beta, released May 2026, is built to run entirely on self-hosted infrastructure for firms that must meet federal cloud security requirements and HIPAA-regulated firms. Its agent runs inside the authorized VPC, with the model either self-hosted on GPU infrastructure or reached through a private API endpoint within the trust zone. The decisive criterion is where inference processes the code.

To host a large-scale model, a team needs enterprise-grade GPUs, people who know MLOps, and time to keep it running. Low GPU utilization can make that capacity expensive even when request volume is modest. Break-even depends on daily demand, managed inference spend, utilization, and engineering headcount. It is not a single request threshold that applies to every team.

Private access to a managed model can reduce the MLOps burden, but a private connection alone does not establish customer-owned processing. That model belongs within the approved trust zone only if how it processes code meets the team’s requirements. Porter’s own-cloud model is relevant when GPU inference is deployed in the customer’s account, with platform-managed scheduling and scaling. The principle remains the same in either case, which is to keep inference inside the authorized boundary.

Internal Developer Platforms as the governance layer that makes all four components coherent

Four privately hosted tools can still produce four separate operating burdens. An Internal Developer Platform gives engineers one self-service route through them, with security and cost controls built into approved workflows. These golden paths turn policy into how software gets deployed. Developers no longer need a manual operations handoff for each routine change.

The platform needs three connected parts. A service catalog states what can be deployed and on which approved infrastructure. An orchestration engine deploys the software and applies policy. An integration surface connects source control, pipelines, and runtime monitoring. Without those connections, a catalog is only a front door to systems that still need separate management.

Backstage belongs in this discussion as an option for building that platform. Below a certain engineering headcount, an in-house IDP is rarely economical. The decision depends on regulatory needs, team size, and whether platform development is central to the business.

Build-vs-buy for each layer: where managed platforms earn their place inside an owned-cloud deployment

Teams can own infrastructure without having to write or run every part of the platform on their own. The useful distinction is between managed software that deploys into a customer-controlled account and a service that runs workloads on shared vendor infrastructure. Both simplify deployment, but only the former preserves ownership of the underlying cloud environment. This is the own-cloud PaaS model.

Porter deploys into the customer’s own AWS, GCP, or Azure account and handles cluster management, CI/CD, networking, autoscaling, and CVE patching. It also provides SOC 2 and HIPAA compliance tooling while the customer retains the cloud environment. That makes it an option for teams that need private deployment without a dedicated DevOps function. It does not replace the separate choices about repository governance, builder capabilities, or model processing.

The same ownership model can cover developer tooling and GPU workloads rather than treating each as a separate SaaS exception. Teams with enough staff may still prefer to run the self-hosted components themselves. Teams without that capacity can buy the operational layer while keeping workloads in their account.

The misconfiguration risk that self-hosting transfers onto the team

Private infrastructure can still be badly secured. Self-hosting replaces some vendor exposure with direct responsibility for identity, patching, recovery, and monitoring. That responsibility is substantial, especially when tools start with open configurations or lack default authentication. An exposed chat history on a self-hosted model is still an exposure.

Delayed patching creates another failure path. Without automation, known vulnerabilities can accumulate faster than a small team can fix them. Weak backups make it hard for the team to recover its own systems, while missing logs leave it without a clear sign when something fails.

A misconfigured self-hosted system can provide weaker real-world protection than a well-governed SaaS service. The architectural benefit of private processing depends on a boundary that only protects the workload when the systems enforcing it are correctly configured and continuously maintained. Strict RBAC, intent-based network classification, and automated CVE patching are therefore part of the self-hosted model itself.

What responsible self-hosted operations look like for a team without a dedicated DevOps function

Small teams need automation for work that larger teams might give to operators. Platform-level CVE patching should follow a defined cadence without manual intervention. GitOps should hold desired state in Git and reconcile it continuously, correcting drift before an incident reveals it. These controls reduce routine maintenance without removing accountability.

The surrounding tools need the same discipline. Self-hosted documentation needs health-check endpoints connected to Kubernetes probes, offline search through MeiliSearch or Orama, and no external API calls at runtime. Compliance automation can collect evidence from cloud infrastructure and repositories. It does not replace secure SDLC practices, threat modeling, or remediation.

First, own the cloud account and use a platform that deploys there while handling upgrades, patching, and compliance tooling. Then place source control, CI/CD runners, and the application builder inside that account. Defer self-hosted LLM inference until demand and spend justify the infrastructure and MLOps cost, using private managed endpoints only within the approved trust zone meanwhile.

Sources

  1. Building a cloud native internal developer platform with Kubernetes, GitOps, and supply chain security
  2. Self-Hosted vs SaaS Low-Code Platforms: Which Is Safer for Enterprise Data in 2026?

More in Internal Developer Platforms & Self-Hosted Tooling