Open Net Worth
Open Net Worth is an open-source personal AI wealth assistant you run yourself: one ledger for your whole financial life, worked by an AI agent you control.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
Split bills & collect payments on Arc Testnet. Social sign-in provisions Circle USDC wallets. Bridge USDC from Avalanche/Base/Ethereum/Arbitrum/Optimism/Polygon via CCTP, or pay directly via Gateway. Autonomous agents: Scout scans receipts over x402, user-funded autopay settles debts as ERC-8183 jobs.
翻訳待ち
Loading the full README. The saved excerpt is shown below.
Splitsy is a Next.js prototype for splitting shared costs and collecting them in
USDC on Arc. You can state a debt in one sentence, scan a
receipt into a full split, or set up a tab that repeats — and settle any of it
from a wallet you get by signing in with X, Discord, Google, or an email code.
It runs on Arc Testnet with test USDC. One variable
(NEXT_PUBLIC_ARC_NETWORK=mainnet) moves a deployment to Arc mainnet; nothing in
this repo asserts that flip has happened, and it has not. See
Networks.Read the full README ↗Splitsy is a Next.js prototype for splitting shared costs and collecting them in USDC on Arc. You can state a debt in one sentence, scan a receipt into a full split, or set up a tab that repeats — and settle any of it from a wallet you get by signing in with X, Discord, Google, or an email code.
It runs on Arc Testnet with test USDC. One variable
(NEXT_PUBLIC_ARC_NETWORK=mainnet) moves a deployment to Arc mainnet; nothing in
this repo asserts that flip has happened, and it has not. Every network-dependent
word on the site follows the same switch as the addresses — ARC_LABEL,
USDC_LABEL and MONEY_NOTE in lib/arc-chain.ts — so the flip changes "Arc
Testnet · no real funds" into "Arc · real USDC" everywhere at once rather than
leaving the risk disclosure behind. See Networks.
What it does:
claim only ever pays
the wallet that created the bill.HandleEscrow instead of nowhere. Their first sign-in
releases it to the wallet they actually sign in with; until then the depositor
can take it back with reclaim.settle call.NEXT_PUBLIC_ARC_NETWORK is the only Arc switch, and the match is exact: only
the literal string mainnet selects mainnet, so a typo, a capitalised value or
an unset variable all land on testnet, where being wrong is free
(resolveArcProfile, lib/arc-chain.ts).
| Arc Testnet (default) | Arc mainnet | |
|---|---|---|
NEXT_PUBLIC_ARC_NETWORK | unset, or anything but mainnet | mainnet |
| Chain id | 5042002 | 5042 |
| RPC | https://rpc.testnet.arc.io | https://rpc.mainnet.arc.io |
| Explorer | https://testnet.arcscan.app | https://explorer.arc.io |
| USDC | 0x3600…0000 | 0x3600…0000 (the same) |
| Money | test USDC, no value | real USDC |
Chain id, RPC, explorer, USDC and the two Gateway addresses all follow from that one switch and are no longer settable one by one.
Deployment addresses are not properties of a chain, so they are not in
lib/arc-chain.ts. They follow the switch by a naming rule instead: the
unsuffixed variable is the testnet slot, and a _MAINNET twin is the
mainnet slot (forArcNetwork()). So a testnet deployment needs nothing renamed,
mainnet is configured by adding variables rather than editing them, and both
sets can sit there fully populated with one variable deciding which is live.
Mainnet never falls back to the testnet slot. A _MAINNET address left unset
resolves to the zero address, which every consumer already reads as "not
configured" and refuses on (isBillRegistryConfigured(),
isHandleEscrowConfigured(), isMandateConfigured()). Quietly using a testnet
address on chain 5042 is the exact failure that rule exists to stop.
One thing mainnet does not have, and it is not a bug:
AgenticCommerce is absent, so NEXT_PUBLIC_AGENTIC_COMMERCE_ADDRESS
stays unset there, isJobsConfigured() is false, and the job-market half of
autopay is off.x402 batching used to be the second one, and no longer is.
@circle-fin/x402-batching shipped exactly one Arc entry, arcTestnet, so
getScoutGateway() and getSettlerGateway() refused on mainnet rather than
batching real-money nanopayments onto a test chain. Version 3.5.0 added arc to
both CHAIN_CONFIGS and GATEWAY_DOMAINS, so the chain now follows
ARC.x402Chain and Scout runs on whichever network the deployment is on.
ERC-8004 is live on both networks, at different addresses, and is opt-in on both (see Payment Reputation).
docs/deployments.md is the operational companion to this section: which host
runs which arrangement, and everything about it that is done by hand.
Two wallet stacks live in one repo, selected per deployment rather than per user.
WALLET_PROVIDER decides who holds the wallet; WALLET_UI decides who
asks the user to approve a payment. Both match exactly and both default to the
older stack, so a typo or an unset variable in a new environment can only ever
land on the Circle path.
WALLET_PROVIDER=privy + WALLET_UI=privy | unset (Circle) | |
|---|---|---|
| Wallet | Privy embedded wallet, an EOA the user owns from creation | Circle developer-controlled wallet (SCA) |
| Login door | Privy's modal (X, Discord, Google, email) | Splitsy's own OAuth routes |
| Approving a payment | Privy's confirmation prompt, per transaction | a PIN that unlocks sends for five minutes |
| Settle net | 1 approve + 1 settle | 1 atomic executeBatch |
| Key export / claim ceremony | not applicable — it is already the user's | WALLET_CLAIM_ENABLED, off by default |
This is the beginning of the README. Read the rest at the original. Read the full README ↗