Smasage is a next-generation personal savings agent built natively on the Stellar blockchain. It doesn't just store your money—it actively invests to help you reach your financial goals faster through an intelligent, conversational interface powered by OpenClaw.
- Interactive Goal Setting: Chat with OpenClaw to define your financial goals, income, and risk tolerance.
- Smart Investment Allocation: Automatically distributes savings across:
- AAVE/Blend: For stable, low-risk yield.
- Soroswap LPs: For higher returns through liquidity provision.
- Tether Gold (XAUT): As a reliable inflation hedge.
- Dynamic Monitoring: The agent continuously monitors your portfolio and suggests strategy adjustments based on market conditions and your goal timeline.
- Premium User Experience: A sleek, modern dashboard built with Next.js and Vanilla CSS.
- Frontend: Next.js (TypeScript, Vanilla CSS)
- AI Agent: OpenClaw Framework (Node.js)
- Smart Contracts: Soroban (Rust)
- Protocols: Stellar DEX, Blend, Soroswap
- Node.js (v20+)
- Rust & Soroban CLI
- Freighter Wallet extension
-
Clone the repository:
git clone https://github.com/your-username/smasage.git cd smasage -
Setup the Frontend:
cd frontend npm install npm run dev -
Setup the Agent (in a separate terminal):
cd agent npm install npm start -
Build the Contracts:
cd contracts cargo build --target wasm32-unknown-unknown
The frontend (Next.js dev server) and agent (Node.js) can run simultaneously for local development:
-
Open two terminals in the project root.
-
In the first terminal, navigate to the frontend and start the dev server:
cd frontend npm run devThe frontend will be available at http://localhost:3000.
-
In the second terminal, navigate to the agent and start it:
cd agent npm startThe agent will be available at the configured NOTIFICATION_PORT (default: 3001).
Both services will automatically reload on file changes during development.
Each component of Smasage uses environment variables configured via .env files. See below for the required and optional variables per component.
Applied globally to both frontend and agent unless overridden locally.
| Variable | Type | Default | Description |
|---|---|---|---|
GEMINI_API_KEY |
string | (required) | API key for Gemini AI service |
NOTIFICATION_PORT |
number | 3001 | WebSocket server port for notifications |
SOROBAN_RPC_URL |
string | https://soroban-test.stellar.org | Soroban RPC endpoint |
SMASAGE_CONTRACT_ID |
string | (optional) | Smasage contract ID on Stellar |
Frontend-specific variables (prefixed with NEXT_PUBLIC_ to expose to the browser).
| Variable | Type | Default | Description |
|---|---|---|---|
NEXT_PUBLIC_WS_URL |
string | ws://localhost:3001 | WebSocket URL for agent communication |
NEXT_PUBLIC_ENABLE_NOTIFICATIONS |
boolean | true | Enable notification features |
NEXT_PUBLIC_PROACTIVE_NUDGES |
boolean | true | Enable proactive financial nudges |
Backend agent-specific configuration.
| Variable | Type | Default | Description |
|---|---|---|---|
GEMINI_API_KEY |
string | (required) | API key for Gemini AI service |
NOTIFICATION_PORT |
number | 3001 | Port for WebSocket notification server |
SOROBAN_RPC_URL |
string | https://soroban-test.stellar.org | Soroban RPC endpoint |
SMASAGE_CONTRACT_ID |
string | (optional) | Smasage contract ID on Stellar |
The Contracts component uses build-time configuration via Cargo.toml. No .env file is required for local development.
-
Copy
.env.exampleto.envin the project root:cp .env.example .env
-
Update the following required variables in
.env:GEMINI_API_KEY: Obtain from your Gemini API dashboard
-
(Optional) If running frontend and agent separately, create
.env.localfiles in each directory with component-specific overrides. -
Never commit
.envfiles containing secrets. Use.env.exampleto document the expected variables.
Our development is tracked via a detailed issue list. Key upcoming milestones include:
- Wallet integration (Freighter/Stellar SDK)
- Real-time portfolio indexing
- Automated rebalancing logic
- Enhanced conversational flow
See issues.md for a full breakdown of tasks.
We welcome contributions from the community! Whether you're a frontend wizard, a Rust expert, or an AI enthusiast, there's a place for you at Smasage.
Please read our CONTRIBUTING.md for guidelines on how to get started.
Smasage is open-source software licensed under the MIT License.