Skip to main content
The Node SDK is an event-based client for the dataerai transfer daemon. Operations resolve as soon as the daemon accepts them; transfer progress and completion arrive as events.

Requirements

  • Node.js 18+
  • The dataerai binary on your system (see the CLI overview).
  • Signed in with dataerai auth login (see Authenticate).

Install

npm install @dataerai/ipc-sdk

Quickstart

import { statSync } from "node:fs";
import { DataeraiClient } from "@dataerai/ipc-sdk";

const client = new DataeraiClient({ binaryPath: "/usr/local/bin/dataerai" });
await client.connect();

const { userEmail } = await client.authCheck();
console.log(`Logged in as ${userEmail}`);

client.on("transfer:progress", (e) => {
  const pct = ((e.bytesDone / e.bytesTotal) * 100).toFixed(0);
  console.log(`  ${pct}%`);
});

const path = "/path/to/data.csv";
const done = new Promise((resolve) => client.once("asset:uploadComplete", resolve));

const accepted = await client.assetUpload({
  title: "My dataset",
  ownerType: "project",
  ownerId: "proj-abc123",
  tags: ["csv", "demo"],
  files: [{ localPath: path, filename: "data.csv", size: statSync(path).size }],
});

await done;
console.log(`Uploaded asset ${accepted.assetId}`);

client.destroy();

Methods

MethodDescription
connect()Connect to the daemon (auto-starts it when binaryPath is set).
authCheck()Return the logged-in user and token expiry.
login(params?) / logout()Sign in via the browser flow / clear stored credentials.
assetUpload(params)Start an upload; resolves with { transferId, assetId, contentId, ... }.
assetDownload(params)Start a download to destDir; resolves with accepted file info.
getMetadata(assetId)Retrieve metadata.
setMetadata(assetId, patch)Update metadata fields.
listTransfers()List known transfers.
pauseTransfer / resumeTransfer / cancelTransferControl a running transfer.
destroy()Disconnect and clean up.

Events

Listen for progress and completion:
EventFires when
transfer:progressA chunk completes — carries bytesDone / bytesTotal.
asset:uploadCompleteAn upload finishes — carries assetId, contentId.
asset:downloadCompleteA download finishes — carries destDir.
transfer:failedA transfer fails — carries code and message.
connected / disconnectedThe daemon connection changes.

Next steps

CLI

The command-line client the SDK builds on.

Python SDK

The same operations from Python.