Agents Guide - Personal Assistant (Meeseeks)
What this codebase is
Meeseeks is a multi-agent LLM personal assistant that decomposes user requests into atomic actions, runs them through tools, and returns a synthesized response. It ships multiple interfaces (CLI, chat UI, REST API, Home Assistant) that share the same core engine.
Core entry points
core/task_master.py: action planning + task execution loop
core/classes.py: ActionStep, TaskQueue, AbstractTool contracts
tools/: tool implementations and integration glue
meeseeks-chat/chat_master.py: Streamlit UI
meeseeks-api/backend.py: Flask API
meeseeks-cli/cli_master.py: terminal CLI
meeseeks_ha_conversation/: Home Assistant integration
How to get context fast
- Use the DeepWiki MCP tool on
bearlike/Personal-Assistant for a fast architecture map.
- Read
README.md and component READMEs for configuration/runtime details.
- Use
rg to locate specific behavior and follow the exact file path.
- For CI issues, use GitHub Actions logs (GH CLI or MCP GitHub tools).
MCP tools (use first for external research)
When you need external context (other repos, CI failures, specs, APIs), prefer MCP tools instead of guessing.
- DeepWiki: fast repo architecture/flow Q&A without loading large files.
- GitHub Repos: precise file/commit/issue/PR lookup, and Actions runs/logs for CI debugging.
- Internet Search (SearXNG): broad web lookup for up‑to‑date facts and references.
- Web URL Read: fetch exact page content or headings for accurate summaries.
- Context7 Docs: official library/framework docs and code examples.
- Notifications: send status updates to the human owner when needed.
Engineering principles (project-specific)
- KISS and DRY: prefer small, obvious changes; remove redundancy instead of adding layers.
- KRY: keep requirements and acceptance criteria in view; do not drift.
- Keep tool contracts stable (
AbstractTool, ActionStep, TaskQueue).
- Favor composition and reuse across interfaces; avoid duplicating core logic.
- Add or improve tests for non-trivial behavior; expand coverage when touching core logic or tools.
- Use Gitmoji + Conventional Commit format (e.g.,
✨ feat: add session summary pass-through).
- Do not push unless explicitly requested.
- Use
.github/git-commit-instructions.md for commit + PR titles and bodies.
Orchestration insights (transferable)
- Separate tool execution from user-facing response: synthesize after tool results, don't dump raw tool output.
- Keep the loop explicit: plan -> act -> observe -> decide; re-plan only when needed.
- Make tool inputs schema-aware; prefer structured arguments for MCP tools.
- Surface tool activity clearly (permissions, tool IDs, arguments) to reduce user confusion.
Testing patterns (what worked)
- Mock as little as possible; prefer real code paths with stubbed I/O boundaries.
- Cover the full orchestration loop with fake tools and fake LLM outputs.
- Ensure tests fail when tool args are malformed (schema + coercion paths).
- Avoid hidden defaults in tests that mask production behavior.
Testing & running (common paths)
- Tests live under
tests/ (use pytest).
- Local dev uses Poetry and
.env based on .env.example.
- Run tests from the project’s own Poetry root (e.g.,
cd meeseeks-cli && poetry run pytest) to avoid the wrong virtualenv.
- Docker images exist for base, chat, and API; Compose is supported when needed.
Linting & formatting
- Primary linting uses
ruff (root + subpackages). Auto-fix with poetry run ruff check --fix ..
- Type checking uses
mypy. Run from repo root for core/tools/HA, and run inside meeseeks-api/ or meeseeks-chat/ for those components.
flake8, pylint, and autopep8 are still available as dev tools (legacy or ad‑hoc use).
- Helper targets:
make lint, make lint-fix, and make typecheck.
- Pre-commit hooks are defined in
.pre-commit-config.yaml (install with make precommit-install).
Expectations for agents
- Start with DeepWiki for overview, then verify details in code.
- Keep changes minimal, readable, and well‑scoped.
- Document assumptions in PRs/notes when behavior is inferred.
1---2name: agents-guide-personal-assistant-meeseeks-23description: Meeseeks is a multi-agent LLM personal assistant that decomposes user requests into atomic actions, runs them through tools, and returns a synthesized response.4---5# Agents Guide - Personal Assistant (Meeseeks)67## What this codebase is8Meeseeks is a multi-agent LLM personal assistant that decomposes user requests into atomic actions, runs them through tools, and returns a synthesized response. It ships multiple interfaces (CLI, chat UI, REST API, Home Assistant) that share the same core engine.910## Core entry points11- `core/task_master.py`: action planning + task execution loop12- `core/classes.py`: `ActionStep`, `TaskQueue`, `AbstractTool` contracts13- `tools/`: tool implementations and integration glue14- `meeseeks-chat/chat_master.py`: Streamlit UI15- `meeseeks-api/backend.py`: Flask API16- `meeseeks-cli/cli_master.py`: terminal CLI17- `meeseeks_ha_conversation/`: Home Assistant integration1819## How to get context fast201. Use the DeepWiki MCP tool on `bearlike/Personal-Assistant` for a fast architecture map.212. Read `README.md` and component READMEs for configuration/runtime details.223. Use `rg` to locate specific behavior and follow the exact file path.234. For CI issues, use GitHub Actions logs (GH CLI or MCP GitHub tools).2425## MCP tools (use first for external research)26When you need external context (other repos, CI failures, specs, APIs), prefer MCP tools instead of guessing.27- DeepWiki: fast repo architecture/flow Q&A without loading large files.28- GitHub Repos: precise file/commit/issue/PR lookup, and Actions runs/logs for CI debugging.29- Internet Search (SearXNG): broad web lookup for up‑to‑date facts and references.30- Web URL Read: fetch exact page content or headings for accurate summaries.31- Context7 Docs: official library/framework docs and code examples.32- Notifications: send status updates to the human owner when needed.3334## Engineering principles (project-specific)35- KISS and DRY: prefer small, obvious changes; remove redundancy instead of adding layers.36- KRY: keep requirements and acceptance criteria in view; do not drift.37- Keep tool contracts stable (`AbstractTool`, `ActionStep`, `TaskQueue`).38- Favor composition and reuse across interfaces; avoid duplicating core logic.39- Add or improve tests for non-trivial behavior; expand coverage when touching core logic or tools.40- Use Gitmoji + Conventional Commit format (e.g., `✨ feat: add session summary pass-through`).41- Do not push unless explicitly requested.42- Use `.github/git-commit-instructions.md` for commit + PR titles and bodies.4344## Orchestration insights (transferable)45- Separate tool execution from user-facing response: synthesize after tool results, don't dump raw tool output.46- Keep the loop explicit: plan -> act -> observe -> decide; re-plan only when needed.47- Make tool inputs schema-aware; prefer structured arguments for MCP tools.48- Surface tool activity clearly (permissions, tool IDs, arguments) to reduce user confusion.4950## Testing patterns (what worked)51- Mock as little as possible; prefer real code paths with stubbed I/O boundaries.52- Cover the full orchestration loop with fake tools and fake LLM outputs.53- Ensure tests fail when tool args are malformed (schema + coercion paths).54- Avoid hidden defaults in tests that mask production behavior.5556## Testing & running (common paths)57- Tests live under `tests/` (use `pytest`).58- Local dev uses Poetry and `.env` based on `.env.example`.59- Run tests from the project’s own Poetry root (e.g., `cd meeseeks-cli && poetry run pytest`) to avoid the wrong virtualenv.60- Docker images exist for base, chat, and API; Compose is supported when needed.6162## Linting & formatting63- Primary linting uses `ruff` (root + subpackages). Auto-fix with `poetry run ruff check --fix .`.64- Type checking uses `mypy`. Run from repo root for core/tools/HA, and run inside `meeseeks-api/` or `meeseeks-chat/` for those components.65- `flake8`, `pylint`, and `autopep8` are still available as dev tools (legacy or ad‑hoc use).66- Helper targets: `make lint`, `make lint-fix`, and `make typecheck`.67- Pre-commit hooks are defined in `.pre-commit-config.yaml` (install with `make precommit-install`).6869## Expectations for agents70- Start with DeepWiki for overview, then verify details in code.71- Keep changes minimal, readable, and well‑scoped.72- Document assumptions in PRs/notes when behavior is inferred.