Skip to content

stellar-agent-registry/stellar-multisig-ui

Repository files navigation

stellar-multisig-ui

Open-source, self-hostable UI for coordinating multi-signature transactions on Stellar. The coordination layer the ecosystem has been asking for since 2018.

Deploy with Vercel License: MIT SEP-0021


The Problem

Multi-signature account setup is directly supported by Stellar Core, but coordinating the multiple involved parties is left entirely to wallet and service developers. That was noted as a gap in SEP-0021 (drafted 2018). It is 2026 and the community still has no open-source, self-hostable UI for this.

DAOs, treasuries, and institutional wallets on Stellar are doing this manually or building it from scratch every time.

This project ships what the ecosystem has been asking for.


What It Does

Create proposal → Share link → Co-signers sign with Freighter → Auto-submits at threshold
  • Web App — Next.js UI deployable to Vercel in one click
  • TypeScript SDK@stellar-multisig/sdk for programmatic integration
  • Freighter — native wallet integration, no seed phrases ever touch the server
  • No lock-in — self-hostable, MIT licensed, no vendor dependency

Quick Start

Deploy (Vercel)

Deploy with Vercel

Run locally

git clone https://github.com/stellar-multisig-ui/stellar-multisig-ui
cd stellar-multisig-ui
pnpm install
pnpm dev

Open http://localhost:3000

SDK

npm install @stellar-multisig/sdk
import { MultisigSDK } from '@stellar-multisig/sdk';

const multisig = new MultisigSDK({
  apiUrl: 'https://your-app.vercel.app/api',
  network: 'testnet',
});

// Create a proposal
const proposal = await multisig.propose({
  transactionXdr: tx.toXDR(),
  description: 'Q1 treasury distribution — 10,000 USDC to ops wallet',
});

// Each co-signer signs via the UI, then:
if (multisig.isReady(proposal)) {
  const result = await multisig.submit(proposal);
  console.log(result.txHash);
}

Architecture

stellar-multisig-ui/
├── apps/
│   └── web/                    # Next.js 14 App Router
│       ├── app/
│       │   ├── page.tsx        # Landing page
│       │   ├── create/         # Create proposal flow
│       │   ├── dashboard/      # Proposal list
│       │   ├── proposal/[id]/  # Proposal detail + sign
│       │   └── api/            # REST API routes
│       └── components/
│           ├── proposal/       # Proposal UI components
│           ├── wallet/         # Freighter integration
│           └── ui/             # Shared UI
└── packages/
    └── sdk/                    # @stellar-multisig/sdk
        └── src/
            ├── sdk.ts          # Core SDK class
            └── types.ts        # TypeScript types

Proposal lifecycle:

pending → collecting → ready → submitted
                    ↘ expired
                    ↘ failed

API Reference

Method Endpoint Description
POST /api/proposals Create a new proposal
GET /api/proposals List all proposals
GET /api/proposals?account=G... Filter by account
GET /api/proposals/:id Get proposal by ID
POST /api/proposals/:id/signatures Add a co-signer's signature
GET /api/health Health check

Storage

By default, proposals are stored in-memory (suitable for testing). For production:

  1. Vercel KV (recommended for Vercel deploys) — add REDIS_URL env var
  2. Upstash Redis — any Redis-compatible store
  3. Supabase — PostgreSQL via REST API

See docs/storage.md for configuration.


SEP-0021 Compliance

This project implements the coordination layer described in SEP-0021:

  • ✅ Transaction proposal creation
  • ✅ Co-signer discovery from account signers
  • ✅ Signature collection and weight tracking
  • ✅ Automatic submission at threshold
  • ✅ Shareable proposal URLs
  • 🚧 Soroban on-chain coordination (in progress)
  • 🚧 SEP-0010 auth for private proposals

Contributing

PRs welcome. See CONTRIBUTING.md.

Issues for planned work: see the project board.


License

MIT — see LICENSE

About

Open-source multi-signature transaction coordinator for Stellar — the coordination layer the ecosystem has been asking for since 2018

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors