Skip to content

Add Cavos to the wallet-integration kit list - #8

Open
adrianvrj wants to merge 2 commits into
stellar:mainfrom
adrianvrj:add-cavos-wallet-integration
Open

Add Cavos to the wallet-integration kit list#8
adrianvrj wants to merge 2 commits into
stellar:mainfrom
adrianvrj:add-cavos-wallet-integration

Conversation

@adrianvrj

Copy link
Copy Markdown

Summary

Adds Cavos to the wallet-integration guides as a fourth approach alongside Freighter, Stellar Wallets Kit, and Smart Account Kit.

Cavos is a device-native embedded self-custodial wallet SDK. Users sign in with Google or Apple. The key is created on the device and never leaves; Cavos cannot see it, sign, or move funds. No seed phrase, no extension, no MPC. Passkeys enroll additional devices and do not sign transactions. Gas sponsorship is pass-through.

Changes

  • New wallet-integration/cavos.md kit page (Stellar G… account, @cavos/kit for React and React Native)
  • Comparison table and chooser copy in wallet-integration/README.md
  • Detailed comparison in wallet-integration/comparison.md
  • Root README wallet-integration list

Links

Document Cavos as a device-native embedded self-custodial SDK (Google/Apple login, key stays on device) alongside Freighter, Stellar Wallets Kit, and Smart Account Kit.
Copilot AI balanced review requested due to automatic review settings August 25, 2026 14:35

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds Cavos as a fourth Stellar wallet-integration approach.

Changes:

  • Adds a Cavos integration guide and examples.
  • Updates wallet comparisons and recommendations.
  • Adds Cavos to repository navigation.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 12 comments.

File Description
README.md Adds Cavos navigation links.
wallet-integration/README.md Adds Cavos to the integration overview.
wallet-integration/comparison.md Extends comparisons with Cavos.
wallet-integration/cavos.md Documents Cavos setup, signing, recovery, and sponsorship.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread wallet-integration/cavos.md Outdated
Comment on lines +54 to +57
identity: {
userId: user.id,
email: user.email,
},
Comment thread wallet-integration/cavos.md Outdated
Comment on lines +77 to +88
const url = await auth.getGoogleOAuthUrl();
window.location.href = url;

const identity = await auth.handleCallback(window.location.search);

const wallet = await Cavos.connect({
chain: "stellar",
network: "testnet",
appSalt: "my-app",
identity,
appId: process.env.NEXT_PUBLIC_CAVOS_APP_ID,
});
Comment thread wallet-integration/cavos.md Outdated
Comment on lines +201 to +205
const { secret } = await prf.enroll({
userId: user.id,
userName: user.email ?? user.id,
});
await wallet.enrollPasskey(secret);
Comment thread wallet-integration/cavos.md Outdated
});
```

Register every callback URL for your app in the Cavos dashboard. You can also bring your own identity by passing `{ userId, email }` directly. Login never signs transactions; the device key does.
Comment thread wallet-integration/cavos.md Outdated

## Passkeys and Recovery

Passkeys enroll devices. They do not sign transactions. Signing stays with the device-native key.

- **Type:** Embedded self-custodial wallet SDK
- **User Experience:** Google or Apple login; signing key stays on the device
- **Best for:** Consumer apps that want in-app wallets without extensions or seed phrases
Dependencies: 1 (smart-account-kit) + Relayer setup
```

### Cavos
Comment on lines +111 to +119
```typescript
if (wallet.chain === "stellar" && wallet.status === "ready") {
const hash = await wallet.invokeContract({
contractId: "C...CONTRACT",
method: "do_thing",
args: [wallet.address],
});
}
```
Comment thread wallet-integration/cavos.md Outdated
});
```

Pass `{ sponsored: false }` on execute or invokeContract to have the account pay its own fee. You can also supply your own funded source instead of the hosted relayer.
Comment thread wallet-integration/comparison.md Outdated
```
Complexity: ⭐⭐ Medium
Lines of code: ~50-100
Dependencies: 1 (@cavos/kit)
@adrianvrj

Copy link
Copy Markdown
Author

Addressed Copilot review comments on signing-model, snippets, and React Native setup. Details:

  • Stellar signing model in wallet-integration/cavos.md, comparison.md, and the chooser copy: device-bound P-256 is an ECDH unwrap key; the locally unwrapped Ed25519 control key signs. Self-custody unchanged — Cavos cannot see the control key or move funds.
  • OAuth snippet now handles cavos_auth_code before generating a new Google URL.
  • PasskeyPrf.enroll() falls back to getSecret() like the kit React provider.
  • React Native docs now include Expo native peers, the @cavos/kit config plugin, redirectUri / rpId, and a native rebuild. Expo Go is still called out as unsupported.
  • Sponsorship: execute(..., { sponsored: false }) vs invokeContract({ ..., opts: { sponsored: false } }).
  • invokeContract args use nativeToScVal(..., { type: \"address\" }) for require_auth.
  • Comparison dependency row is web-only, with RN Expo peers noted.
  • Hosted Google/Apple remains the default; BYO { userId, email } is an advanced note (stable, non-guessable userId + appSalt). No invented authenticated-authorization API.

Did not add Copilot’s production-hardening / not-production-ready banner. docs.cavos.xyz lists Stellar as available; the kit README has a status caveat, so cavos.md now has one short sentence matching that wording.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants