Decision: SYRIS core will start as a modular monolith, not microservices.
SYRIS is a single-user, 24/7 automation and orchestration system with:
As a solo developer, the dominant risks are:
We will implement SYRIS core as a modular monolith:
src/syris/ package layout with one pyproject.tomlwatchers/, rules/, and mcp/ are top-level peer packages — not nested under scheduler/ or integrations/. Each has its own loop, state model, and lifecycle.routing/ is a top-level peer to pipeline/. The router delegates to routing functions; it doesn't own them.adapters/inbound/ and adapters/outbound/. MCP has its own top-level mcp/ package.See architecture/component-map for the full module tree and dev/implementation-design for the reasoning behind each structural choice.
Pros
Cons
Pros
Cons
Pros
Cons
Pros
Cons
render_as_batch workarounds for ALTER TABLE)FOR UPDATE SKIP LOCKED needs workarounds or is unavailableDecision: Start with PostgreSQL directly. The overhead of maintaining SQLite compatibility and planning a future migration exceeds the cost of running Postgres from day one.
MessageEvent, Task, ToolCall, AuditEvent, Approval, ErrorDetail).