LOCAL ENGINEERING TEAM

An autonomous engineering team that ships while you're away.

Alfred turns Claude Code and Codex into a spec-driven engineering team. Named agents plan the work, write the code, review each other, and open pull requests. On your machine, behind an approval gate.

THE DESKTOP APP

See and steer your agents from one desktop app.

Alfred Desktop is the recommended onboarding path. It detects an existing install, starts or connects to the local server, checks GitHub and engine auth, guides repo selection, and lets you choose a roster theme or custom display names. Slack is still where teams discuss and approve plans.

SETUP CHECKS existing install detected
Tools GitHub Repos Team Slack First request
Claude 5h window resets in 2h 10m
58% of window used
Codex today 1.8M tokens
today, across sessions
Claude weekly 69% left
resets Mon 00:00
YOUR AGENTS Batman roster · custom names ready
  • Batman Architect: drives cross-repo features every 1h, gated holding
  • Lucius Senior dev: writes implementation PRs every 20m live
  • Drake Planner: turns requests into tasks every 2h live
  • Bane QA: adds missing tests every 4h live
  • Ra's al Ghul Reviewer: checks pull requests every 30m live
  • Nightwing Fixer: handles review and CI feedback every 45m idle
  • Robin Triage: sorts incoming bugs every 3h live
  • Gordon Ops: flags stale docs and health drift daily 08:00 idle
NEW REQUEST Alfred checks it is ready to build
What should Alfred do?
Add a per-org API rate limiter to acme-org/api, then wire the dashboard toggle in org/web. Ship behind a flag.
saved plan · rate-limit-rollout 2 repos flagged
Alfred Desktop puts onboarding, agents, work, and local runtime checks in one app. Slack stays connected for approvals and conversation.

How the desktop app works

THE TOUR

Watch a request become a merged pull request.

About a minute of Alfred working on a repo. It answers a question about the code, turns a change you describe into a plan you approve, and scopes the same request from Slack. Its agents then build it, review it, and open a pull request.

WHAT IT DOES FOR YOU

Specialist agents carry work from request to reviewed PR.

Each agent has one plain job, and the default install wires the whole engineering loop: planning, architecture, implementation, review, test coverage, high-priority review fixes, cleanup, summaries, and safe automerge when your policy allows it.

Batman: architect for cross-repo features

The public OSS architect role. Reads the parent issue or Slack plan, checks the affected repos, gets approval, and files scoped repo-level work for the implementation fleet.

[10:30] architect drafted bundle:billing-v2
[10:31] architect posted plan to Slack
[10:34] scope approved
[10:35] architect opened backend -> web -> mobile tasks

Lucius: senior-dev opens PRs

Picks up a scoped task, makes its own copy of the repo, runs Claude Code or Codex with the full project in context, and opens a pull request with tests.

[12:04] senior-dev claimed your-backend#247
[12:04] senior-dev worktree ~/.alfred/wt/12042118/
[12:18] senior-dev PR #1247 opened

Drake: planner shapes single-repo work

Reads a Slack request, GitHub issue, or plain-text plan, asks for missing details, then files small tasks a coding agent can pick up on its own.

[09:02] drake refined settings plan
[09:02] drake filed your-backend#248 agent:implement
[09:03] drake linked acceptance checks

Ra's al Ghul: reviewer checks PRs

Reads the changes, runs your test suite in its own copy of the repo, leaves comments on the lines that need work, and marks the pull request ready or needs changes.

[12:18] ras-al reviewed PR#1247
[12:18] ras-al filed 2 inline nits
[12:19] ras-al labelled needs-changes

QA: Bane adds missing tests

Looks at recently changed files, finds the places that need coverage, and opens focused test PRs that stand on their own.

[15:10] bane found low coverage in billing
[15:23] bane PR #1250 opened
[15:24] bane labelled tests-only

Fixer: Nightwing handles review comments

Finds agent-authored PRs with unresolved high-priority review comments, applies the fix in a clean worktree, and pushes the update back to the PR branch.

[16:01] nightwing found P1 on PR#1247
[16:08] nightwing pushed fix
[16:09] nightwing asked for re-review
WHY ALFRED IS DIFFERENT

It runs the engineering loop without babysitting.

Alfred checks the Slack drafts, plans, and GitHub issues you marked for it, works in isolated repo copies, opens pull requests, routes review, and comes back to Slack when it needs a decision.

Removes prompt-by-prompt babysitting

Alfred finds the next task, hands it to the right role, runs the work in an isolated repo copy, routes review, records memory, and comes back to Slack when a human decision is needed.

Runs on a Mac or Linux box you choose

A Mac mini, an old MacBook on a dock, or a small Linux box is enough. Alfred runs locally, using the Claude Code and Codex subscriptions you already pay for.

You plan and approve in Slack

Planning happens in a Slack thread. Reply with what you want, what should change, or questions of your own, and Alfred turns the discussion into the next task. Nothing big runs until you approve it.

Builds useful memory without a queue

Alfred keeps notes about each repo on your machine. Structural gates and an LLM judge decide what becomes durable context, and you can still inspect or override the memory queue from Slack or the desktop app.

Works on one repo or many at once

Alfred can plan a single feature across several repos at the same time. It works the same way inside a monorepo, whether you use Turborepo, Nx, or Cargo workspaces.

Open source, MIT licensed

Every line is on GitHub at github.com/luminik-io/alfred. Fork it, read it, run it locally, or audit the code.

LOCAL MEMORY

Your agents keep a record of each run.

Alfred keeps notes on your own machine: durable lessons, file touches, failure patterns, what went wrong before, and what is in progress right now. Memory promotion is designed to run without a human babysitting every candidate: structural gates and an LLM judge decide what becomes durable context, while you can still inspect or override it.

01

Lessons earn promotion automatically.

Agents and trusted teammates can suggest a lesson worth keeping. Alfred filters candidates through structural checks and an LLM judge before durable promotion, so memory keeps improving without turning every operator into a queue janitor.

02

Past problems are easy to find.

Setup blockers, timeouts, and repeated test failures all land in one place. The next time something breaks, your agents start from what happened before instead of digging back through old Slack messages.

03

The memory loop stays local.

The default recall path is a local Redis Agent Memory Server, with FleetBrain as the reliability ledger and inspection surface. If Redis is disabled, missing, or unreachable later, Alfred keeps running and exposes Redis-specific checks through the memory controls instead of treating FleetBrain as the same thing.

fleet-brain copy
$ alfred brain status
ok lessons 18
ok memory candidates 4
ok github items 37
ok bundle items 6
ok stale workers 0
$ alfred brain promotions
12 senior-dev owner/api evidence: PR#248
19 architect bundle evidence: issue#504
$ alfred brain failures --codename huntress
timeout playwright browser missing 3x
slack> memory harvest
preview huntress local setup lesson
slack> memory harvest now
queued candidate 21
$ alfred brain redis-sync --dry-run
would sync 18 reviewed lessons
slack> memory
slack> remember owner/api: keep retry copy testable
slack> memory promote 12
MEMORY A/B Synthetic fixture, N=10 (+2 controls), single engine run
80% to 0% repeated-mistake rate over 10 convention tasks, memory off then on
8.3% to 91.7% task success across all 12 tasks, memory off then on
240k vs 295k tokens in, memory on used fewer

The same suite of ten repo-convention tasks plus two controls ran twice through the claude CLI, changing only whether memory was on. It measures one thing: whether an agent repeats a mistake the fleet already learned about. Method and repro.

FROM ROUGH REQUEST TO SCOPED WORK

Batman handles the rollout. Lucius ships the PRs. Drake keeps smaller work scoped.

Start with a Slack thread, a GitHub issue, or a plain-text plan. Batman is the default-theme name for the public architect role: it handles approved multi-repo fan-out, Lucius handles repo-local implementation as senior-dev, and Drake turns smaller requests into clear tasks.

PLAN-TO-PR FLOW request  →  drake  →  agent:implement  →  PR
slack thread or plan.md ## What Org-scoped billing v2. ## Acceptance - /api/v1/invoices by org - Pricing page rewrite - Mobile settings v2 human starts, Alfred scopes DRAKE SCOPES files clear issues every 20 min agent:implement · backend Introduce BillingV2Service your-backend#247 agent:implement · frontend Pricing page rewrite your-frontend#572 agent:implement · mobile Settings screen v2 your-mobile#188 · queued

How Alfred helps structure the plan

THE ARCHITECT AGENT

Batman turns one large feature into repo-level work.

Batman is the default-theme name for the architect role, and that role is public OSS code. It reads the parent issue, checks the affected repos, plans the rollout, gets approval in Slack or the local client, and files scoped child issues. Senior-dev, test-engineer, fixer, reviewers, and the merge gate then finish each PR.

ARCHITECT PLAN · FAN-OUT parent issue → N child issues → N PRs
agent:large-feature org slug rollout specs#42 agent:bundle:add-org-slug ARCHITECT DRIVES plans, files, tracks agent:implement your-backend PR opened by senior-dev +162 / -34 in 4 files agent:implement your-frontend PR in review +98 / -12 in 3 files agent:implement your-mobile queued, no firing yet picked next interval
HOW IT WORKS

One run, from start to finish.

From the moment a run starts to the pull request it opens. The same five stages happen every time an agent fires.

ONE RUN, STEP BY STEP timer → agent → engine → Slack
01 · SCHEDULER launchd fires senior-dev every 1200s survives reboot 02 · AGENT senior-dev.py preflight, claim picks oldest open agent:implement 03 · WORKSPACE git worktree isolated workspace ~/.alfred/wt/... safe to crash 04 · ENGINE claude -p or codex exec your subscription no API key 05 · OUTPUT PR + report label flip, slack post agent:pr-open severity=info one run = one agent, one task, its own copy of the repo, one model call, one Slack update

See every step in a run

SLACK-NATIVE PLANNING

Talk to Alfred where your team already talks.

Slack is the planning and control surface. Trusted users can start requests, refine plans in a thread, approve big work, ask for status, pause agents, and keep context attached to the work. Slack never bypasses the approval gates.

slack #alfred · daily summary 2026-05-20 20:45 CET
Slack message from the Alfred bot summarising one private Luminik setup: 153 PRs merged, 44 issues opened, 144 issues closed, and 44,351 lines added across six repos.

A real Luminik setup summary across six repos. The impact page keeps the current totals up to date.

A real Luminik setup summary across six repos. The impact page keeps the current totals up to date.

See more examples of what Alfred posts

YOUR AGENTS, RIGHT NOW

What `alfred status` shows.

Real output from a local OSS full-fleet install on 2026-06-30: architect, senior-dev, planner, test-engineer, fixer, triage, ops-watch, e2e-runner, memory, code-map, cleanup, reports, and fleet doctor are loaded from the start.

$ alfred status 21/21 loaded · live output
lucius hybrid 2m 8 8 0 0 0 $0.00 ok
drake hybrid 2h33m 0 0 0 0 0 $0.00 ok
bane hybrid 4h17m 0 0 0 0 0 $0.00 ok
rasalghul hybrid 6m 1 1 0 0 1 $0.00 ok
nightwing hybrid 1h32m 6 6 0 0 0 $0.00 ok
robin hybrid 1h32m 2 2 0 0 0 $0.00 ok
batman hybrid 1h34m 0 0 0 0 0 $0.00 ok
huntress - never 0 0 0 0 0 $0.00 idle until target URL exists
gordon - never 0 0 0 0 0 $0.00 idle until ECS cluster exists
automerge - 12m 0 0 0 0 0 $0.00 ok
agent-cleanup - 6h06m 0 0 0 0 0 $0.00 ok
memory-harvest - 1h01m 0 0 0 0 0 $0.00 ok
memory-auto-promote - 46m 0 0 0 0 0 $0.00 ok
code-map-refresh - 4h25m 0 0 0 0 0 $0.00 ok
agent-morning-brief - 2h05m 0 0 0 0 0 $0.00 ok
fleet-doctor - 1h36m 0 0 0 0 0 $0.00 ok
fleet-recap-morning - 1h21m 0 0 0 0 0 $0.00 ok
fleet-recap-evening - 1h21m 0 0 0 0 0 $0.00 ok
shipped-summary-daily - 1h30m 0 0 0 0 0 $0.00 ok
shipped-summary-weekly - 1h30m 0 0 0 0 0 $0.00 ok
proof-telemetry - 1h34m 0 0 0 0 0 $0.00 anonymous aggregate usage
Live alfred status output from a real Mac, captured 2026-06-30 after the OSS full-fleet install. Cost is $0.00 because Alfred runs on your own Claude and Codex subscriptions, not pay-per-token API bills. Batman, Huntress, Gordon, Bane, Nightwing, and the support jobs are loaded from the first install.
GET STARTED

Check the wiring before real work starts.

Run doctor for setup health, then dry-run one agent to see the path it would take without touching GitHub, Slack, an engine, or your files.

terminal copy
$ alfred doctor
ok gh auth luminik-io
ok claude code authed
ok codex authed (optional)
ok launchd 21 agents loaded
ok spend cap $20/day fleet
$ alfred dry-run senior-dev
alfred dry-run: senior-dev
role: senior developer
mode: safe simulation
would: resolve config, acquire the agent lock, run preflight, and enter the runner
would not: mutate GitHub, post Slack, invoke an engine, or edit files
BUILT BY LUMINIK

Used every day by Luminik.

In the last 30 days, Alfred helped merge 10 PRs across 9 Luminik repos. The impact page shows aggregate product totals and public examples.

Alfred PRs 10
Alfred issues 0
files changed 56
repos 9