Docs / TypeScript SDK

TypeScript SDK Guide

The primary ClawPipe SDK. Install from npm and use with any Node.js or edge runtime.

Install

npm install clawpipe-ai

Full Configuration

Pass a ClawPipeConfig object to the constructor. All options except apiKey and projectId are optional.

OptionTypeDefaultDescription
apiKeystringrequiredYour ClawPipe API key (cp_xxx)
projectIdstringrequiredProject identifier
gatewayUrlstringhttps://api.clawpipe.ai/v1Gateway endpoint URL
cacheTtlMsnumber300000Cache time-to-live in ms (5 min)
enableBoosterbooleantrueEnable Agent Booster stage
enablePackerbooleantrueEnable Context Packer stage
enableCachebooleantrueEnable Semantic Cache stage
enableTracebooleanfalseEnable pipeline stage tracing
localModelUrlstringauto-detectURL of a local LLM server
enableLocalFallbackbooleanfalseAuto-detect local LLM servers
budgetCapUsdnumberundefinedHard budget cap in USD
budgetWarnUsdnumberundefinedSoft budget warning threshold
rateLimitPerDaynumbertier defaultMax calls per day
allowlistAllowlistEntry[]undefinedPermitted providers/models
denylistAllowlistEntry[]undefinedBlocked providers/models
enableAuditbooleanfalseEnable audit logging
auditTransportfunctionconsoleCustom audit log handler
enableTelemetrybooleantrueEnable telemetry tracking
circuitBreakerThresholdnumber5Failures before circuit opens
circuitBreakerRecoveryMsnumber30000Recovery time in ms

PromptOptions

OptionTypeDescription
systemstringSystem prompt
maxTokensnumberMax output tokens
temperaturenumberSampling temperature (0-2)
modelstringForce a specific model
providerstringForce a specific provider
taskTypestringHint for the router (e.g. "code", "chat")

All Exports

Core Pipeline

import { ClawPipe, Booster, Packer, Cache, Router, Gateway } from 'clawpipe-ai';

Enterprise Features

import { Telemetry, Budget, RateLimiter, CircuitBreaker } from 'clawpipe-ai';
import { Allowlist, AuditLogger } from 'clawpipe-ai';

Advanced Modules

import { Swarm, SemanticCache, Rag, Voice } from 'clawpipe-ai';
import { Tracer, WeightStore, LocalProvider, LocalGateway } from 'clawpipe-ai';
import { OpenAICompat } from 'clawpipe-ai'; // OpenAI drop-in replacement

Type Exports

import type {
  ClawPipeConfig, PromptOptions, PipelineMeta, PipelineResult,
  TelemetrySnapshot, AllowlistEntry, AuditLogEntry, AuditTransport,
  GatewayResponse, BudgetStatus, RateLimitStatus, CircuitStatus,
  RouteDecision, PackResult, SwarmConfig, SwarmStrategy, SwarmResult,
  SwarmCandidate, SemanticCacheConfig, StageTrace, TraceEvent,
  StoredWeight, ChatCompletion, ChatCompletionMessage, Choice,
  CompletionUsage, OpenAIConfig, CreateParams,
} from 'clawpipe-ai';

Streaming

for await (const chunk of pipe.stream('Analyze this code', {
  system: 'You are a code reviewer',
})) {
  process.stdout.write(chunk);
}

Observability Methods

pipe.stats();          // TelemetrySnapshot: requests, cost, cache rate
pipe.budgetStatus();   // Budget: spent, cap, remaining, percent
pipe.rateLimitStatus();// Rate limits: remaining calls, reset time
pipe.circuitStatus();  // Provider health: state, failures per provider
pipe.auditLogs();      // Compliance: timestamped action log

CLI Usage

clawpipe prompt "What is 2+2"                         # Send a prompt
clawpipe prompt "Explain" --system "..." --trace     # With tracing
clawpipe test                                          # Test pipeline
clawpipe stats                                         # Telemetry
clawpipe export                                        # JSON telemetry
clawpipe config                                        # Show configuration

Pipeline Tracing

const pipe = new ClawPipe({ ...config, enableTrace: true });
const result = await pipe.prompt('Hello');
console.log(result.trace);
// --- trace:
//   Booster      0.1ms (result=pass-through)
//   Packer       0.3ms (savings=22%)
//   Cache        0.1ms (result=miss)
//   Router       0.2ms (model=deepseek:deepseek-chat)
//   Gateway    412.0ms (tokensOut=156)
//   Total      412.7ms

// Export as Perfetto JSON for visual analysis:
const tracer = new Tracer(true);
tracer.toPerfetto(); // Chrome-compatible trace format