Documentation
Overview
CommitLabs turns passive liquidity into enforceable commitments. Instead of depositing into an open-ended pool, you define the terms up front (amount, lock duration, the loss you tolerate, and the penalty for leaving early) and a Soroban smart contract on Stellar enforces them. The web app guides you through creating a commitment and tracking it until maturity.
Core concepts
- Commitment: a record of principal, duration, risk limits and penalty.
- Maturity: the timestamp at which the lock ends and the commitment can be settled in full.
- Max loss: the drawdown the owner accepts. Exceeding it is a violation that can be attested.
- Early exit penalty: the percentage of principal forfeited when leaving before maturity.
- Attestation: an on-chain event that records compliance or violation.
Commitment lifecycle
- Create: choose a type, asset, amount and duration on the Create page and review the terms.
- Active: funds are locked. Progress and time to maturity show on the Dashboard.
- Matured: the lock has ended. Settle to receive principal plus yield.
- Settled / Exited: terminal states. Early exit applies the stated penalty.
Commitment types
| Type | Target APY | Max loss | Early exit penalty | Min lock |
|---|---|---|---|---|
| Safe | 4.5% | 2% | 3% | 7 days |
| Balanced | 9% | 8% | 5% | 14 days |
| Aggressive | 16% | 20% | 8% | 30 days |
Contracts
Network: Stellar testnet. Contract source lives in the repository under contracts/.
| Contract | Address |
|---|---|
| Escrow | CBPNVNWDFZOUNB6REHBPGU2DRP4AJSVS7QJ3SEOUIDBTW6DZEHQKJ5E4 |
Run locally
git clone https://github.com/Commitlabs-Org/Commitlabs-Frontend.git
cd Commitlabs-Frontend
npm install
cp .env.example .env.local
npm run dev # http://localhost:3000Environment variables
| Name | Default | Purpose |
|---|---|---|
NEXT_PUBLIC_STELLAR_NETWORK | testnet | Network label |
NEXT_PUBLIC_HORIZON_URL | horizon-testnet.stellar.org | Wallet balance lookups |
NEXT_PUBLIC_SOROBAN_RPC_URL | soroban-testnet.stellar.org | Soroban RPC endpoint |
NEXT_PUBLIC_ESCROW_CONTRACT_ID | empty | Deployed escrow contract address |
FAQ
Do I need a wallet?
No. Wallet connection through Freighter is optional and only adds your testnet balance. If the extension is missing the app keeps working in demo mode.
Where are my commitments stored?
In demo mode they are stored in your browser's local storage. Nothing is sent to a server.
Is this mainnet?
No. Everything targets Stellar testnet and uses test funds only.