Exchange
Log inSign up
NewWorkspaces with members and roles

Trade on Alpaca without the noise.

A quiet trading desk for your Alpaca account. Trade on your own, or share a workspace with your team and decide what each person can do.

Bring your own Alpaca keys. Start on paper.

NVDANVIDIA+3.12%
$182.6440 shares
SPYSPDR S&P 500+0.87%
$612.4012 shares

Your balance, positions and orders. All on one calm screen.

The balance is the biggest thing on the page and updates in place. Everything else stays out of its way.

Trade on your own. Or bring your whole desk.

Every account starts with a personal workspace. When you want company, invite people in, choose what each one can do and see everything they did.

On your own

Your keys, your positions, your rules. A private desk that only you can open, on your phone or at your desk.

  • PersonalJust you · 2 connections
  • Ridge Capital4 members · 3 connections
  • Paper and live accounts side by side
  • Name every Alpaca key set you own
  • Nobody else sees your balance

With your team

Share a workspace with a partner, a club or a small fund. Give a new teammate paper-only access while they learn.

  • Ana RuizEverything, including deleting the workspace.Owner
  • Marco LeeTrades, invites people, manages keys and members.Admin
  • Sam PatelTrades on paper connections only.Paper member
  • Jo KimSees balances, orders and history.Viewer

Activity

  • Ana bought 12 NVDA10:42
  • Sam placed a paper limit on SPY10:15
  • Marco invited Jo as a viewer09:58

Everything a self-directed desk needs. Nothing you don't.

Exchange sits on top of the Alpaca account you already have and keeps the parts you use every day close at hand.

  • Trade together

    Invite a partner, a club or your whole fund into one workspace. Everyone watches the same balance, and each person only does what their role allows.

    • Ana Ruiz, Owner
    • Marco Lee, Admin
    • Sam Patel, Paper member
    • Jo Kim, Viewer
    4 members
    • Owner
    • Admin
    • Member
    • Paper member
    • Viewer
  • Paper and live, side by side

    Practice on a paper account, then trade live from the same screen. Live orders always ask before they go out.

    PaperLive
  • Name every key set

    Add as many Alpaca connections as you need, give each a name and switch between them in one tap.

    • Long-term
    • Swing
    • Paper test
  • Prices that move as they tick

    Live prices flash as they change and your balance rolls over digit by digit, so updates read as motion instead of flicker.

    NVDA $182.64

  • On your phone and at your desk

    Check positions from a tab bar on your phone during the day, then trade from the full screen on your desktop.

Your keys go in. They never come back out.

Alpaca keys are encrypted the moment you save them and stay on the server. The browser only ever sees a masked key and whether it still works.

Encryption for every saved key
AES-256-GCM
Where your orders are signed
Server only
Times a secret reaches your browser
Never

You don't have to trust us. Read the code.

Exchange is fully open source. Every line that touches your keys and your orders is public on GitHub, so you can check how keys are encrypted, open an issue or run your own copy.

View on GitHub
/** * Encrypts a secret with AES-256-GCM. * Stored form: `v1:<keyId>:<iv>:<tag>:<ciphertext>`, each binary part base64url. */export function encryptSecret(input: EncryptSecretInput): string {  const encryptionKey = input.keys[0]  if (!encryptionKey) {    throw new Error('No encryption key is configured.')  }  const iv = randomBytes(IV_BYTES)  const cipher = createCipheriv('aes-256-gcm', encryptionKey.key, iv)  cipher.setAAD(Buffer.from(input.aad, 'utf8'))  const ciphertext = Buffer.concat([    cipher.update(input.plaintext, 'utf8'),    cipher.final(),  ])  const tag = cipher.getAuthTag()

Self-host it

Run Exchange on your own server, with your own database and your own encryption keys. Your Alpaca keys never leave a machine you control.

Read the full setup guide
  1. 1

    Clone and install

    git clone https://github.com/jralvarenga/exchangecd exchange && bun install

    Bun runs the whole monorepo.

  2. 2

    Make your own keys

    cp apps/web/.env.sample apps/web/.env.localbun run auth:secrets

    Paste the auth secret and encryption keys it prints into .env.local.

  3. 3

    Start the database

    docker compose up -dbun run db:migrate

    Or point DATABASE_URL at any Postgres you already run.

  4. 4

    Run it behind HTTPS

    bun run buildbun run --filter web start

    It listens on 127.0.0.1:3000. Put Caddy in front for HTTPS and set BETTER_AUTH_URL in .env.local to that https:// address.

We're open to collaborations

Found a bug, want a feature or want to build something on top of Exchange? Open an issue, send a pull request or reach out on GitHub. Every contribution is welcome.

Start on paper today. Go live when you're ready.

Create an account, add your Alpaca paper keys and place your first order in a few minutes.