Thank you for your interest. This document explains how to set up a development environment, run the test suite, and submit changes.
- Development environment
- Running tests
- Code style
- Project structure
- Governance and ownership
- Submitting a pull request
- Architecture decision records (ADRs)
- Backlog tasks
- Definition of done
- Things not to do
git clone https://github.com/dndcreator/Promethea_Agent.git
cd Promethea_Agent
python -m venv .venv
# Windows PowerShell
.\.venv\Scripts\Activate.ps1
# macOS / Linux
source .venv/bin/activate
pip install -U pip
pip install -r requirements.txt
# Create a local config (minimum: set API__API_KEY, API__BASE_URL, API__MODEL)
cp env.example .envpytest tests/test_reasoning_service.py \
tests/test_memory_regressions.py \
tests/test_tool_service.py \
tests/test_workspace_sandbox.py \
tests/test_workflow_engine_mvp.pypython tests/run_all_tests.pypython tests/run_all_tests.py --coveragePROMETHEA_LIVE_TEST=1 python tests/run_all_tests.py --livepython tests/run_all_tests.py --file test_memory_regressions.pyWe use black, isort, and flake8. Run before committing:
black .
isort .
flake8 .Configuration lives in pyproject.toml.
gateway/ Core control plane, pipeline, tools, workflow, workspace, security
memory/ Memory backends (sqlite_graph, flat_memory, neo4j) and adapter
agentkit/ MCP manager, tool implementations, sandboxing
channels/ Channel adapters (web, HTTP, Telegram, ...)
computer/ Computer-control primitives (screen, browser, filesystem, process)
skills/ Skill schema, registry, and official packs
docs/ Architecture docs, ADRs, backlogs, playbooks
tests/ Full test suite
config/ default.json — shipped defaults (no secrets here)
env.example Template for user configuration
Key entry point: gateway/app.py — FastAPI application.
Startup script: start_gateway_service.py.
- Governance model:
GOVERNANCE.md - Maintainer responsibility and ownership:
MAINTAINERS.md - Path-based review ownership:
.github/CODEOWNERS
Every PR must answer these questions in the description:
-
Which workstream does this belong to?
(Gateway / Memory / Workflow / Tool / Channel / Security / Observability / Config / Skill / Workspace) -
Does this change
user_idboundary logic?
If yes: explain which enforcement point is affected and how the audit is updated. -
Does this change the Prompt token structure?
If yes: describe which prompt blocks are affected. -
Does this change the memory write path?
If yes: confirm thatMemoryWriteGatebehaviour is unchanged or document the change. -
Does this introduce a new side-effect tool?
If yes: confirm it is added toToolSpecwithside_effect_levelset correctly. -
Does this require a new ADR or doc update?
Template is in .github/pull_request_template.md.
Current architecture guidance lives in docs/architecture/ and docs/reference/.
Before implementing a non-trivial change, check whether the public architecture docs already describe the affected runtime boundary. If your change contradicts an existing document, open a discussion first.
Historical ADRs are kept by maintainers as local release history, but they are not part of the public documentation surface.
Public backlog tasks should live in GitHub issues. Each issue should describe a concrete, scoped task with acceptance criteria.
To claim a task: leave a comment on the corresponding GitHub issue.
A contribution is complete when all of the following are true:
- Code compiles and all existing tests pass
- New code has tests covering the main path and at least one error path
- Relevant
docs/architecture/*.mdis updated (if the change affects a documented component) - If a new design decision was made: an ADR is added or an existing one is updated
-
trace_idpropagation is unchanged (or explicitly noted as changed) - Backward compatibility is documented if broken
- The PR description answers all six questions above
- Do not make cross-module refactors without a backlog task and an ADR.
- Do not modify
user_idboundary logic without updating the security audit path. - Do not use prompt patching to work around a structural protocol problem.
- Do not add a side-effect tool without a
ToolSpecentry and policy review. - Do not commit real API keys, passwords, or tokens.