Skip to main content

Install

The TypeScript/JavaScript SDK is one package: @zeq/sdk. It is published to Zeq's own registry — not npmjs. Point the @zeq scope at the registry once, then install normally.

npm config set @zeq:registry https://zeqsdk.com
npm install @zeq/sdk

That's it. import { ZeqClient, pulse } from "@zeq/sdk" and you're computing — locally, with no key. Jump to Hello, Zeq.

Prefer a project-local config? Drop this in a .npmrc next to your package.json instead of running npm config set:

@zeq:registry=https://zeqsdk.com

One-liner installer (adds the zeq CLI)

The framework's installer wires the scope registry and installs the zeq command-line tool in one step:

curl -fsSL https://zeqsdk.com/install.sh | sh
zeq pulse # confirm the clock
zeq tutorial # guided: account → machine → first compute → verify

Full command reference: /cli/.

Python

The Python client is a single, standard-library-only file. It is fetched, not pip-installedpip install zeq does not exist, by design.

curl -fsSO https://zeqsdk.com/cli/zeq.py # the client
curl -fsS https://zeqsdk.com/cli/zeq.py.sha256 # the pin — verify before first use

Then from zeq import Zeq. See SDKs → Python.

Install from any node

The @zeq scope registry is served by every framework node, so any of these hosts works as the registry — pick whichever is closest or already in your allowlist:

npm config set @zeq:registry https://zeqsdk.com # the canonical SDK host
npm config set @zeq:registry https://zeqond.com # any node works
npm config set @zeq:registry https://zeqstate.com
npm config set @zeq:registry https://zeqapi.com
npm config set @zeq:registry https://zeq.dev

npm install @zeq/sdk then resolves against whichever you set. The tarball is byte-identical across nodes. The same applies to the curl installer and zeq.py — swap the host, the bytes match.

Requirements

  • Node 18+ for the TypeScript/JavaScript SDK (ESM, "type": "module"). Works in modern browsers too.
  • Python 3.8+ for zeq.py (standard library only — no NumPy required, though the JSON envelope drops straight into NumPy/pandas if you have them).
  • No account and no API key needed to install or to compute locally. A key is only required for signed, platform-verified results — see below.

Getting an API key (optional)

new ZeqClient() computes locally with no key. You only need a key for a signed, independently verifiable envelope from the platform. Three ways to get one:

  1. Terminal CLI (fastest)zeq signup "<phrase>" mints your ZID + machine + API key in one command. See /cli/.
  2. Hosted — sign up at zeq.dev and copy your key from /portal/.
  3. Self-hosted — run the stack yourself and issue a key locally. See Self-hosting.

Pass the key to the constructor (or set ZEQ_API_KEY in your shell):

import { ZeqClient } from "@zeq/sdk";

const zeq = new ZeqClient({
apiKey: process.env.ZEQ_API_KEY,
origin: "https://zeqsdk.com", // any node; defaults to the platform
});

A client API key in your shell env is fine. Framework-side secrets are different — they live in the ZSC vault, never in a .env file; see ZSC bootstrap if you're self-hosting.

Verify the install

The fastest check needs no key — read the HulyaPulse clock:

import { pulse } from "@zeq/sdk";

const p = pulse();
console.log(p);
// {
// zeqond: 2292305743, // floor(unix / 0.777000777)
// phase: 0.412,
// pulseHz: 1.287,
// zeqondSec: 0.777,
// R_t: 0.999917, // R(t) = S(t)·[1 + α·sin(2πft)]
// }

If pulseHz is 1.287 and zeqondSec is 0.777, the SDK is wired to a real Zeq clock. If either differs, stop — the install is broken.

Next

Run your first computation → Hello, Zeq.