deployd-network-cli
v0.1.6
Published
CLI for Deployd Studio — create, manage and publish agency websites, and register and manage domains, from the command line.
Downloads
835
Maintainers
Readme
deployd-network-cli
The command line for Deployd Studio. Create draft websites, check and buy domains, and manage DNS — authenticated with an API key from any Deployd account, scoped to that account's own sites and nothing else. Your plan sets the draft quota (free: one draft at a time, Creator Pro: five, agency: 25+), never the door.
npm install -g deployd-network-cliSign in
deployd loginopens your browser: confirm the code on screen matches your terminal and click Authorize. The CLI receives a session token that lasts 24 hours and only works from the network that requested it — lifted from your laptop, it is useless anywhere else. Sessions can do everything, buying domains included: money still only moves through a Stripe checkout you pay, and DNS changes through an emailed confirmation you click.
For CI, or for a long-lived credential with hand-picked scopes, mint a key
in Settings → API keys and either run deployd login --key or set
DEPLOYD_API_KEY (it takes precedence).
Credentials are stored in ~/.deployd/config.json (mode 0600), never in an
environment variable — env vars leak into ps, CI logs and crash reports.
Commands
deployd whoami agency, key scopes, draft quota
deployd sites list your sites
deployd sites worker <id> --off stop the agent auto-resolving feedback
--on turn it back on (on by default)
deployd sites price <id> 699 what your client pays you for the site
--currency EUR your price — we never take a cut
deployd create "Acme Bakery" create a draft site
deployd create "Acme" --dir ./build …and upload a folder into it
deployd pull --site <id> --dir ./site download the site's content
deployd push --site <id> --dir ./site upload a folder as a new version
deployd feedback --site <id> unresolved feedback (comment, page,
selected elements); --all for history
deployd feedback resolve <fid> --site <id> mark feedback handled
deployd domains domains you own
deployd domains check acme.com availability + price, every registrar
--country PT …with a VAT estimate for that country
deployd domains buy acme.com --site ID buy it (pay first, registered after)
--owner-email [email protected] registrant contact — all optional
--owner-name/-org/-phone
--owner-address/-city/-zip/-state
--owner-country PT two-letter ISO code
deployd domains status <purchaseId> how a purchase is going
deployd domains subscribe acme.com renew it yearly, on a card
--cancel stop renewing it automatically
deployd subscriptions (or: subs) what this account pays for
deployd subscriptions cancel acme.com stop a domain renewing itself
deployd dns acme.com list DNS records
deployd dns acme.com add A www 1.2.3.4 add a record (email-confirmed)
deployd dns acme.com set <id> 5.6.7.8 change one (email-confirmed)
deployd dns acme.com rm <id> delete one (email-confirmed)
deployd transfer in acme.com --auth-code X bring a domain to Deployd
deployd transfer out acme.com release it (email-confirmed)
deployd transfer status acme.com inbound transfer progress
deployd help everything elseThe auto worker
The agent resolves a site's feedback on its own, and it is on for every
website. deployd sites worker <id> --off stops it for one site; --on
starts it again. deployd sites prints auto worker off on the sites where it
is off, and nothing on the rest.
Off means "do not start a run", not "stop collecting". Feedback keeps arriving and keeps its place in the queue; nothing is discarded and nothing is marked resolved. Turn the worker back on and the next cycle picks the queue up exactly as it stands. While it is off, the account that built the site gets one email a day listing its worker-off sites and what is waiting on each — and no email at all on a day when nothing is waiting.
Round-tripping a site
pull downloads a site you own into a folder (skipping files you already
have bit-identical, never deleting local files); edit; push uploads it
back as a new version. Pull → edit → push is the whole update loop.
Uploading
push (and create --dir) uploads a folder as a new version of the
site: files are staged in batches, then finalized atomically — an interrupted
upload leaves the previous version untouched. The upload is a sync: remote
files absent from your folder are removed (--no-delete keeps them).
Dotfiles and node_modules are never uploaded. There is no way to "claim" a
domain at creation — attach one by buying or transferring it in, which proves
you control it.
What you are paying for
deployd subscriptions (or subs) lists it in two groups. Domain
subscriptions show the yearly price and currency, the date the domain has to
be renewed by, and the status; when the registrar's price has moved, both
figures are shown (15.45 → 17.99) rather than only the new one. Site plans
lists the sites on a paid plan — their prices and payment method live in the
dashboard, which is also where they are changed.
deployd subscriptions cancel acme.com stops a domain renewing itself. The
prompt says plainly what that costs: the domain will not renew
automatically, somebody has to pay for it by hand before it expires — the
expiry date is in the prompt — and if nobody does, it lapses and anyone can
register it. The year already paid for is neither refunded nor cut short.
Four things worth knowing
Checkout links are never opened behind your back. domains buy,
domains subscribe and transfer in print the full price first and then ask
you to press ENTER before opening the browser — the same gate login puts in
front of the browser, for the mirrored reason: a payment page that appears on
its own is one whose price nobody read. Run without a terminal (CI, an agent, a
script) and the link is simply printed; no browser is ever launched.
Buying is payment-first. domains buy returns a Stripe checkout link; the
domain is registered only after the payment clears, and refunded automatically
if registration then fails. The price shown by domains check is the price
charged, and it is itemised: the cheapest registrar's cost plus a flat
management fee, with VAT added at checkout for EU customers.
The --owner-* flags name the registrant — who the registry believes owns
the domain, and what appears in a public WHOIS record. Every one is optional.
Whatever you leave out is filled in server-side: the email from the account the
key belongs to, everything else from the Deployd company contact. domains buy
prints the registrant it will use before asking you to confirm. Cloudflare
Registrar is the exception — it registers against its account's own contact and
has no way to take a per-domain one, so a purchase that must carry the
customer's own details is fulfilled by another registrar.
Renewal is payment-first too, subscription or not. A domain never renews on
our card. domains subscribe sets up a yearly charge that lands about a month
before the domain expires — enough room for a declined card to be replaced —
and the domain is renewed at the registrar only once that invoice is paid. The
price is re-quoted from the registrar before every renewal, because registry
prices move; if it has changed you are emailed both the old and the new figure
before the charge. Nothing renews until the checkout link is paid, so a
subscribe you did not finish leaves the domain exactly where it was.
Sensitive changes are email-confirmed. DNS changes and outbound transfers
do not apply when the command runs. A confirmation email — showing exactly
what will change — goes to an address already registered on the domain (the
customer, or the agency that manages them), and the change applies when
someone clicks it. --confirm-to chooses among those addresses; it cannot add
one. A key alone can never move a domain or its DNS.
Scopes
Keys carry explicit scopes. The default set covers reading and creating sites
and checking domains; domains:register (spends money), dns:write and
domains:write (can take a site offline) must be granted deliberately when
the key is created.
Agent skill
An Agent Skill teaching AI agents (Claude Code and compatible tools) to
install and drive this CLI ships with the package at
skills/deployd-cli/SKILL.md — including the
rules an agent must not get wrong: payment before registration, nothing live
until the confirmation email is clicked, customer prices only.
To use it, copy the folder where your agent looks for skills:
cp -r "$(npm root -g)/deployd-network-cli/skills/deployd-cli" ~/.claude/skills/(or into a project's .claude/skills/ to share it with a team). In the
platform monorepo the same skill lives at .claude/skills/deployd-cli/ and is
picked up automatically.
