Project - Swarm AI

Project - Swarm AI
Project - Swarm AI

The following project is based on this work

GitHub - Armur-Ai/Pentest-Swarm-AI: Autonomous penetration testing using a swarm of AI agents. Orchestrates recon, classification, exploitation, and reporting specialists with ReAct reasoning — supports bug bounty, continuous monitoring, and CTF modes. Built with Go, Claude API, and 7+ native security tools.
Autonomous penetration testing using a swarm of AI agents. Orchestrates recon, classification, exploitation, and reporting specialists with ReAct reasoning — supports bug bounty, continuous monitor…

This is being a pain in the butt. However progress is being made.

I love development. So much frustrating fun. Learning so much about github, development, planning, the correct tools set and development platform, etc..

This is a pentesting platform and as you can see it has been pointed to a self hosted vunerable container - you have to test things. Hacking is against the law in just about every country on the planet. I use it internally once I am happy that its ready.

Quick status:

Where we are: You approved the combined plan — persistence + playbook wiring in one pass, Postgres-as-source-of-truth with in-memory cache, playbooks get both API endpoints and a dashboard UI. I just finished the research/discovery phase (previous turn) — the good news holding up: almost everything needed already exists in the codebase (CampaignStore, PostgresBoard, the whole playbook loader/validator/runner), it's just never been connected to the API server. This is a wiring job, not a from-scratch build.

What I'm doing right now: Reading internal/plugins/runner.go and internal/engine/runner.go closely to work out one real integration snag before I start writing code: PlaybookRunner.Run() currently always mints its own fresh campaign ID internally, but the API server's pattern (learned the hard way earlier this session — it's literally documented in a code comment I just found) requires the campaign ID to be pre-registered before the run starts, or every event/report gets orphaned under an ID nothing else recognizes. I need a small, low-risk change to PlaybookRunner so it accepts a pre-assigned campaign ID, matching how regular campaigns already work.

Plan from here, in order:

  1. Small PlaybookRunner signature change (accept campaign ID)
  2. Wire Postgres campaign/event/finding persistence into server.go (write-through + fallback-on-miss reads)
  3. Wire blackboard.NewPostgresBoard into swarm-mode campaigns
  4. New API endpoints: list/get/run playbooks
  5. Dashboard UI pages for browsing and running playbooks
  6. Build → test → deploy → live-verify → commit/push, same as every fix this session

#enoughsaid