npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

dirextalk-deployer-rs

v0.1.5

Published

Verified multi-platform binaries for the Dirextalk GCP Deployer

Readme

Dirextalk GCP Deployer

dirextalk-deployer creates one fresh production Dirextalk node in an existing Google Cloud project. The official installed gcloud CLI is its sole authentication broker. Cloud discovery, pricing, and resource lifecycle use in-process Google APIs; AWS credentials and the legacy Bash deployer are not used.

The v0.1 contract is intentionally narrow: one Ubuntu 24.04 amd64 VM, one long-lived domain, and no migration or adoption of an existing node.

Before you begin

You need:

  • a Google account with access to an existing, billing-enabled GCP project;
  • the official Google Cloud CLI, installed on Linux or WSL from the Google Cloud instructions and confirmed with gcloud version;
  • permission to enable the five fixed Dirextalk GCP APIs and create the resources shown by later deployment plans;
  • an existing long-lived domain and control of its DNS; and
  • an explicit canonical IPv4 SSH source CIDR. The supplied configuration uses 0.0.0.0/0 so SSH remains reachable when the operator's public IP changes.

The deployer does not create a project, link a billing account, create a DNS zone, or register a domain. A deployment creates paid resources. They continue to incur charges until a destroy finishes, and the boot disk retained by the normal destroy plan can continue billing afterward. Set a GCP budget and alerts independently; the plan estimate is a guardrail, not a bill or price guarantee.

Install a stable release

Install the current multi-platform CLI package from npm using the Rust project's distinct package name (the historical dirextalk-deployer package is unrelated and must not be used):

npm install --global dirextalk-deployer-rs@latest
dirextalk-deployer --version

Download the archive for Windows amd64, Linux amd64, macOS amd64, or macOS arm64 from the GitHub release. Download SHA256SUMS and release-manifest.json from the same release, verify the archive hash, and confirm that the manifest names the expected release tag and source revision before placing dirextalk-deployer on PATH.

Each release also contains the bare Linux amd64 host installer, deterministic runtime bundle, and canonical Ed25519-signed runtime manifest. The outer release manifest binds their SHA-256 values, signing public key, application/updater source revisions, and immutable runtime inputs. Do not use a release with a missing or mismatched trust-chain field.

The audited runtime-signing public key is compiled into each CLI. A key rotation therefore requires a new CLI release with an explicitly reviewed key identity; the CLI never trusts a replacement key merely because it appears beside a downloaded runtime manifest.

Stable release publication accepts only an exact vX.Y.Z tag. Release assets are documented in packaging/README.md.

Configure

Copy examples/deployment.toml outside the source tree and replace every example value. Configuration version 1 rejects unknown fields. It contains identifiers and preferences only—never put gcloud credentials or access tokens, Matrix or agent tokens, SSH private keys, the App initialization code, or other secrets in this file.

release = "stable" resolves to an exact stable release during planning. Use an exact supported release identifier when reproducibility requires a specific version. maximum_monthly_usd makes planning fail when the estimate exceeds the operator's limit; it does not cap the GCP bill.

operator_ssh_cidr = "0.0.0.0/0" deliberately allows SSH from any IPv4 source so a changing operator address does not lock out recovery. A canonical narrower IPv4 CIDR remains supported when the operator has a stable range. The configured value is included in both the SSH firewall effect and the internal plan binding, so changing it requires a new user-facing deployment review.

Every deployment chooses one of two supported machine profiles. The default economy profile is e2-small: two shared guest vCPUs, 2 GiB memory, and 0.5 sustained vCPU in aggregate. It is priced from 365 monthly E2 core-hours plus 1,460 GiB-hours at the 730-hour planning horizon and still requires two units of regional CPUS quota. Choose e2-custom-2-4096 for the standard profile with two fully billable vCPUs and 4 GiB memory. Other machine types are rejected before cloud planning.

connect_agent = "auto" detects one supported local Agent runtime. An orchestrator that already knows its runtime should set DIREXTALK_CONNECT_AGENT to the canonical Agent token before planning and applying; an explicit non-auto config value takes precedence. PATH detection still fails closed when the result is ambiguous or unknown. install_connect = true installs and verifies the service-scoped dirextalk-connect bridge; set it to false only when local installation is intentionally deferred.

Authenticate and inspect the project

dirextalk-deployer auth login
dirextalk-deployer auth status
dirextalk-deployer project inspect --project <project-id>
dirextalk-deployer project prepare --project <project-id>

The auth login, auth status, and auth logout commands broker authentication through the official installed gcloud CLI. They always set a private, isolated Dirextalk CLOUDSDK_CONFIG; they neither read nor change the operator's default gcloud configuration. On Linux and Unix, auth login prints gcloud's Google authorization URL so it can be opened explicitly; on Windows, gcloud retains its normal browser behavior. Complete sign-in only at that URL or in the browser opened by gcloud, and never paste authorization codes or tokens into chat, configuration, shell arguments, or issue reports. Credentials remain in that restricted isolated gcloud configuration and are never copied into deployment state. auth logout removes the session from the isolated configuration only.

Only authentication and broker identity cross the gcloud process boundary. Project discovery, pricing, planning, and resource lifecycle calls remain in-process API operations; the deployer does not run gcloud resource commands.

project prepare first reports the complete fixed prerequisite set plus the currently missing subset: Service Usage, Resource Manager, Cloud Billing, Compute Engine, and Cloud DNS. The Skill verifies the immutable project identity and passes the plan's opaque binding internally; it does not ask the user to copy a machine token. The prepared run enables only the missing services, recording and resuming each Service Usage operation before moving to the next. It does not create a project, link billing, or create paid resources.

Plan and apply

Planning is read-only. The user-facing review contains the project, location, domain and DNS behavior, one of the two supported machine profiles, disk, estimated monthly cost, budget and continuing-billing warning. One natural- language confirmation authorizes that unchanged deployment intent.

dirextalk-deployer deploy plan --config <deployment.toml>

The Skill passes the current plan binding to deploy apply internally and does not display it. A changed configuration, principal, project identity, DNS observation, release, price input, or effect set is not covered by the user's confirmation and must be summarized again.

The deployer records each cloud mutation before executing it. If it stops or reports an infrastructure error, preserve the node state and resume it; do not start another same-name deployment.

Successful deploy apply and full deploy resume output the service domain, HTTPS URL, and eight-digit initial login password in human, JSON, and JSONL formats. Save the password for first login. It is intentionally not repeated by later status, verification, diagnostics, failure, or progress output.

dirextalk-deployer deploy status --config <deployment.toml>
dirextalk-deployer deploy resume --config <deployment.toml>

To stop immediately after recovering only the currently journaled cloud effect, use deploy resume --config <deployment.toml> --pending-only. It revalidates the original approved plan and identities, reconciles that one effect through the normal recovery path, and returns DEPLOY_PENDING_EFFECT_RECONCILED before any later effect or host installation. It requires an existing pending effect; it never advances an idle deployment.

DNS waiting

dns_mode = "auto" uses the longest matching existing public Cloud DNS zone when one is available. The initial plan binds that zone and the observed A record values; after the reserved address is known, the deployer derives the exact A-record effect and continues without another user approval. A concurrent record change still fails closed.

When no matching zone exists, or with dns_mode = "external", deployment stops with exit code 2 and prints exactly one required record:

<domain>  A  <reserved-static-ipv4>

Create that direct A record at the existing DNS provider, wait for authoritative and public-recursive resolution, and run deploy resume with the same config. Do not delete state or create a replacement VM while waiting. This is an external action request, not another deployment approval; resume the unchanged deployment after the record resolves.

Verify and connect locally

After apply or resume completes, run the product verification and install the service-scoped local dirextalk-connect bridge enabled by install_connect:

dirextalk-deployer deploy verify --config <deployment.toml>
dirextalk-deployer connect install --config <deployment.toml>
dirextalk-deployer connect status --config <deployment.toml>
dirextalk-deployer connect doctor --config <deployment.toml>

Verification covers HTTPS, Matrix, TURN, the real Agent room, HTTP MCP initialization, tool discovery, and a read-only MCP call. It never sends a normal chat message. The Cloud Worker is reported as disabled_by_product_scope.

Local credentials and generated state live under ~/.dirextalk/nodes/<domain>/; the project-bound internal service id remains inside authenticated state instead of becoming the folder name. Do not copy that directory into a repository, support ticket, or chat. Reports and structured output remain redacted except for the documented initial_login_password in a successful deployment completion envelope. Treat any other unexpected secret in output as a failure and stop sharing the output.

Destroy

Destroy is also plan-bound. The first command is dry; inspect the exact identities and retained resources, obtain one natural-language destroy confirmation, then let the Skill pass the opaque plan binding internally.

dirextalk-deployer deploy destroy --config <deployment.toml>
dirextalk-deployer deploy status --config <deployment.toml>

The normal approved plan removes deployer-owned DNS, VM, firewall, address, subnet, and network resources, then uninstalls the service-scoped local Connect daemon, while retaining the boot disk. Purging that disk requires its own numeric-id-bound plan and approval:

dirextalk-deployer deploy destroy --config <deployment.toml> --purge-disk <numeric-disk-id>

External DNS and other user-owned DNS resources remain the operator's responsibility. Do not assume billing has stopped until status and GCP read-back confirm every intended deletion.

Output and exit codes

Every command accepts --output human|json|jsonl. A successful deployment completion intentionally includes the service address and initial login password in all three formats; callers must avoid sending that one result to shared logs. Other structured output is not a secret transport.

  • 0: success.
  • 2: expected waiting_user, commonly external DNS or browser action.
  • 1: contract or infrastructure failure; inspect status and resume safely.

The frozen public behavior is in references/gcp-v0.1-contract.md. Developer verification commands are in COMMANDS.md.