Legal

Terms of Service

Last updated: 2026-07-06

These terms govern your use of the Noesa desktop app and its hosted proxy service. They are written to match what the software actually does; where a term maps to enforced behavior, the code path is cited. See also the Privacy Policy and the Network Activity Inventory.

Provider: Moritz Wallawitsch and Arne Strickmann (see repository LICENSE).
Governing law and jurisdiction: owner to specify before release.

1. The service

Noesa records your activity on your device, performs on-device OCR, and can optionally use a cloud AI model to synthesize sessions and attribute activity to projects. When you use cloud AI, the app sends derived text to a key-custody proxy (the "Service") that forwards it to an upstream AI provider on your behalf. The Service exposes exactly the endpoints listed in network-activity and nothing else (worker/src/config.ts ROUTES; worker/src/index.ts router).

2. Plans and usage limits

  • Free tier. Access is metered per device. The concrete limits are configuration constants in worker/src/config.ts (FREE_TIER): a daily token budget (dailyTokenBudget), and best-effort rate limits of perMinuteRequests per identity and perMinuteRequestsPerIp per IP. The daily budget is enforced strongly per server UTC day (worker/src/budget.ts; utcDay() in worker/src/proxy.ts). Exceeding it returns 402 free_budget_exhausted; exceeding a rate limit returns 429 rate_limited (worker/src/proxy.ts, worker/src/ratelimit.ts).
  • Paid tier. A valid license key (X-Noesa-License) lifts you off the free meter, validated against the license cache (handleLicenseValidate, worker/src/endpoints.ts; authenticate, worker/src/auth.ts).
  • Allowed models. Only models in MODEL_ALLOWLIST (worker/src/config.ts) are proxied; others return 403 model_not_allowed.

We may adjust these limits (they are one-line config changes) with notice via the changelog.

3. Billing (current status)

The billing webhook that grants/revokes licenses is a provider-shaped placeholder pending the owner's choice of billing provider (Stripe vs Lemon Squeezy), documented in docs/goals/native-ui-trust-backend-decisions.md (§9) and worker/src/webhook.ts. Paid plans are not generally available until that decision is finalized and a provider is live. Nothing in these terms obligates payment for functionality that is not yet offered.

4. Your alternatives to the hosted Service

You are never required to use our Service to run Noesa:

  • Bring Your Own Key (BYOK). Configure your own OPENROUTER_BASE_URL and OPENROUTER_API_KEY (desktop/app/Sources/NoesaKit/Synthesis/ProviderClient.swift) to talk directly to your chosen provider. Our Service is bypassed and these Terms' Service-specific sections (2, 3) do not apply to that traffic; your provider's terms do.
  • Local model / Offline. Point BYO-endpoint at a local model (e.g. http://localhost:11434/v1) so inference stays on your machine, or use the per-session Offline toggle to hard-stop egress and fall back to the on-device rollup. Nothing egresses off-device.

5. Acceptable use

You agree not to:

  • attempt to bypass the model or path allowlists, the identity checks, or the rate/budget limits (worker/src/config.ts, worker/src/auth.ts, worker/src/ratelimit.ts, worker/src/budget.ts);
  • forge or share license keys or device identifiers;
  • use the Service to transmit content you are not permitted to send to a third-party AI provider; or
  • use the Service to violate applicable law or a third party's rights.

You are responsible for the derived text you choose to send to cloud AI. The proxy does not inspect, filter, or store that content (worker/src/proxy.ts), so redaction is your responsibility before opting into cloud features.

6. AI output disclaimer

Cloud AI produces synthesized summaries and project attributions that may be inaccurate, incomplete, or misleading. Treat them as suggestions, not authoritative records. You are responsible for reviewing outputs before relying on them for billing, reporting, or any decision.

7. Software license and open source

The Noesa Worker (the Service's source) is provided under the MIT License (repository LICENSE) and is intended to be open-sourced so its privacy properties can be independently verified. Your use of the app itself is subject to that same LICENSE unless a separate agreement applies.

8. Release integrity

Release builds are intended to be code-signed and notarized (macOS Developer ID plus notarization; Windows code-signing). These ship-gating steps are tracked in docs/goals/native-ui-trust-backend-decisions.md (under "Owner-held prerequisites"). Do not run builds obtained from unofficial sources.

9. Warranty disclaimer and limitation of liability

THE SOFTWARE AND SERVICE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, as stated in the MIT LICENSE. To the maximum extent permitted by law, the providers are not liable for any indirect, incidental, or consequential damages, or for lost data or profits, arising from your use of the app or Service. The Service depends on third parties (Cloudflare, the upstream AI provider); we do not warrant their availability.

10. Suspension

We may rate-limit, throttle, or suspend access that abuses the Service or exceeds the limits in §2 (enforced automatically in worker/src/ratelimit.ts and worker/src/budget.ts).

11. Changes to these terms

We may update these terms; material changes will be noted in the changelog and this file's "Last updated" date. Continued use after a change constitutes acceptance.

12. Contact

Use the contact address published with the Privacy Policy. (Owner to supply before release.)