Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 32 additions & 13 deletions authentication/user-management.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -234,28 +234,47 @@ Restore access for a suspended user:
</Step>
</Steps>

### Deleting users
### Removing users

<Warning>
Deleting a user is permanent and cannot be undone. All user data, including connected accounts and activity history, will be removed.
</Warning>
Admins can safely remove a user from the instance via the admin user list at `/admin/users`. The removal flow is designed to prevent accidental lockouts and data loss.

**What happens when a user is removed:**

- The user's account is deactivated immediately, ending any active sessions
- Their financial data (accounts, transactions, holdings) is preserved and remains accessible to other family members
- Any active OAuth tokens and API keys are revoked
- The user can no longer sign in

**Safety checks before removal:**

To delete a user:
- You cannot remove yourself
- You cannot remove the last admin on the instance — promote another user to admin first
- If the user is the sole owner of a family with no other members, you are warned before proceeding

To remove a user:

<Steps>
<Step title="Select user">
Navigate to the user's detail page
<Step title="Navigate to admin users">
Go to `/admin/users`
</Step>
<Step title="Click delete">
Click "Delete User" button

<Step title="Find the user">
Search or scroll to find the user you want to remove
</Step>

<Step title="Confirm deletion">
Type the user's email to confirm deletion

<Step title="Click Remove">
Click the **Remove** action next to the user
</Step>

<Step title="Confirm removal">
Review the confirmation dialog and confirm the action
</Step>
</Steps>

<Note>
Removed users are deactivated, not deleted. Their financial data remains intact. If you need to permanently delete all data for a user, use the family data reset tools.
</Note>

## User security settings

### Connected accounts in user settings
Expand Down
9 changes: 5 additions & 4 deletions docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@
"guides/key-concepts/untitled-page",
"guides/key-concepts/debt-accounts",
"guides/key-concepts/investment-accounts",
"guides/key-concepts/transfers"
"guides/key-concepts/transfers",
"guides/key-concepts/clients"
]
},
{
Expand Down Expand Up @@ -69,17 +70,17 @@
"pages": [
"providers/overview",
"providers/market-data",
"providers/onchain-wallets",
"providers/binance",
"providers/coinbase",
"providers/coinstats",
"providers/enable-banking",
"providers/lunchflow",
"providers/wise",
"providers/simplefin",
"providers/plaid",
"providers/redbark",
"providers/snaptrade",
"providers/binance",
"providers/coinbase",
"providers/coinstats",
"providers/sophtron"
]
},
Expand Down
70 changes: 70 additions & 0 deletions guides/key-concepts/clients.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
---
title: Sure clients
description: Choose the right client for accessing Sure — web, desktop, mobile, MCP, or API.
---

Sure is centered on a Rails server. Every client connects to that server and uses the same accounts, users, authentication rules, and financial data. A client can be a browser, a native app, a mobile app, an automation script, or an LLM agent using Sure's MCP endpoint.

## Client overview

| Client | Best for | Status | Entry point |
| --- | --- | --- | --- |
| Web app | Full everyday use, administration, and self-hosted access from any modern browser | Primary client | Run the Rails app and visit the server URL |
| macOS desktop app | People who want Sure in a native Mac window with system app chrome and deep-link handling | Native shell around the web app | See the desktop README in the repository |
| Mobile app | Basic mobile access on iOS and Android, currently focused on login and account balances | Flutter companion app | See the mobile README in the repository |
| LLM agents and assistants | Claude Desktop, GPT agents, local agents, or custom tools that need structured access to Sure data | MCP endpoint for external AI clients | See [MCP server](/development/mcp) |
| Custom API clients | Scripts, services, importer experiments, dashboards, or other integrations | HTTP API | See the [API reference](/api-reference) |

## Web app

The web app is the complete Sure experience. It is the right default when a person wants to use Sure directly, manage settings, connect providers, review transactions, or work with features that may not yet be available in native clients.

For self-hosting, start with the [Docker hosting guide](/self-hosting). For local development, run the Rails app and visit the local server URL:

```sh
bin/dev
```

Then open `http://localhost:3000` in your browser.

The web app also serves as the surface rendered by the macOS desktop app.

## macOS desktop app

The macOS desktop app is a Tauri 2 shell that renders the full Sure web app in a native Mac window. On first launch, it asks for the Sure server URL, checks the server health endpoint, and then loads the normal sign-in flow.

Use it when someone wants a desktop app experience without a separate desktop data model. It uses the same server, authentication, MFA, and permissions as the browser.

## Mobile app

The mobile app is a Flutter companion app for iOS and Android. It connects to a Sure server through the API and currently focuses on core mobile flows such as authentication and viewing account balances.

Use it when someone needs phone access and the feature set they need is available in the mobile client. For the full application surface, use the web app.

## LLM agents and MCP clients

LLM agents are clients too. Sure exposes a Model Context Protocol endpoint for external assistants and agent runtimes that need structured access to financial data.

Use MCP when a person wants an assistant such as Claude Desktop, a GPT agent, or a custom local agent to query Sure directly instead of copying data into a chat window. MCP access is configured server-side with a bearer token and a specific Sure user email.

Because this gives the assistant read access to that user's family data, treat the MCP token like a production secret and only connect assistants and providers the user trusts.

See [MCP server](/development/mcp) for setup and protocol details.

## Custom API clients

Custom clients can call Sure's HTTP API directly. This is the right path for scripts, services, import experiments, dashboards, and integrations that do not need an MCP-compatible agent interface.

API requests can authenticate with a user-generated `X-Api-Key` header, or with OAuth2 bearer tokens from Sure's Doorkeeper authorization server for registered app clients.

See the [API reference](/api-reference) for available endpoints.

## Choosing a client

- Start with the **web app** when a person needs the complete Sure experience.
- Use the **macOS desktop app** when they want the web app wrapped in a native Mac application.
- Use the **mobile app** for iOS or Android access to supported mobile flows.
- Use **MCP** for LLM agents and assistant runtimes.
- Use the **HTTP API** for custom software integrations.

All clients connect to a Sure server the user controls or trusts. Native, mobile, API, and MCP clients do not replace the server — they are different ways to access it.
6 changes: 6 additions & 0 deletions providers/enable-banking.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,12 @@ When syncing transactions from Enable Banking, Sure automatically detects certai

See [transfers](/guides/key-concepts/transfers) for more details on how transfer types affect budgets.

### Transaction name cleanup

For banks that return remittance information as a multi-line array (common with Austrian and German banks such as BankDirekt/Raiffeisen), Sure automatically selects the most descriptive line as the transaction name. Technical terminal descriptor lines — such as `POS 45,13 AT D6 31.07. 10:27` — are skipped in favour of the actual merchant name.

Sure also strips known small-merchant payment-processor prefixes (SumUp, Square, iZettle, PayPal) from the selected line, and matches the transaction against your family's known merchants for a cleaner display name.

### Duplicate transaction handling

Enable Banking includes robust content-based deduplication to prevent API-level duplicate transactions:
Expand Down
Loading