Skip to content

Live demo

Try the wallet your users would see.

A browser-only simulation of login and wallet flows. No real keys or signatures are created, and the configuration preview is not accepted by the current SDK.


Playground

Acme Markets
Simulation

Nothing leaves your browser. Keys, signatures and receipts are generated locally from demo material; no enclave is contacted.

Event log

0 / 8
  1. Waiting for the first event. Start the flow in the wallet above.

SDK integration

Start with the current SDK.

The current SDK loads a bridge and accepts a sealed client session from your backend. Authentication and the controls in this demo are not SDK options yet.

This example uses @sigcore/sdk 2.5.1. Supply your real publishable key and implement the authenticated backend route shown in the comments. The SDK does not authenticate users today; your backend must verify the live user with independent TrustCore Auth before creating a Sigcore wallet session.

sigcore.ts
import { loadSigcore } from "@sigcore/sdk";

// Run in a Next.js client component with your publishable key.
const key = process.env.NEXT_PUBLIC_SIGCORE_PUBLISHABLE_KEY;
if (!key) throw new Error("Missing Sigcore publishable key");
const sigcore = await loadSigcore(key);
const receiverKey = sigcore.client.getIframeReceiverKey();
if (!receiverKey) throw new Error("This bridge cannot receive sealed sessions");

// Implement this route on your backend. It must verify the signed-in user,
// mint a user-bound Sigcore session, and seal the secret to receiverKey.
const response = await fetch("/api/sigcore/session", {
  method: "POST",
  headers: { "content-type": "application/json" },
  credentials: "same-origin",
  body: JSON.stringify({ receiverKey }),
});
if (!response.ok) throw new Error("Could not create a Sigcore session");
const { envelope } = await response.json();
await sigcore.client.setClientSession(envelope);

Proposed configuration preview

This reflects the controls you tried above. It is illustrative, not an accepted loadSigcore() options object. TrustCore Auth owns one login-method policy per organisation and the registered login origins. Sigcore enforces wallet scopes, approval thresholds and spending limits on the server. These controls only change this demo.

proposed-config.ts
// Proposed configuration preview — not supported by @sigcore/sdk 2.5.1
const proposedConfig = {
  appName: "Acme Markets",
  locale: "en",
  legal: {
    termsUrl: "https://example.com/terms",
    privacyUrl: "https://example.com/privacy",
  },
  loginMethods: ["passkey","email","google"],
  chains: ["ethereum","base","polygon","solana"],
  defaultChain: "ethereum",
  appearance: {
    theme: "system",
    colors: {
      light: { accent: "#2171ec" },
      dark: { accent: "#2171ec" },
    },
    logoText: "Acme",
    radius: "lg",
    fontFamily: "sans",
    showPoweredBy: true,
  },
  policy: {
    dailyLimitUsd: 2000,
    requireApprovalAboveUsd: 1000,
  },
} as const

What's real here

A faithful rehearsal, not a live wallet.

The demo illustrates a possible experience without authenticating a user or contacting an enclave.

Simulated

Keys, signatures and receipts.

Generated in your browser from demo material. No enclave is contacted, nothing is stored on a server, and the attestation values are sample data.

Illustrative

A preview of the flow.

Login, wallet creation, signatures and policy rulings are simulated. The controls here do not configure a live tenant or enforce server policy.

  • ALLOW
  • REQUIRE_APPROVAL
  • REQUIRE_DELAY
  • DENY

Next

Integrate the current SDK.

Use @sigcore/sdk with a publishable key and a backend-issued sealed wallet session. TrustCore Auth is the independent identity service. SDK 2.5.1 supports hosted login with Auth 0.1.2 and a configured customer backend. Compatible deployed services are required; the demo configuration object remains a simulation.


Start your wallet integration.

Create an account to get a publishable key and a test organisation, then create your first wallet from the quick start.