-
-
Landing Page
-
Github or Jira Connection
-
DashBoard
-
Metrics & KPIs
-
KPIs & Admin Panel (Visible to [email protected])
-
Admin Panel (Visible to [email protected])
-
Metrics & KPIs
-
All Test passed safe to merge
-
All runs . Admin Panel (Visible to [email protected])
-
Open Source issue fixed by Meutex
-
Verified the PR with claude
-
Verified the PR with claude
-
Security agent report in one of the Project
Most of a developer's time doesn't go into writing new features - it goes into everything around code. Triaging an issue, reading through unfamiliar part of codebase, writing fix, testing it, waiting on review. Overhead stays same whether change is one-line bug fix or new feature, and it scales badly for small teams and solo developers without headcount to spread it around.
Name Meutex comes from two ideas we wanted system to embody: meute (French for wolf pack - coordination, each member knows its role) and mutex (CS primitive for coordination without collision). We wanted set of specialized agents that could work like coordinated pack on real software project - never stepping on each other, each responsible for one part of SDLC - rather than one large model trying to do everything at once.
##What it does
Meutex is live at meutex.com. Connect GitHub repo, open issue - bug, maintenance task, or new feature - and pack takes it from there:
- PM Agent reads issue, reads actual repository to understand where changes need to happen, and turns it into PRD with explicit acceptance criteria. Human approves before anything gets touched.
- Dev Agent ("Forge") takes approved PRD, creates own branch, spins up isolated sandbox, implements change, writes and runs tests, and opens pull request.
- Security Agent ("Sentinel") audits diff before it's mergeable, checking for vulnerabilities introduced by change.
Every step streams into Firestore so there's live activity trail, and every issue gets single distributed trace across all three services, so nothing that happens is black box.
##How we built it
- Agents: PM Agent on Google ADK, Dev Agent on Antigravity SDK, Security
Agent on
google-genaidirectly (no agent loop needed for single-pass audit). - Reasoning: Gemini via Vertex AI.
- Execution sandboxing: E2B, spun up per task and torn down after.
- State: Firestore for tasks, PRDs, and per-issue activity trails; Vertex AI Memory Bank for semantic, per-ticket memory (HITL history, prior reasoning).
- Guardrails: Model Armor sits in front of every prompt and output, screening for injection and unsafe content before it reaches model or leaves it.
- Agent-to-agent: A2A protocol, authenticated with Bearer JWTs, with W3C traceparent injected into every handoff so request can't reach downstream agent without also carrying its trace.
- Infra: each agent runs as its own Cloud Run service, scaling to zero when idle; Workload Identity and per-service service accounts handle auth to GCP; separate Task Engine service owns actual GitHub/Jira connection, so PM Agent never talks to those systems directly - it only reads repos through scoped, read-only GitHub App installation.
- Discovery: both agents are published to Google's Agent Registry as A2A cards derived from their live deployed services, so they're discoverable by capability, not just by direct URL.
- Package management:
uv, not pip, across every Python service.
##Challenges we ran into
- Cost blew up before we noticed it. Running agents as resident workers
with
min-instances=1and CPU always allocated cost $105/month - 96% of total bill - for loops idle almost all of time. We rebuilt resident loop into Cloud Scheduler-triggered/board/tickpass, so PM Agent can scale to zero between runs. That took idle cost from $109.48/month to $3.69/month, at cost of up to ~5 minutes of pickup latency - trade we were happy to make. - Dashboard was quietly costing more than whole idle month. Open dashboard polling every 5 seconds kept PM Agent busy 44% of time - more compute per working day than entire rest of month combined. Fixed by stopping polling entirely while tab is hidden.
- Stuck queue from deleted issues. If GitHub issue was deleted after being queued, board would jam retrying it forever. Fixed by surfacing 404/410 as distinct "gone" exception instead of generic failure, purging vanished work items instead of retrying them, and isolating one workspace's queue failure so it can't block every other org's queue pass.
- Agent Registry has real gaps. There's no direct "create agent" call -
Agent is derived from Service whose
agentSpeccarries A2A card, so publishing means fetching card back off already-deployed service. And Bindings requireauthProvider, but this API version exposes noauthProviderscollection at all - so parts of registry that look first-class are only partially implemented on Google's side today. - Tracing across three independent processes. PM Agent, Forge, and short-lived E2B sandbox all needed to show up as one trace per issue. Fix was making traceparent part of A2A auth contract itself - no path can authenticate to Forge without also handing it trace.
##Accomplishments that we're proud of
We didn't just test this against our own code. We ran Meutex against real issues on two real open-source repositories, end to end, with no manual intervention beyond PRD approval step:
Both issues came back fixed, tested, and ready to merge, and we independently verified each diff with Claude before trusting result.
Demo video shows this exact workflow live on our own application, CareConnect - you can see resulting pull request here: CareConnect PR #18.
##What we learned
Building this taught us as much about running infrastructure economically
as it did about agent design. Biggest lesson: on serverless, "always warm"
is default failure mode, not edge case - it's easy to reach for
min-instances=1 for latency and not notice it's 96% of bill until you
actually look. Second: guardrails need to be chokepoint in request path,
not policy document - Model Armor only works because nothing can route
around it, not because it's well-documented.
##What's next for Meutex
- Bring Deployment agent online to close last gap in SDLC loop.
- Expand real-world validation beyond BeeKeeper and OpenSRE to wider set of open-source repos and issue types.
- Tighten Jira intake to match GitHub path.
Built With
- a2a-protocol
- agent-registry
- antigravity-sdk
- claude
- cloud-run
- cloud-scheduler
- cloud-trace
- e2b
- fastapi
- firebase-hosting
- firestore
- gemini
- github-api
- google-adk
- google-cloud
- google-genai
- model-armor
- node.js
- opentelemetry
- python
- typescript
- vertex-ai
- workload-identity
Log in or sign up for Devpost to join the conversation.