Nine work services become approval cards in one desktop app
Laya names 9 integrations: Gmail, Slack, GitHub, Bitbucket, Jira, Linear, Notion, Outlook, and Google Calendar. Local n8n workflows normalize incoming events before a Python engine classifies them, researches context, and prepares Action Cards. The Tauri interface presents those cards for approval or dismissal. This is useful when a ticket, email thread, pull request, and meeting all describe the same piece of work.
The product reaches beyond notification display. Card workspaces can hand a task to Claude Code, Gemini CLI, Codex, or Pi CLI through several approval steps. Hybrid retrieval combines ChromaDB vectors with SQLite FTS5 keyword search, while Coherence links people, tickets, and pull requests across platforms. Processing rules can tag, route, start an agent, or send an outbound action. Every rule firing gets a logged outcome, which matters when the system is allowed to prepare mail, Slack messages, or repository comments.
Two local services turn installation into system administration
The Python engine listens on port 8420, and Laya runs a private n8n instance on port 45678. SQLite stores events, cards, workspaces, rules, and chat; ChromaDB stores semantic-search data. Logs rotate under ~/.laya/logs/, while n8n maintains its own workflow data and encrypted credentials. This is a small local stack with multiple databases and processes, even though the user sees one desktop window.
Model choice adds another branch. Ollama and LM Studio keep inference local, while Anthropic, OpenAI, Google, and other LiteLLM-compatible providers need API keys. Installed CLI agents can also provide inference through their existing quotas. The README says Claude Code enforces JSON schemas natively, whereas other agent backends use best-effort schemas plus retries. A team should test its exact backend because a provider name alone does not guarantee the same structured output or failure behavior.
What happened when we ran it
Our sandbox installed 141 Python packages in 18 seconds and used 527 MB on disk. The engine build completed in 4 seconds. commit c39c79f occupied 59.4 MB before installation and contained 674 files with roughly 120,572 lines of source. The repository had 2 CI workflow files and a tests directory, but no Dockerfile.
Pytest failed with exit code 4 after 3 seconds, before it could report any passed or failed cases. The log says engine/tests/conftest.py imported pytest_asyncio and raised ModuleNotFoundError: No module named 'pytest_asyncio'. That module is absent from the core engine/requirements.txt we inspected. Pip-audit also reported 5 known vulnerabilities in the installed environment. The lab block does not give their packages or severities, so the count is the limit of what we can claim.
An open API report matters because Laya can send messages
Open issue 13 says most FastAPI routes on 127.0.0.1:8420 accept local requests without a token. The reporter lists event ingestion, card changes, settings, rules, egress, and an MCP token route among the reachable surfaces. Binding to loopback and restricting browser origins reduce remote web exposure, but they do not authenticate another process already running on the same computer.
That report had not been closed when checked on September 24, 2026, and it does not include a maintainer confirmation or fixed release. Treat it as a specific open allegation that deserves reproduction, not a completed security audit. Its impact is still relevant to adoption because Laya can hold notification content and stage email, Slack, or pull-request actions. Run a trial under a separate OS account, grant narrow connector scopes, keep egress disabled, and avoid production secrets until the route behavior is verified.
Version 1.6.0 has broad packages and narrow failure reports
Version 1.6.0 was published on September 19, 2026, with assets for Intel and Apple Silicon macOS, x64 Windows, and x64 Linux. The release page includes installer signatures for several artifacts. Five days later, the repository was pushed again and GitHub showed 259 stars with 7 combined open issues and pull requests. Recent issue responses show active maintenance rather than a frozen release.
Two setup reports deserve attention. Issue 16 says Windows 11 provisioning reached 4 of 5 steps before the engine stopped responding. Issue 15 reported that the Linux RPM failed because an MCP 2.x name changed, and that issue was closed the next day. The requirements now pin mcp below version 2, which is consistent with a narrow dependency correction. Fast response is encouraging, but a work hub with 141 engine packages needs stronger clean-install coverage than our missing test dependency demonstrated.
The approval model is useful only when approval stays meaningful
Laya's budget caps, preview-before-send flow, firing log, audit export, and dead-event retries give an operator places to inspect automation. Its 3-tier data classification can route work between local and cloud models. Those controls can reduce accidental spending or sending, provided the user reads cards and keeps connector permissions narrow.
The current evidence supports a limited evaluation rather than full trust. Use 1 or 2 noncritical integrations, a local model if available, and read-only MCP scopes. Check the 5 audit findings outside this review, add the missing test dependency in an isolated development setup, and reproduce issue 13 before enabling write or egress tools. Laya may save attention once those gates hold. Until then, the safest feature is the approval step, and the operator should make it hard for any other path to bypass it.

