惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
月光博客
月光博客
D
DataBreaches.Net
云风的 BLOG
云风的 BLOG
F
Fortinet All Blogs
T
The Blog of Author Tim Ferriss
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
aimingoo的专栏
aimingoo的专栏
U
Unit 42
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
MyScale Blog
MyScale Blog
T
Tailwind CSS Blog
N
Netflix TechBlog - Medium
B
Blog
博客园_首页
G
Google Developers Blog
Recent Announcements
Recent Announcements
博客园 - 【当耐特】
P
Proofpoint News Feed
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
MongoDB | Blog
MongoDB | Blog
Last Week in AI
Last Week in AI

Hacker News - Newest: "AI"

AI can't read an investor deck AI as an attorney? Student uses ChatGPT, Gemini to sue UW over alleged racial discrimination Hacking MCP Servers in AI Systems – The Rug Pull: Tool Changes After Approval GitHub - MeepCastana/KubeezCut: Free Web based video editor Can AI judge journalism? A Thiel-backed startup says yes, even if it risks chilling whistleblowers Coming soon: 10 Things That Matter in AI Right Now DARPA built an AI to fact-check enemy weapons claims What explains heterogeneity in AI adoption? When AI Meets Muscle: Context-Aware Electrical Stimulation Promises a New Way to Guide Human Movements - Department of Computer Science AI Changed How We Build. It Did Not Change What Matters. Linux rules on using AI-generated code - Copilot is OK, but humans must take 'full responsibility for the… Meta spins up AI version of Mark Zuckerberg to engage with employees Code Mode: Let Your AI Write Programs, Not Just Call Tools | TanStack Blog GitHub - Delavalom/graft: Go framework for building AI agents. Type-safe tools, multi-provider (OpenAI, Anthropic, Gemini, Bedrock), zero vendor SDKs. India's TCS tops estimates, says new AI models did not dent services demand Gen Z's fading AI hype Strong feeling: we are in a folded AI reality GitHub - machinarii/total-recall-catalog: A reference catalog of latest knowledge retrieval, memory & RAG systems GitHub - mensfeld/code-on-incus: Give each AI agent its own isolated machine with root, Docker, and systemd. Active defense detects and stops threats automatically.. Quantization, LoRA, and the 8% Problem: Benchmarking Local LLMs for Production AI Iran war: We spoke to the man making Lego-style AI videos that experts say are powerful propaganda Powell, Bessent discussed Anthropic's Mythos AI cyber threat with major U.S. banks GitHub - immartian/bellamem: Persistent belief-graph memory for AI agents. Retrieves decisive context by importance — not recency, not RAG, not /compact. recursive-mode: The Repo-Native Operating System for AI Engineering After the attack on Sam Altman's home, will AI CEO's go on the offensive? The biggest advance in AI since the LLM Opus 4.6 vs GPT 5.4 One Prompt Unity World Generation Test “AI polls” are fake polls Client Challenge Can AI be a 'child of God'? Inside Anthropic's meeting with Christian leaders
GitHub - landry-77/AI-DEVOPS-ENGINE: Autonomous AI DevOps...
landry-77 · 2026-06-24 · via Hacker News - Newest: "AI"

License: Apache 2.0 Python 3.11+ Node.js 18+ Docker

An autonomous, zero-data-retention AI DevOps pipeline that ingests GitHub webhooks, constructs code patches via LLM, runs them in network-isolated Docker sandboxes (Pytest/Jest), and posts validated fixes as PR comments for your review — all self-hosted with one docker compose command.

  • No SaaS fees — you only pay the AI provider directly for tokens used
  • Zero data retention — code scrubbed in memory, destroyed after inference
  • Network-isolated sandbox — patches run in network-isolated, resource-throttled containers
  • Multi-tenant — PostgreSQL Row-Level Security isolates tenants at the database engine level

Quickstart (from zero to running in ~2 minutes)

Prerequisites

  • Docker & Docker Compose (v2+)
  • Python 3.11+, Node.js 18+
  • OpenRouter API key — free tier works
  • ngrok — free tier, exposes your local webhook to GitHub

Fast Path (3 commands)

macOS / Linux:

# 1. Auto-generate secrets, prompt for your OpenRouter key
make setup

# 2. Pre-bake sandbox images (one-time)
make sandbox

# 3. Launch the full stack
make up

Windows (PowerShell):

# 1. Auto-generate secrets, prompt for your OpenRouter key
.\setup.ps1 setup

# 2. Pre-bake sandbox images (one-time)
.\setup.ps1 sandbox

# 3. Launch the full stack
.\setup.ps1 up

Dashboard: http://localhost:8000 · Gateway: http://localhost:3000

Then expose your webhook and open a PR:

# 4. Expose via ngrok (separate terminal)
ngrok http http://localhost:3000

# 5. Open any PR on your repo — the engine handles the rest

Detailed Setup (for first-time configuration)

1. Configure Environment

make setup copies .env.example → .env, generates secure random values for DJANGO_SECRET_KEY and FERNET_KEY, then prompts for your OpenRouter key. After that, set two more values manually:

Variable What to put Required
GITHUB_APP_IDENTIFIER GitHub App ID number Yes
GITHUB_WEBHOOK_SECRET Webhook secret you set in GitHub App settings Yes

Place the GitHub App .pem file at certs/github_app.pem.

2. Create a GitHub App

  1. GitHub Settings → Developer settings → GitHub Apps → New GitHub App
  2. Settings:
    • GitHub App name: ai-devops-bot
    • Homepage URL: http://localhost:3000
    • Webhook URL: https://<your-ngrok-id>.ngrok-free.app/webhooks/github
    • Webhook secret: pick a random string → set as GITHUB_WEBHOOK_SECRET in .env
    • Permissions: Contents: Write, Pull requests: Read & Write, Checks: Write, Metadata: Read
    • Events: Pull request, Push
  3. Generate a private key → save as certs/github_app.pem
  4. Copy the App ID → set as GITHUB_APP_IDENTIFIER in .env
  5. Install the app on a repo

3. Pre-Bake & Launch

make sandbox   # build local-pytest-sandbox + local-jest-sandbox images
make up        # docker compose up -d

4. Test with a Curl

Or manually:

WEBHOOK_SECRET="${GITHUB_WEBHOOK_SECRET?}"
payload='{"action":"opened","pull_request":{"number":1},"repository":{"id":101,"full_name":"local-org/test-repo","clone_url":"local_vfs"},"installation":{"id":202}}'
sig=$(printf '%s' "$payload" | openssl dgst -sha256 -hmac "$WEBHOOK_SECRET" | awk '{print $NF}')
curl -X POST http://localhost:3000/webhooks/github \
  -H "Content-Type: application/json" \
  -H "x-github-event: pull_request" \
  -H "x-hub-signature-256: sha256=$sig" \
  -d "$payload"

How It Works

When a PR is opened on your repo:

  1. GitHub sends a webhook → gateway verifies HMAC signature
  2. Gateway filters to default branch → enqueues task in Redis
  3. Celery worker picks up → AI engine scrubs secrets → calls OpenRouter
  4. Generated patch runs in network-isolated Docker sandbox (Pytest/Jest)
  5. On test pass: bot posts the fix as a PR comment for your review
  6. Dashboard logs every step at http://localhost:8000

Optional CLI

chmod +x infra/patch-bot.sh
alias patch-bot=./infra/patch-bot.sh
patch-bot my_app/main.py "pagination breaks when page number exceeds total pages"

Architecture

graph TB
    classDef external fill:#2da44e,color:#fff,stroke:#1a7f37
    classDef cloud fill:#6366f1,color:#fff,stroke:#4f46e5
    classDef gateway fill:#0ea5e9,color:#fff,stroke:#0284c7
    classDef queue fill:#f59e0b,color:#fff,stroke:#d97706
    classDef worker fill:#8b5cf6,color:#fff,stroke:#7c3aed
    classDef brain fill:#ec4899,color:#fff,stroke:#db2777
    classDef sandbox fill:#e17055,color:#fff,stroke:#d35400
    classDef dashboard fill:#14b8a6,color:#fff,stroke:#0d9488
    classDef db fill:#64748b,color:#fff,stroke:#475569
    classDef billing fill:#f43f5e,color:#fff,stroke:#e11d48

    subgraph External["☁️ External Services"]
        GH["GitHub Repo<br/>Push / PR Events"]
        OR["OpenRouter API<br/>GPT-4o-mini"]
    end

    subgraph Proxy["🚀 Reverse Proxy (Caddy) :80"]
        CADDY["Caddy Proxy<br/>Routes: /webhooks/* → Gateway<br/>/* → Dashboard"]
    end

    subgraph Ingest["📡 Ingestion Gateway :3000"]
        GW["Express.js Ingestion Service<br/>HMAC Signature Verify<br/>Branch Filtration Logic"]
    end

    subgraph Broker["📬 Message Broker"]
        REDIS[(Redis Queue<br/>Celery Broker + Backend)]
    end

    subgraph Workers["⚙️ Task Workers"]
        CELERY["Celery Worker<br/>Process Remediation Tasks"]
        BEAT["Celery Beat<br/>Scheduled Cron Jobs"]
    end

    subgraph AIEngine["🧠 AI Engine :8010"]
        BRAIN["FastAPI Core Brain<br/>Orchestration Layer"]
        SCRUBBER["🔒 Secret Scrubber<br/>In-Memory Regex Redaction<br/>AWS Keys / GH Tokens / DB Creds"]
        AI_INF["OpenRouter Inference<br/>Zero-Data-Retention<br/>Code Analysis + Patch Gen"]
        HANDLER["GitHub API Handler<br/>Post PR Comments"]
    end

    subgraph Sandbox["🛡️ Network-Isolated Sandbox"]
        SBX["Docker Sandbox Container<br/>No Network · 512MB RAM<br/>Read-Only Mount"]
        PYT["Pytest / Jest Execution<br/>Test Suite Validation"]
    end

    subgraph Dashboard["📊 Django Dashboard :8000"]
        DJANGO["Django 6 + Daphne ASGI<br/>Web UI / Admin"]
        POLL["Live Status Polling API<br/>/api/v1/logs-stream/"]
        UI["Execution Logs Cards<br/>Auto-Refresh Every 5s"]
    end

    subgraph Storage["💾 Database Layer"]
        PG[("PostgreSQL<br/>Multi-Tenant")]
        RLS["🔐 Row-Level Security<br/>Tenant Isolation at DB Engine"]
        AUDIT["Audit Logs<br/>Zero Data Retention Policy"]
    end

    subgraph Billing["💰 Billing"]
        BC["Billing Collector<br/>Usage Metering"]
        STRIPE["Stripe / Manual<br/>Cost Forecasting"]
    end

    GH -- "Webhook: Push / Pull Request" --> NGROK[ngrok Tunnel]
    NGROK --> CADDY
    CADDY -- "/webhooks/github" --> GW
    CADDY -- "/*" --> DJANGO

    GW -- "HMAC Verify" --> HMAC_OK{Valid Signature?}
    HMAC_OK -- "✅ Yes" --> FILTER{Default Branch?}
    HMAC_OK -- "❌ No → 401" --> ERR[Rejected]
    FILTER -- "✅ main" --> REDIS
    FILTER -- "❌ feature branch" --> FILT_LOG["[Filtration] Skipped — not default branch"]

    REDIS -- "Tasks" --> CELERY
    REDIS -- "Schedule" --> BEAT

    CELERY -- "POST /api/v1/verify-infrastructure" --> BRAIN
    BRAIN --> SCRUBBER
    SCRUBBER -- "Compliance Alert: Intercepted & Scrubbed" --> LOG_SCRUB[Logged]
    SCRUBBER --> AI_INF
    AI_INF --> OR
    AI_INF --> BRAIN

    BRAIN -- "Generate Patch" --> SBX
    SBX --> PYT
    PYT -- "exit_code=0 ✅" --> HANDLER
    PYT -- "exit_code≠0 ❌" --> HANDLER
    HANDLER -- "Post PR Comment" --> GH

    DJANGO --> POLL
    POLL --> UI
    UI --> PG

    BEAT --> BC
    BC --> PG
    BC --> STRIPE

    PG --> RLS
    PG --> AUDIT

    class GH,OR external
    class CADDY cloud
    class GW,NGROK gateway
    class REDIS queue
    class CELERY,BEAT worker
    class BRAIN,SCRUBBER,AI_INF,HANDLER brain
    class SBX,PYT sandbox
    class DJANGO,POLL,UI dashboard
    class PG,RLS,AUDIT db
    class BC,STRIPE billing
Loading

Services

Service Technology Role
ingestion-service Node.js + Express GitHub webhook receiver, path filtering, task queuing
core-brain FastAPI + Celery AI orchestration, secret scrubbing, Docker sandbox control
django-dashboard Django 6 + Daphne ASGI Web UI, audit logs, multi-tenant admin, billing
sandbox-env Docker (network-isolated) Pre-baked Pytest/Jest images, no network, 512MB RAM cap
billing-collector Python Cost forecasting, usage metering, AWS/GCP poll
redis-broker Redis 7 Celery message queue + result backend

Security

Layer Mechanism
Code storage Zero persistence — PostgreSQL stores only operational metadata, never source code
LLM privacy data_collection: deny on every OpenRouter request — legally blocks training on your code
Secret scrubbing In-memory regex — AWS keys, GH tokens, DB credentials masked before transit
Patch execution Network-isolated Docker — no network access, 512MB RAM / 2 CPU hard limit, no host FS mount
Tenant isolation PostgreSQL RLS — database-enforced row separation, bypasses Django .filter()
Container leaks Background cron — auto-prunes orphaned sandbox containers on execution freeze