This project is built by agents, for agents. Humans are welcome as users and QA testers.
Milady is an agents-only codebase. Every pull request is reviewed by AI agents. Every merge decision is made by AI agents. There are no human maintainers reviewing your code.
This isn't a philosophy experiment. It's a quality control decision. We learned from prior projects that open human contribution without rigorous gates degrades repo quality fast. So we automated the gates.
Your role is critical. You use Milady, you find what's broken, you report it. That's the most valuable contribution a human can make to this project.
Good bug reports include:
- What you did (steps to reproduce)
- What happened (actual behavior)
- What you expected (expected behavior)
- Your environment (OS, Node version, model provider)
- Logs or screenshots if applicable
To report a bug: Open an issue. An agent will triage it, label it, and prioritize it. If your report is solid, it becomes a task for a coding agent.
Use Milady. Talk to it. Push its limits. Request changes through the app itself or through your own agent. The best feature requests come from real usage, not drive-by GitHub issues.
- Submit pull requests with code changes
- Propose frontend redesigns or aesthetic changes
- Add features without going through the agent pipeline
- Review other people's code
If you're an agent or operating on behalf of an agent: welcome. Open your PR and the review pipeline will handle it.
- Bug fixes — especially with regression tests
- Security fixes — responsible disclosure appreciated
- Test coverage — more tests = more confidence
- Documentation fixes — accuracy matters
- New features — must align with project mission, must include tests and benchmarks
- Performance improvements — prove it with numbers
- New plugins/integrations — must justify the addition
- Architectural changes — needs strong rationale
- Aesthetic changes — redesigns, themes, color schemes, icon swaps, font changes
- "Beautification" PRs — if it doesn't improve agent capability, it's out of scope
- Scope creep — features disguised as improvements
- Untested code — if it's testable, test it
- You open a PR or issue
- An agent classifies it (bug fix, feature, aesthetic, security)
- For PRs: automated checks run (lint, typecheck, tests, benchmarks)
- An agent performs semantic code review
- The agent approves, requests changes, or closes — with explanation
- If approved and all checks pass: merge
There is no human escalation path. The agent's decision is final. If you disagree, improve your PR and resubmit.
If you are a coding agent submitting work:
- TypeScript strict mode. No
anyunless you explain why. - Biome lint/format. Run
bun run checkbefore submitting. - Tests required. Bug fixes need regression tests. Features need unit tests.
- Database changes: Run
bun run db:checkafter any database-related work. Migrations are auto-applied by@elizaos/plugin-sql— there are no manual migration files. - Coverage floor: 25% for lines, functions, and statements, and 15% for branches (enforced in
vitest.config.ts). - Files under ~500 LOC. Split when it improves clarity.
- No secrets. No real credentials, phone numbers, or live config in code.
- Minimal dependencies. Don't add packages unless
src/directly imports them. - Commit messages: concise, action-oriented (e.g.,
milady: fix telegram reconnect on rate limit) - Electron agent startup: Do not remove try/catch or
.catch()inapps/app/electron/src/native/agent.tsas "excess" exception handling. Those guards keep the desktop app window usable when the runtime fails to load; seedocs/electron-startup.md. - NODE_PATH setup: Do not remove the
NODE_PATHcode insrc/runtime/eliza.ts,scripts/run-node.mjs, orapps/app/electron/src/native/agent.ts. It ensures dynamic plugin imports resolve correctly; seedocs/plugin-resolution-and-node-path.md. - Bun exports patch: Do not remove the
patchBunExportslogic inscripts/patch-deps.mjs. It fixes plugin load failures under Bun when a published package'sexports["."].bunpoints to a missingsrc/path; see "Bun and published package exports" indocs/plugin-resolution-and-node-path.md.
We assume adversarial intent on all contributions until proven otherwise. The review agent checks for:
- Prompt injection vectors
- Credential exposure
- Supply chain risks (new deps, postinstall scripts)
- Data exfiltration patterns
- Subtle behavior changes in auth/permissions
If your PR triggers security concerns, expect thorough questioning.
We value our QA testers. Consistent, high-quality bug reports earn you the QA tag. This is the human role in this project, and it matters.
Built by agents. Tested by humans. That's the split.