ray-finance 0.3.4 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -16
- package/dist/cli/setup.js +1 -1
- package/dist/server.js +9 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
6
|
-
An open-source
|
|
6
|
+
An open-source AI financial advisor that learns your situation and gets smarter every conversation.
|
|
7
7
|
</p>
|
|
8
8
|
|
|
9
9
|
<p align="center">
|
|
@@ -15,26 +15,37 @@
|
|
|
15
15
|
<br />
|
|
16
16
|
|
|
17
17
|
<p align="center">
|
|
18
|
-
<img src=".github/ray-demo.png" alt="Ray demo" />
|
|
18
|
+
<img src=".github/ray-demo.png" alt="Ray demo" width="100%" />
|
|
19
19
|
</p>
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
Tell Ray about your family, goals, and financial strategy once. From then on, every answer is grounded in your real situation — not generic advice. It connects to your bank, tracks your net worth and spending, and gives you a financial briefing before you type a word. Open source. Local-first. Encrypted.
|
|
22
22
|
|
|
23
23
|
## Features
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
- **
|
|
28
|
-
- **
|
|
29
|
-
- **
|
|
30
|
-
|
|
25
|
+
### It gets smarter every conversation
|
|
26
|
+
|
|
27
|
+
- **Your situation, always loaded** — Every conversation starts with your financial profile: family, income, goals, strategy, key decisions, and open items. Ray reads it all before you type a word.
|
|
28
|
+
- **Self-updating context** — Got a raise? Had a baby? Decided to pay off debt aggressively? Ray updates your profile automatically when your situation changes.
|
|
29
|
+
- **Long-term memory** — Mention you're saving for a house or that you cancelled a subscription. Ray remembers across every future conversation.
|
|
30
|
+
|
|
31
|
+
### Stay on track without trying
|
|
32
|
+
|
|
31
33
|
- **CFO personality** — Ray doesn't list options. It tells you what it would do and why, references your goals, and flags problems you haven't noticed yet.
|
|
32
|
-
- **
|
|
34
|
+
- **Daily scoring** — A 0-100 behavior score with streaks and 14 unlockable achievements. No restaurants for a week? That's Kitchen Hero. Five zero-spend days? Monk Mode.
|
|
35
|
+
- **Budgets and goals** — Track spending limits by category and progress toward financial goals.
|
|
36
|
+
- **Smart alerts** — Large transactions, low balances, budget overruns.
|
|
37
|
+
|
|
38
|
+
### Your data never leaves your machine
|
|
39
|
+
|
|
40
|
+
- **Encrypted local database** — All data stays on your machine in an AES-256 encrypted SQLite database.
|
|
33
41
|
- **PII masking** — Names, account numbers, and identifying details are scrubbed before anything reaches the AI. Your data is analyzed, not exposed.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
- **
|
|
42
|
+
|
|
43
|
+
### Set it and forget it
|
|
44
|
+
|
|
45
|
+
- **Bank sync via Plaid** — Connect checking, savings, credit cards, investments, and loans.
|
|
46
|
+
- **Scheduled daily sync** — Automatic bank sync via launchd (macOS) or cron (Linux).
|
|
47
|
+
- **Auto-recategorization** — Define rules to automatically re-label transactions.
|
|
48
|
+
- **Export/import** — Back up and restore your financial data.
|
|
38
49
|
|
|
39
50
|
## Install
|
|
40
51
|
|
|
@@ -70,7 +81,7 @@ ray setup
|
|
|
70
81
|
|
|
71
82
|
The setup wizard offers two modes:
|
|
72
83
|
|
|
73
|
-
###
|
|
84
|
+
### Pro (quick setup)
|
|
74
85
|
|
|
75
86
|
We handle the API keys. Your data stays local. $10/mo.
|
|
76
87
|
|
|
@@ -79,7 +90,7 @@ We handle the API keys. Your data stays local. $10/mo.
|
|
|
79
90
|
3. Link your accounts — checking, savings, credit cards, investments, loans, mortgage
|
|
80
91
|
4. Done — daily sync auto-scheduled at 6am
|
|
81
92
|
|
|
82
|
-
###
|
|
93
|
+
### Bring your own keys
|
|
83
94
|
|
|
84
95
|
Bring your own Anthropic and Plaid credentials. Free forever.
|
|
85
96
|
|
|
@@ -99,17 +110,24 @@ Run `ray --help` to see all available commands.
|
|
|
99
110
|
| `ray --demo <cmd>` | Run any command against demo data |
|
|
100
111
|
| `ray setup` | Configure API keys and preferences |
|
|
101
112
|
| `ray link` | Connect a new bank account |
|
|
113
|
+
| `ray add` | Add a manual account (home, car, crypto, etc.) |
|
|
114
|
+
| `ray remove` | Remove a manual account |
|
|
102
115
|
| `ray sync` | Pull latest transactions and balances |
|
|
103
116
|
| `ray status` | Quick financial dashboard |
|
|
117
|
+
| `ray accounts` | Linked accounts with balances |
|
|
104
118
|
| `ray transactions` | Recent transactions (filterable by category, merchant) |
|
|
105
119
|
| `ray spending [period]` | Spending breakdown by category |
|
|
106
120
|
| `ray budgets` | Budget status and overruns |
|
|
107
121
|
| `ray goals` | Financial goal progress |
|
|
122
|
+
| `ray bills` | Upcoming bills |
|
|
123
|
+
| `ray recap [period]` | Monthly spending recap |
|
|
108
124
|
| `ray score` | Daily score, streaks, and achievements |
|
|
109
125
|
| `ray alerts` | Active financial alerts |
|
|
110
126
|
| `ray export [path]` | Export data to a backup file |
|
|
111
127
|
| `ray import <path>` | Restore from a backup file |
|
|
112
128
|
| `ray billing` | Manage your Ray subscription (managed mode only) |
|
|
129
|
+
| `ray update` | Update Ray to the latest version |
|
|
130
|
+
| `ray doctor` | Check system health |
|
|
113
131
|
|
|
114
132
|
## How It Works
|
|
115
133
|
|
package/dist/cli/setup.js
CHANGED
|
@@ -31,7 +31,7 @@ export async function runSetup() {
|
|
|
31
31
|
message: "How would you like to set up Ray?",
|
|
32
32
|
choices: [
|
|
33
33
|
{ name: "Quick setup — we handle the API keys, your data stays local", value: "managed" },
|
|
34
|
-
{ name: "
|
|
34
|
+
{ name: "Bring your own keys — use your own Anthropic and Plaid credentials", value: "selfhosted" },
|
|
35
35
|
],
|
|
36
36
|
}]);
|
|
37
37
|
let canLink = false;
|
package/dist/server.js
CHANGED
|
@@ -75,7 +75,15 @@ export function startLinkServer() {
|
|
|
75
75
|
}
|
|
76
76
|
catch (error) {
|
|
77
77
|
console.error("Link token error:", error.message);
|
|
78
|
-
|
|
78
|
+
const plaidStatus = error?.response?.status;
|
|
79
|
+
if (plaidStatus === 400 || plaidStatus === 401 || plaidStatus === 403) {
|
|
80
|
+
res.status(500).json({
|
|
81
|
+
error: "Plaid credentials error — make sure you're using production (not sandbox) keys. Check PLAID_CLIENT_ID and PLAID_SECRET in ~/.ray/config.json.",
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
res.status(500).json({ error: "Failed to create link token: " + (error.message || "unknown error") });
|
|
86
|
+
}
|
|
79
87
|
}
|
|
80
88
|
});
|
|
81
89
|
// Exchange public token
|