NeonDB
name: neondb
by clawbot-ved · published 2026-03-22
$ claw add gh:clawbot-ved/clawbot-ved-neondb-skill---
name: neondb
description: Manage Neon serverless Postgres databases. Create projects, branches, databases, and execute queries. Perfect for agent workflows needing persistent storage with branching (like git for databases), scale-to-zero, and instant provisioning.
homepage: https://neon.tech
metadata: {"openclaw":{"emoji":"🐘","requires":{"bins":["neonctl"]},"install":[{"id":"brew","kind":"brew","package":"neonctl","bins":["neonctl"],"label":"Install neonctl (Homebrew)"},{"id":"npm","kind":"node","package":"neonctl","bins":["neonctl"],"label":"Install neonctl (npm)"}]}}
---
# NeonDB
Neon is **serverless Postgres** — scales to zero, branches like git, instant provisioning. Perfect for AI agents needing databases without ops overhead.
Why Neon for Agents?
Quick Start
1. Install CLI
# Homebrew (recommended)
brew install neonctl
# Or npm
npm i -g neonctl2. Authenticate
# Interactive (opens browser)
neonctl auth
# Or with API key (get from console.neon.tech)
export NEON_API_KEY=your_api_key_here3. Create Your First Project
neonctl projects create --name "my-agent-db"Core Commands
Projects (top-level container)
# List all projects
neonctl projects list
# Create project
neonctl projects create --name "project-name"
# Delete project
neonctl projects delete <project-id>
# Get project details
neonctl projects get <project-id>Branches (database snapshots)
# List branches
neonctl branches list --project-id <project-id>
# Create branch (fork from main)
neonctl branches create --project-id <project-id> --name "dev-branch"
# Create branch from specific point
neonctl branches create --project-id <project-id> --name "restore-test" --parent main --timestamp "2024-01-15T10:00:00Z"
# Reset branch to parent
neonctl branches reset <branch-id> --project-id <project-id> --parent
# Delete branch
neonctl branches delete <branch-id> --project-id <project-id>
# Compare schemas
neonctl branches schema-diff --project-id <project-id> --base-branch main --compare-branch devDatabases
# List databases
neonctl databases list --project-id <project-id> --branch <branch-name>
# Create database
neonctl databases create --project-id <project-id> --branch <branch-name> --name "mydb"
# Delete database
neonctl databases delete <db-name> --project-id <project-id> --branch <branch-name>Connection Strings
# Get connection string (default branch)
neonctl connection-string --project-id <project-id>
# Get connection string for specific branch
neonctl connection-string <branch-name> --project-id <project-id>
# Pooled connection (recommended for serverless)
neonctl connection-string --project-id <project-id> --pooled
# Extended format (with all details)
neonctl connection-string --project-id <project-id> --extendedRoles (database users)
# List roles
neonctl roles list --project-id <project-id> --branch <branch-name>
# Create role
neonctl roles create --project-id <project-id> --branch <branch-name> --name "app_user"Executing Queries
Using psql
# Get connection string and connect
neonctl connection-string --project-id <project-id> | xargs psql
# Or direct
psql "$(neonctl connection-string --project-id <project-id>)"Using the connection string in code
# Get the string
CONNECTION_STRING=$(neonctl connection-string --project-id <project-id> --pooled)
# Use in any Postgres client
psql "$CONNECTION_STRING" -c "SELECT * FROM users LIMIT 5;"Context (Avoid Repeating Project ID)
Set context to avoid passing `--project-id` every time:
# Set project context
neonctl set-context --project-id <project-id>
# Now commands use that project automatically
neonctl branches list
neonctl databases list
neonctl connection-stringAgent Workflow Examples
Create org database with branches
# Create project for org
neonctl projects create --name "website-org-db" -o json
# Create production branch (main is created by default)
# Create dev branch for testing
neonctl branches create --name "dev" --project-id <id>
# Get connection strings
neonctl connection-string main --project-id <id> --pooled # for prod
neonctl connection-string dev --project-id <id> --pooled # for devCreate leads table
# Connect and create schema
psql "$(neonctl cs --project-id <id>)" <<EOF
CREATE TABLE leads (
id SERIAL PRIMARY KEY,
business_name VARCHAR(255) NOT NULL,
category VARCHAR(100),
location VARCHAR(255),
phone VARCHAR(50),
email VARCHAR(255),
website VARCHAR(255),
status VARCHAR(50) DEFAULT 'identified',
priority VARCHAR(20) DEFAULT 'medium',
notes TEXT,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
CREATE INDEX idx_leads_status ON leads(status);
CREATE INDEX idx_leads_category ON leads(category);
EOFBranch for experiments
# Create a branch to test schema changes
neonctl branches create --name "schema-experiment" --project-id <id>
# Test your changes on the branch
psql "$(neonctl cs schema-experiment --project-id <id>)" -c "ALTER TABLE leads ADD COLUMN score INT;"
# If it works, apply to main. If not, just delete the branch
neonctl branches delete schema-experiment --project-id <id>Output Formats
# JSON (for parsing)
neonctl projects list -o json
# YAML
neonctl projects list -o yaml
# Table (default, human-readable)
neonctl projects list -o tableEnvironment Variables
# API key (required if not using `neonctl auth`)
export NEON_API_KEY=your_key
# Default project (alternative to set-context)
export NEON_PROJECT_ID=your_project_idCommon Patterns
Check if neonctl is configured
neonctl me -o json 2>/dev/null && echo "Authenticated" || echo "Need to run: neonctl auth"Quick database query
# One-liner query
psql "$(neonctl cs)" -c "SELECT COUNT(*) FROM leads WHERE status='contacted';"Export to CSV
psql "$(neonctl cs)" -c "COPY (SELECT * FROM leads) TO STDOUT WITH CSV HEADER" > leads.csvImport from CSV
psql "$(neonctl cs)" -c "\COPY leads(business_name,category,location) FROM 'import.csv' WITH CSV HEADER"Troubleshooting
"Connection refused"
"Permission denied"
Slow first connection
Links
More tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...