New:Introducing Socket Scanning for VS Code Marketplace Extensions.Learn more →
Get Started

@tilt-launcher/sidecar

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@tilt-launcher/sidecar

Standalone sidecar binary + typed client for the Tilt Launcher SDK — JSON-RPC 2.0 over stdio

latest
Source
npmnpm
Version
1.2.2
Version published
Maintainers
1
Created
Source

@tilt-launcher/sidecar

Standalone sidecar process + typed client for the Tilt Launcher SDK. Communicates via JSON-RPC 2.0 over stdio — use it from any runtime or language.

Install

bun add @tilt-launcher/sidecar
# or
npm install @tilt-launcher/sidecar

This installs both the tilt-sidecar binary and the typed TypeScript client. The SDK (@tilt-launcher/sdk) is included as a dependency — no need to install it separately.

Quick Start

import { createSidecarClient } from '@tilt-launcher/sidecar';

const sidecar = createSidecarClient();
await sidecar.ready();

// Everything is typed — same API as the SDK
const config = await sidecar.getConfig();
const status = await sidecar.getStatus();

await sidecar.startEnv('my-app');

sidecar.onStatusUpdate((update) => {
  console.log('Status changed:', update);
});

sidecar.onLogDelta((delta) => {
  console.log('New logs:', delta);
});

// Clean up
sidecar.close();

Why use the sidecar instead of the SDK directly?

SDKSidecar
Use whenYour app is Bun/Node and you want direct controlYou want a managed subprocess
Process modelIn-processSeparate binary
LanguageTypeScript onlyAny (JSON-RPC over stdio)
LifecycleYou manage polling and cleanupSidecar handles it
Best forLibraries, tight integrationApps, CLIs, multi-language

API

createSidecarClient(options?)

Spawns the sidecar and returns a typed client.

const sidecar = createSidecarClient({
  binPath: '/path/to/tilt-sidecar', // optional, auto-detected
  env: { TILT_LAUNCHER_CONFIG: '/custom/config.json' }, // optional
  readyTimeoutMs: 15000, // optional, default 10s
});

Commands

MethodReturns
ready()Promise<void> — resolves when sidecar is initialized
getConfig()Promise<Config>
saveConfig(config)Promise<Result>
getStatus()Promise<StatusUpdate>
getLogs(envId)Promise<{ envLogs, resourceLogs }>
startEnv(envId)Promise<Result>
stopEnv(envId)Promise<Result>
restartEnv(envId)Promise<Result>
triggerResource(envId, name)Promise<Result>
enableResource(envId, name)Promise<Result>
disableResource(envId, name)Promise<Result>
discoverResources(input)Promise<DiscoverResult>
getHomeDir()Promise<string>
classifyTiltfilePath(path)Promise<PickedTiltfile>
readDir(dirPath)Promise<ReadDirResult>
close()Kills the sidecar process

Events

sidecar.onStatusUpdate((update: StatusUpdate) => { ... });
sidecar.onLogDelta((delta: LogDelta) => { ... });
sidecar.onConfigUpdated((config: Config) => { ... });

Types

All types are re-exported from @tilt-launcher/sdk:

import type { Config, StatusUpdate, LogDelta, ResourceRow } from '@tilt-launcher/sidecar';

Using the binary directly

The sidecar binary can be used from any language via JSON-RPC 2.0 over stdin/stdout:

# Spawn it
./node_modules/.bin/tilt-sidecar

# Send a request (newline-delimited JSON)
{"jsonrpc":"2.0","id":1,"method":"getStatus","params":{}}

# Receive a response
{"jsonrpc":"2.0","id":1,"result":{"envs":{}}}

# Receive push notifications (no id)
{"jsonrpc":"2.0","method":"statusUpdate","params":{...}}

Requirements

  • tilt must be on $PATH
  • macOS or Linux (no Windows support yet)

License

MIT

Keywords

tilt

FAQs

Package last updated on 28 Feb 2026

Related posts