A discerning collector assistant. Watches your favorite OpenSea collections, tracks floor and volume moves, and — when you say so — buys listings through a Privy server wallet whose spend cap is enforced in a TEE. Hardened by default: bootstrap walks you through registering an off-machine owner key so the agent's env credentials cannot rewrite the policy that constrains them.
An AI agent for NFT collectors. Watches OpenSea, scores every listing across five signals (price, volume, depth, holders, momentum), and executes Seaport trades through a Privy server wallet with a TEE-enforced per-tx cap and an off-machine owner key the agent cannot reach. You approve; it acts. The wallet's float is your real aggregate ceiling — you fund and replenish it on your own cadence.
Point it at a list of wallets you respect (vitalik.eth, your favorite PFP whale, whoever) and your watchlist. When a tracked whale buys, mints, or lists into any collection — whether it's on your watchlist or not — you get a one-line alert within a heartbeat, with a one-click follow gated by your Privy spend cap. Few others ship this — it takes the OpenSea events feed, a TEE-enforced wallet, and a disciplined scoring rubric in the same box.
@opensea/cli + the skill's fulfillment scripts, signed by your Privy wallet.taste.json so recommendations get sharper over time.Supported chains: see workspace/TOOLS.md. Mainnets only by default.
@opensea/cli — installed globally at build time.opensea-marketplace — attached via manifest.json → skills and mounted at skills/opensea/. SKILL.md + reference docs + shell scripts for Seaport, swaps, stream events, wallet setup, and policy templates. Pinata pulls the latest published version at deploy time.Only two are required up front. The rest the agent provisions for you on first run.
| Variable | Required | How to get it |
|---|---|---|
PRIVY_APP_ID | yes | dashboard.privy.io → create app |
PRIVY_APP_SECRET | yes | Same page as App ID. Pair with an owner_id registered on the wallet — bootstrap walks you through it. |
OPENSEA_API_KEY | optional | If unset, the agent fetches a free-tier instant key on first run and attaches it via the bundled Pinata Platform skill. Provide your own paid key here only if you need higher rate limits. |
PRIVY_WALLET_ID | optional | If unset, the agent creates a new server wallet via opensea wallet create once Privy app creds are present. Provide one only to reuse an existing wallet. |
PRIVY_AUTH_SIGNING_KEY | optional | Auto-generated by the agent on first run via opensea wallet generate-auth-key. The matching public key gets registered as the wallet's additional_signer; the owner key stays off-machine on your host. |
Full walkthrough: skills/opensea/references/wallet-setup.md. Policy templates: skills/opensea/references/wallet-policies.md. Hot-wallet float pattern: skills/opensea/references/wallet-funding.md. User-only mutation recipes (policy attachment, owner registration): https://github.com/ProjectOpenSea/opensea-skill/blob/main/docs/policy-administration.md.
On first conversation the agent will walk you through:
opensea wallet create) and storing the ID.PRIVY_AUTH_SIGNING_KEY.owner_id) and the agent's additional_signer public key on the wallet via https://github.com/ProjectOpenSea/opensea-skill/blob/main/docs/policy-administration.md. Your owner private key never touches the agent.Each step that needs new secrets ends with a Pinata restart, after which the agent resumes from where you left off. BOOTSTRAP is a resumable state machine — cold restarts pick up at the first incomplete phase.
"Add boredapeyachtclub, pudgypenguins, and azuki to my watchlist on ethereum. Alert me on any floor drop over 5%."
"Follow vitalik.eth and 0xpunks4156 as whales — high-priority alerts."
"Should I buy this azuki at 2.1 ETH? Run the full gate."
"Any upcoming drops this week that fit my taste?"
"What's the best offer on my bored ape #1234? Is it worth flipping?"
"Swap 0.05 ETH into USDC on Base."
"Walk me through tightening the wallet policy to cap buys at 0.1 ETH."
Three independent layers, in order of how the bound is actually enforced:
owner_id being registered: the agent's env credentials cannot rewrite the policy because mutations require an authorization signature from the owner key (which lives on your host, not the agent's). Bootstrap verifies this is in place before any signing-capable step.confirmAboveEth (in workspace/TOOLS.md) needs explicit "yes" in the current turn. Snipes can bypass this only when the listing is fully inside your configured envelope — see workspace/SOUL.md → Hierarchy of Ceilings.Other invariants:
.
├── manifest.json # Pinata agent manifest — attaches opensea-marketplace from ClawHub
├── LICENSE # MIT
├── .openclaw/
│ ├── openclaw.json # OpenClaw harness config (compaction, concurrency)
│ └── SOUL.md # short canonical persona — points at workspace/SOUL.md
└── workspace/
├── SOUL.md # guardrails + Conviction Score + Pre-Buy Gate
├── AGENTS.md # workspace conventions + memory schemas
├── IDENTITY.md # blank — filled on first run
├── TOOLS.md # watchlist, whales, budgets — user-tunable
├── BOOTSTRAP.md # first-run walkthrough — agent deletes after completion
├── HEARTBEAT.md # idle-cycle routine
├── USER.md # collector profile — filled on first run
└── memory/ # created at runtime — floors, actions, taste, scan state
At deploy time Pinata attaches the OpenSea skill under skills/opensea/ (SKILL.md + references/*.md + scripts/*.sh) — not checked into this repo.
Skill versions are managed on ClawHub, not in this template. To pick up a new version, no repo change is needed — Pinata pulls the latest published version of opensea-marketplace on each deploy. To pin to a specific version, replace clawhub_slug in manifest.json with a cid for that version.
PRIVY_APP_IDPrivy application ID. Create an app at https://dashboard.privy.io and copy the App ID.PRIVY_APP_SECRETPrivy application secret — same dashboard page as the App ID. Treat as a password. IMPORTANT: pair this with an owner_id registered on the wallet — without it, this secret can rewrite the wallet's policy unilaterally. Bootstrap walks you through the hardening (see https://github.com/ProjectOpenSea/opensea-skill/blob/main/docs/policy-administration.md).OPENSEA_API_KEYOpenSea API key. Optional — if not set, the agent will fetch a free-tier instant key on first run via curl -X POST https://api.opensea.io/api/v2/auth/keys and attach it via the Pinata Platform skill. Provide your own paid key here if you need higher rate limits.PRIVY_WALLET_IDPrivy server wallet ID. Optional — if not set, the agent will create a new server wallet via `opensea wallet create` once PRIVY_APP_ID + PRIVY_APP_SECRET are present and attach the ID via the Pinata Platform skill. Set this only to reuse an existing wallet.PRIVY_AUTH_SIGNING_KEYPrivy additional_signer private key (PKCS8 base64, P-256). Optional — auto-generated on first run via `opensea wallet generate-auth-key` and attached via the Pinata Platform skill. Required for /rpc signing once owner_id is registered on the wallet. The matching public key is what gets registered as additional_signer; the owner key stays off-machine on your own host. See https://github.com/ProjectOpenSea/opensea-skill/blob/main/docs/policy-administration.md.Sign up to deploy this template in under a minute