wellCh4n

Cattery — DevOps skill for Claude Code

DevOps community

Cattery: self-hosted AI coding agent platform for teams.

How to install Cattery

This entry records only its repository, not the path inside it, so there is no exact command to give. Open wellCh4n/cattery and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Cattery does

Cattery: self-hosted AI coding agent platform for teams. Each project runs the pi agent in its own Kubernetes sandbox.

Alternatives in DevOps

  • Codeg — Aggregate and browse AI coding agent sessions (Claude Code, Codex, Gemini CLI, etc.) in one place 850 ★
  • Second Brain Cloudflare — One memory layer, every AI tool 734 ★
  • Chat — chat web app for teams, sass with user management and ratelimit, support chatgpt(openai & azure), claude, gemi 568 ★

README

Cattery

Self-hosted, team-oriented AI coding agent platform. Work is organised into **Projects**: shared workspaces with their own files and members. Users talk to the agent through **Sessions**. Each project runs one isolated Kubernetes Sandbox Pod that all of its sessions share.

The agent is [pi](https://github.com/earendil-works/pi): the harness in [`harnesses/pi`](harnesses/pi) embeds the `@earendil-works/pi-coding-agent` SDK for sessions, persistence, resource discovery, automatic compaction/retry, and coding tools. The SDK built-in tools are used without wrappers; Cattery forwards their output through its HTTP/SSE protocol. The model is chosen per session.

graph TD
    Browser["Browser\nNext.js + shadcn (port 3000)"]

    subgraph Backend["Go Backend (Echo, port 8080)"]
        Auth["AuthMiddleware\n(JWT)"]
        Router["Router /api/v1"]
        SandboxMgr["sandbox.Manager\nEnsureReady / Stop"]
        K8sClient["k8s.Client\nRunTask, EnsurePVC, ResolveContainerURL"]
        DB["PostgreSQL\nusers, projects, sessions"]
    end

    subgraph K8s["Kubernetes Cluster"]
        SandboxCR["Sandbox CR\nagents.x-k8s.io/v1beta1\n(one per Project)"]
        subgraph ProjectPod["Project Pod (one per Project)"]
            Pi["pi container\nsessions + transcripts"]
            FileMgr["filemgr container\nfiles + LaTeX previews"]
        end
        SkillMgr["skillmgr Pod\n(cluster-wide)"]

        WorkPVC["workspace PVC\ncattery-project-<id>-work"]
        SkillPVC["skills PVC\ncattery-skills-work"]
    end

    ModelAPI["Model providers\n(models.toml: endpoint + key per provider)"]

    Browser -->|"REST / SSE"| Auth
    Auth --> Router
    Router -->|"session/message"| SandboxMgr
    Router -->|"handlers → stores"| DB
    Router -->|"proxy /files/*"| FileMgr
    Router -->|"proxy /skills/*"| SkillMgr
    SandboxMgr --> K8sClient
    K8sClient -->|"create/delete Sandbox CR"| SandboxCR
    K8sClient -->|"create Pod"| SkillMgr
    SandboxCR --> Proje