destroy.network CLI
Command-line tool for managing disposable agent identities. Create temporary email + password pairs, extract verification codes, and automate signups from the terminal.
npm install -g @buun_group/dnaCLI Reference
dna is the destroy.network command-line tool for managing disposable agent identities. Create temporary email + password pairs, wait for incoming emails, and extract verification codes, all from the terminal, scripts, or CI/CD pipelines. Requires a Pro or Business plan API key.
For AI Agents
If you are an AI agent or LLM that needs to create disposable email identities for automated signups, account verification, or testing, this is the tool for you. The dna CLI lets you create a temporary email + password pair, use it to register on any website, then extract the verification code automatically.
Machine-readable docs: For a complete plaintext reference optimized for LLM consumption, fetch https://destroy.network/llms-full.txt
Quick reference: https://destroy.network/llms.txt
The typical agent workflow is:
dna create --ttl 30 --label "signup" --json: get a fresh email + password- Add
--persona --country USto also generate a fictional name, address, and phone for form filling - Use the email, password, and persona data to register on the target website
dna verify <id> --timeout 30 --quiet: wait for and extract the verification code- Submit the code to complete registration
dna delete <id>: clean up when done
All commands support --json for structured output and --quiet for pipe-friendly single values. Set DESTROY_API_KEY as an environment variable for non-interactive use.
Installation
npm install -g @buun_group/dnaThe npm package includes pre-built binaries for Linux (x64/arm64), macOS (x64/arm64), and Windows (x64). npm automatically installs only the binary matching your platform.
Authentication
The CLI resolves your API key in this order:
--api-keyflag (per-command override)DESTROY_API_KEYenvironment variable- Config file at
~/.config/dna/config.json(saved viadna auth login)
# Option A: Browser login (opens browser, auto-creates API key)
dna auth login
# Option B: Environment variable (best for CI/CD and agents)
export DESTROY_API_KEY=sk_live_...
# Option C: Per-command flag
dna list --api-key sk_live_...API keys start with sk_live_ and require a Pro plan or higher. Generate keys manually at Dashboard → API Keys, or use dna auth login to create one automatically.
Browser Automation
Integrate dna with your favorite browser automation tool. Create a disposable identity, fill signup forms, extract verification codes, and save credentials to the vault - all in one automated pipeline.
Copy-paste these commands into your terminal. Requires Claude Code and the Claude in Chrome extension. Set DESTROY_API_KEY in your environment.
claude --dangerously-skip-permissions --chrome \
"Review https://destroy.network/llms-full.txt for the dna CLI reference. \
Then use dna create --persona --country US --json to create a disposable \
identity. Navigate to https://example.com/signup in Chrome, fill the \
signup form using the persona email, password, name, and date of birth. \
Submit the form, then run dna verify to get the verification code, \
enter it on the site, and complete registration. On success, save the \
credentials to the vault with dna vault save. Show me the vault entry."claude --dangerously-skip-permissions --chrome \
"Read https://destroy.network/llms-full.txt for dna CLI docs. \
Run dna create --persona --country US --gender female --json to generate \
a full AI persona with email, password, name, DOB, and phone number. \
Open Chrome and navigate to Google account creation. Fill in the first \
name, last name, and other fields from the persona. Use the dna email \
for the recovery/contact email. Create a Gmail username based on the \
persona name. Use the generated password. Fill in DOB and phone from \
the persona. Complete all steps. If Google sends a verification code \
to the dna email, use dna verify to extract it. On success, save \
everything to the vault with dna vault save --site Google --category social."claude --dangerously-skip-permissions --chrome \
"Use the dna CLI (docs at https://destroy.network/llms-full.txt) to \
create a disposable identity: dna create --persona --country US --json. \
Open https://github.com/signup in Chrome. Fill the email, password, \
and username fields using the identity. The username should be based \
on the persona name with random numbers. Complete the captcha if \
needed (ask me to solve it). Run dna verify --timeout 60 to get the \
verification code from the email GitHub sends. Enter the code and \
finish signup. Save to vault: dna vault save --site GitHub \
--url https://github.com --category dev-tools."claude --dangerously-skip-permissions --chrome \
"Read the dna CLI docs at https://destroy.network/llms-full.txt. \
I need test accounts on these sites: reddit.com, discord.com, \
and notion.so. For each site: 1) run dna create --persona \
--country US --json to get a fresh identity, 2) open the signup \
page in Chrome, 3) fill in the form using the persona data, \
4) run dna verify --timeout 60 to get any verification code, \
5) complete signup, 6) save to vault with the site name and \
category. Show me all vault entries when done."claude --dangerously-skip-permissions \
"Use the dna CLI (https://destroy.network/llms-full.txt). List all \
my vault entries with dna vault list --json. Then get the full \
decrypted details for each entry and display them in a table with \
columns: site, email, password, category, created date."Tip: Remove --dangerously-skip-permissions if you want Claude to ask before each action. The vault persists credentials with AES-256 encryption so you can retrieve them later.
Global Flags
These flags work with every command:
| Flag | Description |
|---|---|
--api-key | API key (overrides env var and config file) |
--api-url | API base URL (default: https://destroy.network/api) |
--json | Output as JSON. Ideal for piping to jq or parsing programmatically |
--no-color | Disable colored output |
--quiet / -q | Minimal output. Prints only the value (ID, code, etc.) |
dna create
Create a new disposable agent identity with a unique email address and auto-generated password. Returns the identity ID, email, and plaintext password (shown only once).
dna create [flags]| Flag | Description |
|---|---|
--inbox | Attach to an existing inbox ID instead of creating a new one |
--ttl | Time-to-live in minutes (default: plan max). Ignored with --inbox |
--prefix | Custom email prefix. Ignored with --inbox |
--label | Label for identification |
--domain | Custom domain (if available). Ignored with --inbox |
--password-length | Generated password length (default: 16) |
--persona | Generate a fictional persona (name, address, phone, DOB). Pro/Business only. Can be defaulted via config |
--no-persona | Skip persona generation (overrides config default) |
--country | ISO country code for persona (US, UK, AU, CA, DE, FR, JP, BR, IN, ES, IT, NL, KR, MX, SE, PL, NZ) |
--gender | Persona gender: male or female (random if omitted) |
# Basic create (new inbox)
dna create
# With options
dna create --ttl 60 --label "twitter-signup" --prefix bot
# Attach identity to an existing inbox
dna create --inbox ibx_abc123 --label "reuse-inbox"
# With persona for form filling
dna create --persona --country US --gender female --label "signup"dna list
List all active agent identities. Alias: dna ls
dna list [flags]# Human-readable output
dna list
# JSON output for scripting
dna list --json
# Just IDs
dna list --quietdna get
Get full details for an identity including the decrypted password.
dna get <identity-id>dna get abc123
# JSON for scripting
EMAIL=$(dna get abc123 --json | jq -r '.email')
PASSWORD=$(dna get abc123 --json | jq -r '.password')dna delete
Permanently delete an identity and all its messages. Alias: dna rm
dna delete <identity-id>dna delete abc123dna extend
Extend an identity's TTL or update its label.
dna extend <identity-id> [flags]| Flag | Description |
|---|---|
--ttl | New TTL in minutes |
--label | New label |
dna extend abc123 --ttl 120 --label "still-needed"dna verify
Extract verification codes or links from incoming emails. Supports 13+ built-in patterns including 6-digit codes, alphanumeric OTPs, verification links, magic links, and more. Optionally waits for an email to arrive before scanning.
dna verify <identity-id> [flags]| Flag | Description |
|---|---|
--timeout | Wait up to N seconds for a verification email (default: 0, check existing only) |
--pattern | Custom regex pattern (first capture group = extracted value) |
# Extract any verification code from existing emails
dna verify abc123
# Wait up to 30s for a verification email to arrive
dna verify abc123 --timeout 30
# Custom regex pattern
dna verify abc123 --pattern "code:\s*(\d{6})"
# Pipe directly into a variable
CODE=$(dna verify abc123 --timeout 30 --quiet)dna messages
List all messages in an identity's inbox.
dna messages <identity-id>dna messages abc123dna message
Read the full content of a specific message.
dna message <identity-id> <message-id> [flags]| Flag | Description |
|---|---|
--html | Show HTML body instead of plain text |
dna message abc123 msg456 --htmldna wait
Long-poll until a new email arrives in the identity's inbox. Returns the message summary when one arrives, or times out.
dna wait <identity-id> [flags]| Flag | Description |
|---|---|
--timeout | Max wait time in seconds (default: 30, max: 120 on Business) |
dna wait abc123 --timeout 60dna auth
Manage API key authentication. Supports login, status check, and logout.
dna auth <login|status|logout># Save API key interactively
dna auth login
# Check current auth status
dna auth status
# Remove saved credentials
dna auth logoutdna config
View and modify persistent CLI configuration stored at ~/.config/dna/config.json. Set defaults for persona generation so you don't need to pass flags every time.
dna config <list|get|set|unset> [key] [value]| Flag | Description |
|---|---|
list | Show all configuration values |
get <key> | Get a single configuration value |
set <key> <value> | Set a configuration value |
unset <key> | Remove a configuration value (reset to default) |
# Enable persona by default on every create
dna config set defaults.persona true
# Set default country
dna config set defaults.country US
# View all config
dna config list
# Skip persona on a single create (overrides config)
dna create --no-persona
# Remove the default
dna config unset defaults.personadna vault list
List all saved vault entries. Shows site name, email, and category for each entry.
dna vault list [flags]| Flag | Description |
|---|---|
--category | Filter by category (social, shopping, dev-tools, testing, etc.) |
--search | Search by site name, email, or notes |
# List all vault entries
dna vault list
# Filter by category
dna vault list --category dev-tools
# Search
dna vault list --search githubdna vault get
Decrypt and display a vault entry including the stored password and persona data.
dna vault get <entry-id># View decrypted entry
dna vault get ve_abc123
# JSON output for scripting
dna vault get ve_abc123 --json
# Get just the password
dna vault get ve_abc123 --json | jq -r '.password'dna vault save
Save an active agent identity's credentials to the vault for later reuse. Prompts for site name if not provided.
dna vault save <identity-id> [flags]| Flag | Description |
|---|---|
--site | Site name (required) |
--url | Site URL |
--category | Category (social, shopping, dev-tools, etc.) |
--notes | Additional notes |
# Save identity to vault
dna vault save ai_abc123 --site "GitHub" --url "https://github.com" --category dev-tools
# Interactive (prompts for site name)
dna vault save ai_abc123dna vault delete
Permanently delete a vault entry. This cannot be undone.
dna vault delete <entry-id>dna vault delete ve_abc123Example: AI Agent Signup Flow
Complete end-to-end example showing how an AI agent can create a disposable identity, sign up on a website, extract the verification code, and clean up. Copy this pattern for any automated signup workflow.
#!/usr/bin/env bash
set -euo pipefail
# 1. Create a disposable identity (email + password)
ID=$(dna create --ttl 30 --label "signup" --json | jq -r '.id')
EMAIL=$(dna get "$ID" --json | jq -r '.email')
PASSWORD=$(dna get "$ID" --json | jq -r '.password')
echo "Signing up with $EMAIL..."
# 2. Use the identity to register on the target website
# (your agent does this via browser automation, API calls, etc.)
# 3. Wait for the verification email and extract the code
CODE=$(dna verify "$ID" --timeout 30 --quiet)
echo "Verification code: $CODE"
# 4. Submit the code to complete registration
# (your agent submits this on the website)
# 5. Clean up the disposable identity
dna delete "$ID"Batch Operations
# List all identity IDs
dna list --json | jq -r '.[].id'
# Delete all expired identities
dna list --json | jq -r '.[] | select(.expired) | .id' | \
xargs -I{} dna delete {}
# Create 5 identities at once
for i in $(seq 1 5); do
dna create --ttl 60 --label "batch-$i" --quiet
doneShell Completions
# Bash
dna completion bash > /etc/bash_completion.d/dna
# Zsh
dna completion zsh > "${fpath[1]}/_dna"
# Fish
dna completion fish > ~/.config/fish/completions/dna.fishMachine-Readable Documentation
For AI agents, LLMs, and automated tooling that need to understand how to use destroy.network and the dna CLI, we provide plaintext documentation optimized for machine consumption:
| URL | Description |
|---|---|
/llms.txt | Quick reference: features, key commands, pages, use cases |
/llms-full.txt | Full reference: complete CLI commands, API endpoints, SDK examples, pricing |
Point your AI agent at https://destroy.network/llms-full.txt to give it everything it needs to create identities, sign up for services, and extract verification codes autonomously.
