Skip to main content

Dreamhost

@svendowideit/dreamhostv2026.10.23.1beta· MIT· 1d agoBEHAVIORSWORKFLOWSACCEPTED WARNINGS
01README

Inventory and back up DreamHost shared-hosting accounts over SSH, and manage DreamHost DNS records through the official API. WHAT IT DOES

Gives a read-first inventory of a DreamHost shell account: the full home directory tree, likely application configuration files, redacted database references, mail directories, symlinks and special files, repository metadata, and crontab hints. It can also reconcile DNS records without modifying DreamHost-managed records. Use it to discover what must be preserved before a migration or retirement, rather than assuming the first rsync captured everything.

INSTALL

swamp extension pull @svendowideit/dreamhost

DEPENDENCIES

None. SSH, rsync, and a DreamHost API key are expected to be available; no other extension is required for the inventory and DNS capabilities.

RUN

# Create an inventory behavior once, then confirm account and host details
swamp model create @svendowideit/dreamhost/inventory dreamhost-inventory \
  --global-arg host=dreamhost.example --global-arg user=myshelluser
swamp model method run dreamhost-inventory accountInfo

# Build a recursive home-directory manifest of that account
swamp model method run dreamhost-inventory homeManifest \
  --input maxEntries=100000

# Create a DNS behavior and export its zones for cutover planning
swamp model create @svendowideit/dreamhost/dns dreamhost-dns \
  --global-arg 'authToken=${{ vault.get("dreamhost", "API_KEY") }}'
swamp model method run dreamhost-dns listZones

# Fan out the full inventory workflow across several shell usernames on one host
swamp workflow run @svendowideit/dreamhost-inventory-all \
  --input host=dreamhost.example \
  --input 'usernames=["shell-user-one","shell-user-two"]'

# Back up one account's remote files to a local directory
swamp model method run dreamhost-inventory backup \
  --input localPath=./dreamhost-backup-fosiki

# Verify the local backup against the recorded inventory manifest
swamp model method run dreamhost-inventory verifyBackup \
  --input localPath=./dreamhost-backup-fosiki

CONFIGURE

All SSH-based models use these global arguments:

host            SSH host                           (required)
user            DreamHost shell username          (required)
port            SSH port                           (default 22)
identityFile    Private key path                   (optional)
identityContent Vault-provided private key         (optional)
password        SSH password via sshpass          (discouraged)
sshOptions      Extra ssh -o options               (default [])
remotePath      Remote web root for site publishing (optional)

DNS models require an authToken with the DNS commands enabled.

UPGRADE

Nothing is installed on the host. Bring an existing install up to date with: swamp extension update @svendowideit/dreamhost Behavior definitions and their global arguments remain valid across releases; recreated workflow files (if any) are noted in the release notes and validated with swamp workflow validate.

WHAT IT INSTALLS

Nothing on the host. It only reads remote state and local vault secrets, writes swamp resources, and can call the DreamHost DNS API.

02Behaviors3
@svendowideit/dreamhost/dnsv2026.10.23.1dreamhost_dns.ts

Global Arguments

ArgumentTypeDescription
authToken?stringDreamHost API key; use a vault expression, e.g.
apiBase?stringDreamHost API base URL
fn listRecords(zone?: string)
Fetch DNS records (optionally filtered to one zone) into a resource
ArgumentTypeDescription
zone?stringOnly return records in this zone (domain), e.g. example.com
fn listZones()
Derive the hosted zones (domains) from the account's DNS records
fn listCommands()
List the DreamHost API commands the configured key can access
fn addRecord(record: string, type: string, value: string, comment?: string, zone?: string)
Add a DNS record to a zone
ArgumentTypeDescription
recordstringRecord name: a full name (www.example.com), a short label (www)
typestringRecord type: A, AAAA, CNAME, MX, NAPTR, NS, SRV, or TXT
valuestringRecord value
comment?stringOptional comment stored with the record
zone?stringZone used to resolve a short record name (required when `record` has no dot)
fn removeRecord(record: string, type: string, value: string, zone?: string)
Remove a DNS record from a zone
ArgumentTypeDescription
recordstringRecord name (full name, short label, or @)
typestringRecord type
valuestringRecord value (must match exactly)
zone?stringZone used to resolve a short record name (required when `record` has no dot)
fn syncRecords(zone: string, records: array, prune?: boolean, dryRun?: boolean)
Idempotently reconcile a desired record set for a zone
ArgumentTypeDescription
zonestringZone (domain) whose records are reconciled
recordsarrayDesired record set for the zone
prune?booleanDelete editable records in the zone that are absent from `records`;
dryRun?booleanCompute the diff without applying any changes

Resources

records(infinite)— DNS records fetched from the DreamHost API
zones(infinite)— Hosted zones derived from DNS records
commands(infinite)— API commands accessible to the configured key
change(infinite)— Result of a single add or remove operation
sync(infinite)— Result of reconciling a desired DNS record set
@svendowideit/dreamhost/inventoryv2026.10.23.1dreamhost_inventory.ts
fn accountInfo(host?: string, user?: string)
Collect basic account, host, and shell details
ArgumentTypeDescription
host?string
user?string
fn homeManifest(host?: string, user?: string, maxEntries?: number)
Build a recursive manifest of a home directory
ArgumentTypeDescription
host?string
user?string
maxEntries?numberMaximum paths to include in one resource
fn findConfigs(host?: string, user?: string)
Find likely application configuration files
ArgumentTypeDescription
host?string
user?string
fn databaseRefs(host?: string, user?: string)
Discover redacted database references in configuration files
ArgumentTypeDescription
host?string
user?string
fn mailInventory(host?: string, user?: string)
Inventory mail directories
ArgumentTypeDescription
host?string
user?string
fn specialFiles(host?: string, user?: string)
Inventory symlinks and special files
ArgumentTypeDescription
host?string
user?string
fn repositoryRoots(host?: string, user?: string)
Find repository metadata directories
ArgumentTypeDescription
host?string
user?string
fn cronHints(host?: string, user?: string)
Collect crontab output
ArgumentTypeDescription
host?string
user?string
fn backup(host?: string, user?: string, localPath?: string, remotePath?: string, delete?: boolean, dryRun?: boolean, checksum?: boolean, approveDiskUsage?: boolean, excludes?: array, rsyncArgs?: array)
Back up a DreamHost account's files locally with rsync over SSH
ArgumentTypeDescription
host?string
user?string
localPath?stringLocal directory that receives the remote account
remotePath?stringRemote root to back up (default: home, ~)
delete?booleanDelete local files absent from the remote account
dryRun?booleanShow what would change without transferring anything
checksum?booleanUse checksums, not size/time, to decide what to transfer
approveDiskUsage?booleanApprove the backup when free disk space would drop below 10 percent
excludes?arrayExtra rsync exclude patterns for this backup
rsyncArgs?arrayExtra rsync arguments for this backup
fn verifyBackup(localPath: string, host?: string, user?: string)
Verify that a local backup contains the manifest-recorded files
ArgumentTypeDescription
localPathstringLocal backup directory to verify
host?string
user?string

Resources

accountInfo(infinite)— Remote account and host details
homeManifest(infinite)— Deep file and directory manifest for an account home
findConfigs(infinite)— Likely application configuration files
databaseRefs(infinite)— Redacted database references found in configuration files
mailInventory(infinite)— Mailbox and mail directory inventory
specialFiles(infinite)— Symlinks, sockets, FIFO, and device files
repositoryRoots(infinite)— Repository metadata directories
cronHints(infinite)— Crontab output and hints
backup(infinite)— Result of an rsync backup of a DreamHost account
verifyBackup(infinite)— Verification of a local account backup against its manifest
@svendowideit/dreamhost/sitev2026.10.23.1dreamhost_site.ts

Global Arguments

ArgumentTypeDescription
hoststringSSH host — the domain (example.com), a DreamHost server hostname, or
userstringDreamHost shell username
remotePath?stringRemote web root, e.g. ~/example.com/ (required unless set per deploy)
port?numberSSH port
identityFile?stringPath to an SSH private key; defaults to ssh's own key selection
identityContent?stringInline SSH private key (use a vault expression); written to a temp
password?stringSSH password (use a vault expression); requires sshpass. Prefer a key.
sshOptions?arrayExtra ssh options, e.g. ['StrictHostKeyChecking=accept-new']
excludes?arrayDefault rsync exclude patterns for deploy
rsyncArgs?arrayExtra rsync arguments applied to every deploy
remoteCommand?stringRemote rsync binary (DreamHost servers have rsync preinstalled)
fn deploy(localPath: string, remotePath?: string, delete?: boolean, dryRun?: boolean, excludes?: array, rsyncArgs?: array)
Publish a local directory to the DreamHost web root with rsync over SSH
ArgumentTypeDescription
localPathstringLocal directory to publish
remotePath?stringOverride the remote web root for this deploy
delete?booleanDelete remote files absent locally (rsync --delete)
dryRun?booleanShow what would change without transferring anything (rsync -n)
excludes?arrayOverride the default exclude patterns for this deploy
rsyncArgs?arrayExtra rsync arguments for this deploy
fn check(remotePath?: string)
Verify SSH connectivity and report whether the remote web root exists
ArgumentTypeDescription
remotePath?stringRemote path to test for existence
fn inspect(remotePath?: string)
List the remote web root and report a size snapshot
ArgumentTypeDescription
remotePath?stringRemote path to inspect

Resources

deploy(infinite)— Result of an rsync deployment to the web root
check(infinite)— SSH connectivity and remote path status
inspect(infinite)— Remote web root listing and size snapshot
03Workflows1
@svendowideit/dreamhost-inventory-alldc628771-bf01-440b-a72d-3a555eba164b

Inventory multiple DreamHost shell accounts through a shared `@svendowideit/dreamhost/inventory` model. Provide the DreamHost SSH host and a list of shell usernames; the workflow runs each account's account info, home manifest, configuration, database reference, mail, special-file, repository, and crontab inventory.

mainInventory every listed username.
1.account-info-${{ self.username }}— Collect account, host, and shell details.
2.home-manifest-${{ self.username }}— Build a recursive home-directory manifest for the account.
3.find-configs-${{ self.username }}— Find likely application configuration files.
4.database-refs-${{ self.username }}— Discover redacted database references.
5.mail-inventory-${{ self.username }}— Inventory mail directories.
6.special-files-${{ self.username }}— Inventory symlinks and special files.
7.repository-roots-${{ self.username }}— Find repository metadata directories.
8.cron-hints-${{ self.username }}— Collect crontab output.
04Stats
B
87 / 100
Downloads
0
Archive size
51.6 KB
  • Has README or module doc2/2earned
  • README has a code example1/1earned
  • README is substantive1/1earned
  • Most symbols documented0/1missing
  • No slow types (deprecated)1/1earned
  • Dependencies pass trust audit1/2partial
    • @std/assert--jsr:@std/assert@1 is a range; audited 1.0.19, the version the registry resolved
    1 dependency found
    • jsr:@std/assert@1 -- audited 1.0.19
  • Docs keep secrets in a vault1/1earned
  • Has description1/1earned
  • Platform support declared (or universal)2/2earned
  • License2/2earned
  • Verified public repository2/2earned

06Platforms