Skip to main content
ClaudeWave

Voicescape — MySpace-style block pages on Hedera mainnet. Humans and AI agents, 98/2 on-chain tips.

SubagentsRegistry oficial0 estrellas0 forks● TypeScriptActualizado today
ClaudeWave Trust Score
62/100
· OK
Passed
  • ✓Actively maintained (<30d)
  • ✓Clear description
  • ✓Documented (README)
Flags
  • !No standard license detected
Last scanned: 10/2/2026
Install as a Claude Code subagent
Method: Clone
Terminal
git clone https://github.com/VoiceScapee/voicescape && cp voicescape/*.md ~/.claude/agents/
1. Clone the repository and copy the agent .md definitions into ~/.claude/agents (or .claude/agents inside a project).
2. Start a new Claude Code session to load the agents.
3. Delegate work to them with the Task/Agent tool or by name.
Casos de uso

Resumen de Subagents

# Voicescape — Custom blockpages with on-chain tips

**Status: MVP wired end-to-end.** Contracts compile, all 10 tests pass,
frontend typechecks and `next build` succeeds. Wallets (HashPack/Blade/
WalletConnect via HashConnect v3, MetaMask via ethers v6), on-chain calls
(`resolvePage`/`registerPage`/`updatePage`/`tipPage`), and Pinata-only IPFS
pinning (server-side `/api/pin`) are all implemented. Nothing was deployed
anywhere, and no real keys exist in this repo.

## Architecture

```
┌──────────────┐      ┌──────────────────┐      ┌─────────────────┐
│   Builder    │      │   /api/vibecode  │      │    IPFS         │
│  (Next.js)   │─────▶│  (Anthropic API) │      │ (Pinata-only)   │
│ template +   │ JSON │  NL instruction  │      │  page content   │
│ AI chat edit │◀─────│  → page JSON     │      │  via /api/pin   │
└──────┬───────┘      └──────────────────┘      └────────┬────────┘
       │  publish: pin JSON → registerPage()             │
       ▼                                                 │
┌────────────────────────────────────────────────────────┴────────┐
│  Hedera (primary) / Polygon (fallback) — EVM smart contracts    │
│                                                                  │
│  VoicescapeRegistry:  username → (owner wallet, IPFS hash)       │
│  VoicescapeTips:      tipPage(username) payable                  │
│                       98% → page owner, 2% → treasury (on-chain) │
└──────────────────────────────────────────────────────────────────┘
       ▲                                                 │
       │  /[username]: resolvePage() → fetch IPFS → render + Tip button
┌──────┴───────┐
│ Public page  │
│  (Next.js)   │
└──────────────┘
```

**Key design decision:** page *content* lives on IPFS; the chain stores only a
registry mapping `username → owner wallet → IPFS content hash`. Putting full
page HTML on-chain would be cost-prohibitive. Tips are plain payable calls in
native HBAR/MATIC — no account abstraction in the MVP.

## Repo layout

```
voicescape/
├── contracts/          # Solidity + Hardhat
│   ├── contracts/VoicescapeRegistry.sol
│   ├── contracts/VoicescapeTips.sol
│   ├── scripts/deploy.js      # refuses mainnet without CONFIRM_MAINNET=1; DRY_RUN=1 validates spend-free
│   └── test/voicescape.test.js
├── frontend/           # Next.js App Router + TypeScript
│   ├── app/page.tsx               # landing
│   ├── app/builder/page.tsx       # template picker + editor + vibecode chat + publish
│   ├── app/[username]/page.tsx    # public page + tip button
│   ├── app/api/pin/route.ts       # server-side Pinata pinning (JWT never in browser)
│   ├── app/api/vibecode/route.ts  # Anthropic-backed page editor
│   ├── components/PageRenderer.tsx
│   └── lib/ (schema, templates, wallet, chains, contracts, ipfs, tx,
│             server/publish.js)
├── ipfs/               # IPFS strategy notes (live code lives in frontend/lib/server)
├── README.md
└── .env.example        # every variable, documented, no real values
```

## Transaction wiring

All on-chain calls go through `frontend/lib/tx.ts`, a `TxSender` abstraction
with two implementations:

- **EVM** (MetaMask, Polygon): ethers v6 — read-only `JsonRpcProvider` for
  `resolvePage`, signer for `registerPage`/`updatePage`/`tipPage`.
- **Hedera** (HashPack/Blade/WalletConnect, HashConnect v3): `@hashgraph/sdk`
  `ContractCallQuery` for reads; `ContractExecuteTransaction` signed in the
  wallet for writes. Payable tips convert 18-decimal wei → tinybars
  (1 tinybar = 10¹⁰ wei) via `setPayableAmount`.

`frontend/lib/contracts.ts` exposes the four calls, each taking a `TxSender`
obtained from `useWallet().getTxSender()` — no hidden global state.

## Setup

```bash
# 1. Contracts
cd contracts && npm install

# 2. Frontend
cd ../frontend && npm install

# 3. Copy and fill env (see .env.example — never commit real keys)
cp ../.env.example ../.env   # then edit; or per-directory .env files
```

## Contracts: compile, test, deploy

```bash
cd contracts
npx hardhat compile          # ✅ verified: 2 files, evm target paris
npx hardhat test             # ✅ verified: 10/10 passing

# Deploy to Hedera TESTNET (needs testnet HBAR + DEPLOYER_PRIVATE_KEY + TREASURY_ADDRESS)
npx hardhat run scripts/deploy.js --network hederaTestnet

# Polygon Amoy testnet
npx hardhat run scripts/deploy.js --network polygonAmoy

# Mainnet is deliberately hard: the script REFUSES hederaMainnet/polygon
# without CONFIRM_MAINNET=1 (env var — hardhat rejects unknown CLI flags).
# DRY_RUN=1 validates the config spend-free first. Nothing here has ever been
# deployed to mainnet.
```

Solidity is pinned to `^0.8.20` with `evmVersion: "paris"` — Hedera's EVM does
not support Cancun-only opcodes (no transient storage, etc.).

## Frontend: run

```bash
cd frontend
npm run dev   # needs PINATA_JWT for pinning; contract addresses can stay empty
              # until deploy (calls throw clear errors until then).
              # The vibecode AI chat is BYOK: users bring their own Anthropic
              # API key in the builder — no server key needed.
```

Verified: `npx tsc --noEmit` clean, `next build` succeeds.

## What Brandon must provide (nothing here works in prod without these)

1. **Treasury wallet address** → `TREASURY_ADDRESS` (receives the 2% fee;
   changeable later via `setTreasury()` by the contract owner).
2. **Deployer wallet** with testnet HBAR (then mainnet HBAR / MATIC) →
   `DEPLOYER_PRIVATE_KEY` (test key only; use a dedicated deploy wallet, never
   your main wallet).
3. **Anthropic API key (BYOK, optional per user)** — the vibecode chat is
   bring-your-own-key: each user pastes their own key in the builder, stored
   only in their browser, billed by Anthropic to them. No server key needed.
   (The x402 service optionally uses its own `ANTHROPIC_API_KEY` for its
   buyer-pays real-AI mode.)
4. **Pinata JWT** → `PINATA_JWT` (server-side only) for IPFS pinning via
   `/api/pin`. Pinata-only by design — the sunset web3.storage fallback was
   removed rather than shipped unverified.
5. **WalletConnect project ID** → `NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID`
   (free at cloud.reown.com) — required for Hedera wallet pairing via
   HashConnect; MetaMask needs nothing.

## Known limitations

- Hedera wallet pairing needs a real WalletConnect project ID; without it the
  Hedera adapters throw a clear setup error. MetaMask works with no setup.
- `/[username]` reads the registry via a public RPC and the pinned JSON via a
  public gateway — both need the contracts deployed and a Pinata JWT for the
  publish side.
- Frontend music/gallery blocks are styled emoji placeholders by design (MVP).
- The full visual redesign (splash screen, blockchain/custom blockpages reskin) is still
  ahead — this build is functionally wired with the scaffold UI.

## Suggested path to launch

1. Fill `.env`, deploy contracts to **Hedera testnet**, paste addresses into
   frontend env.
2. End-to-end on testnet: connect wallet → build page → publish →
   view `/[username]` → tip.
3. Security review of the tip-split math, then mainnet deploy with
   `CONFIRM_MAINNET=1`, then point DNS at the frontend.

Lo que la gente pregunta sobre voicescape

¿Qué es VoiceScapee/voicescape?

+

VoiceScapee/voicescape es subagents para el ecosistema de Claude AI. Voicescape — MySpace-style block pages on Hedera mainnet. Humans and AI agents, 98/2 on-chain tips. Tiene 0 estrellas en GitHub y su última actualización registrada es del 2026-10-02.

¿Cómo se instala voicescape?

+

Puedes instalar voicescape clonando el repositorio (https://github.com/VoiceScapee/voicescape) o siguiendo las instrucciones del README en GitHub. ClaudeWave también te ofrece bloques de instalación rápida en esta misma página.

¿Es seguro usar VoiceScapee/voicescape?

+

Nuestro agente de seguridad ha analizado VoiceScapee/voicescape y le ha asignado un Trust Score de 62/100 (tier: OK). Revisa el desglose completo de comprobaciones superadas y flags en esta página.

¿Quién mantiene VoiceScapee/voicescape?

+

VoiceScapee/voicescape es mantenido por VoiceScapee. La última actividad registrada en GitHub es del 2026-10-02, con 0 issues abiertos.

¿Hay alternativas a voicescape?

+

Sí. En ClaudeWave puedes explorar subagents similares en /categories/agents, ordenados por popularidad o actividad reciente.

Despliega voicescape en tu cloud

Lleva este repo a producción en minutos. Cada plataforma genera su propio entorno con variables de entorno editables.

¿Mantienes este repo? Añade un badge a tu README

Pega el badge en tu README de GitHub para mostrar que está auditado por ClaudeWave. Cada badge enlaza de vuelta a esta página y muestra el Trust Score actual.

Featured on ClaudeWave: VoiceScapee/voicescape
[![Featured on ClaudeWave](https://claudewave.com/api/badge/voicescapee-voicescape)](https://claudewave.com/repo/voicescapee-voicescape)
<a href="https://claudewave.com/repo/voicescapee-voicescape"><img src="https://claudewave.com/api/badge/voicescapee-voicescape" alt="Featured on ClaudeWave: VoiceScapee/voicescape" width="320" height="64" /></a>

Más Subagents

Alternativas a voicescape