{"slug": "building-incidentcopilot-establishing-a-local-first-ai-devops-development", "title": "Building IncidentCopilot: Establishing a Local-First AI DevOps Development Foundation", "summary": "A developer has completed Milestone 1 of IncidentCopilot, an AI DevOps incident investigation project, establishing a local-first development foundation with a FastAPI backend, React/TypeScript frontend, PostgreSQL, Qdrant, and Ollama running via Docker Compose. The milestone deliberately excludes LLM integration, log ingestion, and RAG, following the stated principle that \"the LLM will sit after the deterministic evidence pipeline.", "body_md": "**Project:** IncidentCopilot — AI DevOps Incident Investigation\n\n**Milestone:** 1 — Repository & Local Development Foundation\n\n**Status:** ✅ Completed  \n\n## \n  \n  \n  🎯 Why Start With the Foundation?\n\nWhen building an AI-powered DevOps system, it’s tempting to jump straight into the LLM.  \n\nFor IncidentCopilot, I deliberately chose not to.  \n\n**Evidence first. AI second. Human in the loop.** \n\nThe AI should reason over verified evidence, not replace deterministic systems like parsing, normalization, persistence, or correlation.  \n\nSo Milestone 1 focused on:  \n\n- Repository structure\n- Local dev environment\n- Backend & frontend foundations\n- Config management\n- Testing setup\n- Docker & Compose\n- Documentation & reproducibility\n\n## \n  \n  \n  🖥️ Local-First Decision\n\nIncidentCopilot is intentionally **local-first**. No reliance on:  \n\n- AWS / Azure / GCP\n- Paid APIs\n- Proprietary SaaS infrastructure\n\nInstead, the stack runs via **Docker Compose**:  \n\n- FastAPI\n- PostgreSQL\n- Qdrant\n- Ollama\n- React\n\n## \n  \n  \n  📂 Repository Structure\n\nBackend packages were defined but left intentionally empty — establishing architectural direction without premature implementation.  \n\n## \n  \n  \n  ⚙️ Backend Foundation\n\n- \n**FastAPI** app with two endpoints:\n\n- \n**Config management** via`pydantic-settings`\n- \n**Testing** with Pytest + FastAPI’s`TestClient`\n- \n**Dockerized backend** (minimal container, no DB/AI yet)\n\n## \n  \n  \n  🎨 Frontend Foundation\n\n- React + TypeScript + Vite + Tailwind CSS + Lucide icons\n- Minimal shell:\n\n*IncidentCopilot — AI DevOps Incident Investigation* \n\n- Cleaned unused Vite starter files\n- \n**Dockerized frontend** with Node-based build image\n\n## \n  \n  \n  🛠️ Real Problems & Fixes\n\n- \n**Node.js mismatch:** upgraded from v20 → v24 for Vite\n- \n**Docker Desktop:** CLI installed but engine not running — fixed by starting Docker Desktop\n- \n**Windows `make`:** used` mingw32-make` instead of GNU`make`\n- \n**Git hygiene:** fixed invalid UTF-8 README + refined`.gitignore`\n\n## \n  \n  \n  ✅ Verification\n\n- Git hygiene → clean\n- Backend tests → 1 passed\n- Frontend lint → 0 errors\n- Frontend build → ✓ built\n- Docker Compose config → valid\n- Backend & frontend containers → running locally\n\n## \n  \n  \n  🧩 What We Didn’t Build (Yet)\n\nMilestone 1 deliberately excluded:  \n\n- PostgreSQL models\n- Log ingestion APIs\n- Parsers (Nginx, Kubernetes, Docker, GitHub Actions)\n- Normalization & correlation\n- Qdrant + RAG integration\n- Ollama integration\n- Structured AI diagnosis\n- Full incident dashboard\n\nThese belong to future milestones.  \n\n## \n  \n  \n  🏗️ Architecture Principle\n\nThe LLM will sit **after** the deterministic evidence pipeline.  \n\n## \n  \n  \n  📌 Key Takeaways\n\n1. Foundation work = real development\n2. Verification > assumptions\n3. Starter templates should be questioned\n4. Local-first changes dev strategy\n5. AI shouldn’t be the first thing we build\n\n## \n  \n  \n  🔮 What’s Next?\n\n**Milestone 2 — FastAPI Foundation + PostgreSQL** \n\nMoving toward:\n\n## \n  \n  \n  🏁 Final Thoughts\n\nIncidentCopilot is still at the beginning. No AI diagnosis yet. No RAG. No ingestion pipeline.  \n\nAnd that’s okay.  \n\nMilestone 1 established the engineering environment needed to build those capabilities correctly.  \n\nThe project now has:  \n\n- Structured monorepo\n- FastAPI + React/TypeScript\n- Tailwind CSS\n- Config management\n- Testing\n- Docker + Compose\n- Verified local workflow\n\nMost importantly:  \n\n**Build the evidence pipeline first. Let AI reason over verified evidence later.** \n\n🔗 **GitHub:** [https://www.github.com/richardatodo/incidentcopilot](https://www.github.com/richardatodo/incidentcopilot)\n\n➡️ **Next:** Milestone 2 — FastAPI + PostgreSQL", "url": "https://wpnews.pro/news/building-incidentcopilot-establishing-a-local-first-ai-devops-development", "canonical_source": "https://dev.to/richard_atodo/building-incidentcopilot-establishing-a-local-first-ai-devops-development-foundation-2330", "published_at": "2026-10-01 21:53:42+00:00", "updated_at": "2026-10-01 22:14:41.691793+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools", "mlops"], "entities": ["IncidentCopilot", "FastAPI", "PostgreSQL", "Qdrant", "Ollama", "React", "Docker", "GitHub"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/building-incidentcopilot-establishing-a-local-first-ai-devops-development", "markdown": "https://wpnews.pro/news/building-incidentcopilot-establishing-a-local-first-ai-devops-development.md", "text": "https://wpnews.pro/news/building-incidentcopilot-establishing-a-local-first-ai-devops-development.txt", "jsonld": "https://wpnews.pro/news/building-incidentcopilot-establishing-a-local-first-ai-devops-development.jsonld"}}