k3s App Builder Platform

A self-contained platform for deploying apps with plain language and Claude, running entirely within k3s on a single EC2 instance.

https://github.com/davidbmar/2026-FEB-21-K3-App-Builder-Claude-proto  ·  public  ·  shipped

What it is

An internal developer tool that allows users to describe an application in natural language, have Claude generate the code, build it into a container, and deploy it to a preview or production environment on a local Kubernetes cluster. It isolates each app in its own namespace with resource quotas and network policies.

Features

Quickstart

git clone https://github.com/davidbmar/2026-FEB-21-K3-App-Builder-Claude-proto
cd 2026-FEB-21-K3-App-Builder-Claude-proto
chmod +x scripts/*.sh
./scripts/install-k3s.sh
./scripts/setup-registry.sh
export ANTHROPIC_API_KEY=sk-ant-...
./scripts/bootstrap-cluster.sh

Architecture

flowchart TD
    User[User Browser] -->|HTTP Request| Traefik[Traefik Ingress Controller]
    Traefik -->|builder.IP.nip.io| BuilderUI[Builder UI Service]
    Traefik -->|app-preview.IP.nip.io| PreviewSvc[Preview Service]
    Traefik -->|app-prod.IP.nip.io| ProdSvc[Production Service]
    
    subgraph k3s Cluster
        BuilderUI --> BuildOps[Build Operations]
        BuildOps -->|docker build| DockerHost[Docker Daemon]
        DockerHost -->|Push Image| LocalRegistry[Local Registry :5050]
        
        BuildOps -->|kubectl apply| K8sAPI[k3s API Server]
        K8sAPI -->|Manage Pods| PreviewDeploy[Preview Deployment]
        K8sAPI -->|Manage Pods| ProdDeploy[Production Deployment]
        
        PreviewDeploy --> PreviewPod[Preview Pod]
        ProdDeploy --> ProdPod[Production Pod]
        
        PreviewPod --> PreviewSvc
        ProdPod --> ProdSvc
    end
    
    BuildOps -->|Stream Code| ClaudeAPI[Anthropic Claude API]

How it's built

The platform is built using Python (FastAPI) for the backend logic, integrating with the Anthropic API for code generation. It uses Docker for building container images and pushes them to a local Docker registry. k3s manages the runtime, networking (via Traefik), and isolation. Jinja2 templates are used to generate Kubernetes manifests dynamically.

How it runs

sequenceDiagram
    participant U as User
    participant B as Builder UI
    participant C as Claude Ops
    participant A as Anthropic API
    participant D as Docker Host
    participant R as Local Registry
    participant K as k3s/Kubectl

    U->>B: Describe App & Click Generate
    B->>C: Request Code Generation
    C->>A: Stream Prompt to Claude
    A-->>C: Stream Code Chunks
    C-->>B: Stream Code to UI
    
    U->>B: Click Build & Deploy Preview
    B->>D: docker build .
    D->>R: Push Image (app:timestamp)
    B->>K: Apply Namespace & Manifests
    K->>K: Create Deployment/Pod
    K-->>B: Deployment Ready
    B-->>U: Show Preview URL

How to apply & reuse

Clone the repository, install k3s and a local registry using provided scripts, set your ANTHROPIC_API_KEY, and run the bootstrap script. Access the UI via a nip.io domain pointing to your EC2 instance's public IP.

At a glance

CapabilitiesCode GenerationContainer BuildingKubernetes DeploymentTraffic RoutingEnvironment IsolationVersion Management
ComponentsBuilder UI (FastAPI)Claude Ops ModuleBuild Ops ModuleK8s Ops ModuleTraefik IngressLocal Docker Registryk3s Cluster
TechPythonFastAPIk3sDockerTraefikJinja2Anthropic API
Depends onUbuntu 24.04Docker EngineANTHROPIC_API_KEYPublic IP Address
Integrates withAnthropic Claude APInip.io DNS ServiceLocal Docker Registry
PatternsGitOps-like Manifest GenerationPreview vs Production EnvironmentsNamespace IsolationStreaming LLM ResponsesSelf-hosted Container Registry
Reuse tagsk3sllm-app-builderself-hosted-paaspython-backendtraefik-ingress

⚠ Needs attention