Directories
¶
| Path | Synopsis |
|---|---|
|
Package actions (piece ⑥) decides what every reminder says and which buttons it carries, and runs the multi-step flows behind those buttons.
|
Package actions (piece ⑥) decides what every reminder says and which buttons it carries, and runs the multi-step flows behind those buttons. |
|
Package agents (piece ⑰) makes Exhale agent-ready: an MCP server that exposes every use case as a tool, the household briefing as a resource, and ready-made prompts (ADR 0018).
|
Package agents (piece ⑰) makes Exhale agent-ready: an MCP server that exposes every use case as a tool, the household briefing as a resource, and ready-made prompts (ADR 0018). |
|
Package app (piece ⑦) holds every business operation of Exhale.
|
Package app (piece ⑦) holds every business operation of Exhale. |
|
Package assistant is the model Exhale itself uses (ADR 0018, part B): plain language in chat and in the web, and reading statements and screenshots into the import review list.
|
Package assistant is the model Exhale itself uses (ADR 0018, part B): plain language in chat and in the web, and reading statements and screenshots into the import review list. |
|
Package auth resolves who is calling: API tokens for scripts and AI agents, one-time codes for linking chat accounts, and web accounts and sessions (ADR 0006).
|
Package auth resolves who is calling: API tokens for scripts and AI agents, one-time codes for linking chat accounts, and web accounts and sessions (ADR 0006). |
|
Package awake keeps the computer Exhale runs on from going to sleep, so that reminders go out on time and chat buttons keep answering (ADR 0028).
|
Package awake keeps the computer Exhale runs on from going to sleep, so that reminders go out on time and chat buttons keep answering (ADR 0028). |
|
Package backup copies the SQLite database safely: a consistent snapshot with VACUUM INTO (copying the file of a live database can corrupt the copy), a rolling set of automatic snapshots while the server runs, and a restore that never overwrites data (ADR 0009, ADR 0020).
|
Package backup copies the SQLite database safely: a consistent snapshot with VACUUM INTO (copying the file of a live database can corrupt the copy), a rolling set of automatic snapshots while the server runs, and a restore that never overwrites data (ADR 0009, ADR 0020). |
|
Package bus (piece ⑫) fans out domain events in memory: the web receives them over SSE, chat adapters re-edit messages already sent, and the scheduler re-plans reminders.
|
Package bus (piece ⑫) fans out domain events in memory: the web receives them over SSE, chat adapters re-edit messages already sent, and the scheduler re-plans reminders. |
|
channels
|
|
|
email
Package email sends reminders by email over SMTP (ADR 0007).
|
Package email sends reminders by email over SMTP (ADR 0007). |
|
email/smtptest
Package smtptest is an in-process SMTP server for tests.
|
Package smtptest is an in-process SMTP server for tests. |
|
fake
Package fake is a text channel for tests: it renders messages as plain text so conversation scripts can be compared with golden files.
|
Package fake is a text channel for tests: it renders messages as plain text so conversation scripts can be compared with golden files. |
|
notifiers
Package notifiers runs the notify-only channels (email, ntfy, webhooks, Web Push): it owns their instance settings and hands the channels to the action layer.
|
Package notifiers runs the notify-only channels (email, ntfy, webhooks, Web Push): it owns their instance settings and hands the channels to the action layer. |
|
notify
Package notify is what the notify-only channels (email, ntfy, webhooks) share: turning a channel-agnostic actions.Message into plain text and HTML, and the link back to the web.
|
Package notify is what the notify-only channels (email, ntfy, webhooks) share: turning a channel-agnostic actions.Message into plain text and HTML, and the link back to the web. |
|
ntfy
Package ntfy sends reminders as push notifications through ntfy (https://ntfy.sh or a self-hosted server).
|
Package ntfy sends reminders as push notifications through ntfy (https://ntfy.sh or a self-hosted server). |
|
slack
Package slack (piece ③) connects Exhale to a Slack workspace over Socket Mode: a WebSocket the app opens outward, so no public URL or open port is needed (ADR 0001, 0007).
|
Package slack (piece ③) connects Exhale to a Slack workspace over Socket Mode: a WebSocket the app opens outward, so no public URL or open port is needed (ADR 0001, 0007). |
|
telegram
Package telegram (piece ②) connects Exhale to a Telegram bot over long polling: an outbound connection, so no public URL or open port is needed (ADR 0001, 0007).
|
Package telegram (piece ②) connects Exhale to a Telegram bot over long polling: an outbound connection, so no public URL or open port is needed (ADR 0001, 0007). |
|
webhook
Package webhook sends each reminder as one HTTP POST with a JSON body to an address the member chooses.
|
Package webhook sends each reminder as one HTTP POST with a JSON body to an address the member chooses. |
|
webpush
Package webpush sends reminders as Web Push notifications to the browsers and installed apps (PWA) where a member turned them on (ADR 0026).
|
Package webpush sends reminders as Web Push notifications to the browsers and installed apps (PWA) where a member turned them on (ADR 0026). |
|
webpush/pushtest
Package pushtest is a fake Web Push service and a fake browser for tests.
|
Package pushtest is a fake Web Push service and a fake browser for tests. |
|
Package desktop is Exhale installed as a desktop app (ADR 0029).
|
Package desktop is Exhale installed as a desktop app (ADR 0029). |
|
Package domain (piece ⑧) holds the entities and business rules of Exhale.
|
Package domain (piece ⑧) holds the entities and business rules of Exhale. |
|
Package engine is the billing time engine (piece ⑨): civil dates and billing-style recurrence.
|
Package engine is the billing time engine (piece ⑨): civil dates and billing-style recurrence. |
|
Package fx (piece ⑤) downloads the European Central Bank's daily reference rates: free, no API key, about 30 currencies (ADR 0008).
|
Package fx (piece ⑤) downloads the European Central Bank's daily reference rates: free, no API key, about 30 currencies (ADR 0008). |
|
Package httpapi (piece ①) serves the REST API (huma, OpenAPI 3.1), live events (SSE), the MCP endpoint, health checks and the embedded web UI.
|
Package httpapi (piece ①) serves the REST API (huma, OpenAPI 3.1), live events (SSE), the MCP endpoint, health checks and the embedded web UI. |
|
Package i18n holds the languages Exhale speaks and the translations of what chat and the service say (ADR 0023).
|
Package i18n holds the languages Exhale speaks and the translations of what chat and the service say (ADR 0023). |
|
Package importer turns files from other tools into Exhale import items: a Wallos database or export, a spreadsheet saved as CSV, or Exhale's own export.
|
Package importer turns files from other tools into Exhale import items: a Wallos database or export, a spreadsheet saved as CSV, or Exhale's own export. |
|
Package merchant reduces the description a bank writes for a payment to the words that identify who was paid, so "NETFLIX.COM 866-579-7172 CA", "Netflix.com Amsterdam" and a subscription called "Netflix" compare equal.
|
Package merchant reduces the description a bank writes for a payment to the words that identify who was paid, so "NETFLIX.COM 866-579-7172 CA", "Netflix.com Amsterdam" and a subscription called "Netflix" compare equal. |
|
Package money (piece ⑩) represents exact amounts of money in a currency.
|
Package money (piece ⑩) represents exact amounts of money in a currency. |
|
Package netguard keeps HTTP requests to addresses chosen by users (webhook URLs, ntfy servers) away from the server's own machine and network.
|
Package netguard keeps HTTP requests to addresses chosen by users (webhook URLs, ntfy servers) away from the server's own machine and network. |
|
Package oauth is Exhale's own OAuth 2.1 authorization server, the part of the MCP authorization spec that lets a cloud assistant (Claude.ai, ChatGPT, Grok) connect to a person's Exhale by its URL (ADR 0018 milestone 3, ADR 0024).
|
Package oauth is Exhale's own OAuth 2.1 authorization server, the part of the MCP authorization spec that lets a cloud assistant (Claude.ai, ChatGPT, Grok) connect to a person's Exhale by its URL (ADR 0018 milestone 3, ADR 0024). |
|
Package platform (piece ⑮) holds process-level concerns: data directory, logging and supervision of long-running services.
|
Package platform (piece ⑮) holds process-level concerns: data directory, logging and supervision of long-running services. |
|
Package scheduler (piece ⑪) is Exhale's clock.
|
Package scheduler (piece ⑪) is Exhale's clock. |
|
Package store (pieces ⑬ and ⑭) owns the SQLite database: opening it with safe pragmas, running migrations after an automatic backup, and mapping rows to domain types.
|
Package store (pieces ⑬ and ⑭) owns the SQLite database: opening it with safe pragmas, running migrations after an automatic backup, and mapping rows to domain types. |
|
Package testutil holds shared test helpers.
|
Package testutil holds shared test helpers. |
|
Package toolschema turns a use case of the op catalog into the JSON Schema of a model tool.
|
Package toolschema turns a use case of the op catalog into the JSON Schema of a model tool. |
Click to show internal directories.
Click to hide internal directories.