Quickstart: JavaScript
@hyphae/cloud vive en sdks/js/ del repositorio (aún no está en un registro; úsalo como dependencia de workspace o file:). No tiene dependencias en tiempo de ejecución, funciona en Node 22+ y navegadores modernos, y es un cliente, no una autoridad: guarda tu token, llama a las rutas y devuelve los campos del servidor sin cambios.
import { CloudError, createCloudClient } from "@hyphae/cloud";
const cloud = createCloudClient({ url: "https://infra-hyphae.run" });
await cloud.auth.signup({ email: `dev-${Date.now()}@ejemplo.com`, password: "phase0-password", invite_code: process.env.INVITE_CODE });const project = await cloud.projects.create({ name: "quickstart" });await cloud.projects.wakeup(project.id);
const issued = await cloud.keys.create(project.id, { label: "quickstart" }); // el secreto se muestra una vezconst data = cloud.data(project.id, { key: issued.key }); // el plano de la claveconst caps = await data.capabilities();if (caps.decoded.kind === "capabilities") { const c = caps.decoded.value; console.log(`${project.id}: engine api v${c.product_api_version}, max_sql_rows ${c.max_sql_rows}`);}
try { await cloud.snapshots.create(project.id); // necesita el tenant dormido} catch (e) { if (e instanceof CloudError && e.isTenantRunning) await cloud.projects.sleep(project.id); else throw e;}const snap = await cloud.snapshots.create(project.id, { label: "primero" });console.log(`snapshot ${snap.id} en visible_csn ${snap.lineage.visible_csn} (${snap.backup.status})`);Dos clientes, dos planos: cloud.* usa tu sesión (rutas de propietario y todo lo demás); cloud.data(projectId, { key }) usa una clave de proyecto y expone solo lo que una clave puede hacer — capabilities(), storage, publish/subscribe, invoke y raw(path) para cualquier petición /v2. A propósito no tiene secrets.
Superficie y errores: referencia del SDK.