Skip to main content

Overview

sinker is a single binary that starts the transaction sidecar and provides developer commands for inspecting its live state. No separate installation required — build once, use everywhere.

Sidecar commands

sinker up

Start the full stack — sidecar and AI agent (Synapse) together in a single terminal. Both processes share stdout; agent lines are prefixed with [ AGENT ] to keep the streams readable.
This is the recommended command for normal development and production. The Synapse layer connects to the sidecar via /internal/agent/presence on startup, registers its model/provider, and begins driving submissions.

sinker start

Start the sidecar only — without spawning the AI agent. The sidecar streams slots, maintains the tip oracle and leader buffer, and exposes the HTTP API. The Synapse agent must be started separately (e.g. sinker agent in another terminal).
Decision mode defaults to cortex (LLM on every submission). Set AGENT_DECISION_MODE=reflex in .env to boot in reflex mode, or flip at runtime via POST /internal/mode.

sinker start --bypass

Skip the AI agent entirely. Submits transactions at a fixed tip the instant they are enqueued. Useful for testing the frontend → sidecar → Jito path without the AI layer.

sinker agent

Start the Synapse TypeScript agent in a separate process. Runs npm run dev inside the agents/ directory (override with AGENT_DIR env var).

sinker web

Start the Next.js dashboard. Runs npm run dev inside the web/ directory (override with WEB_DIR env var).

sinker smoke

Run the stream_smoke integration test — connects to Yellowstone, waits for a Jito leader window, submits one bundle, and polls until finalization.

Inspect commands

Inspect commands query a running sidecar at http://localhost:{API_PORT} (default 7777). Start the sidecar first with sinker start or sinker up.

sinker status

Print a summary of the current sidecar state: slot, leader identity, whether the current leader is running Jito, tip floor (p50/p75), active decision mode, and pending queue depth.

sinker tip

Print the full tip floor percentile table.

sinker queue

Print the pending transaction queue contents with age and priority.

sinker lifecycle

Print recent bundle lifecycle history. Shows the most recent 10 entries by default.
Each entry shows the decision tier (reflex / cortex) and whether the Reflex path escalated to the LLM.

sinker bundle <id>

Print the full JSON lifecycle entry for a specific bundle, including the AI decision trace, commitment timeline (submitted → processed → confirmed → finalized), tip floor at submit time, and all transaction signatures.

Policy commands

sinker policy gates what the Synapse agent is allowed to do — tip caps, retry limits, queue depth, and throughput controls. Settings persist in sinker.policy.json between restarts.

Policy reference →

Full reference for all 10 policy keys and 7 sub-commands.

The Synapse AI layer

Sinker’s AI layer — Synapse — is the decision junction that evaluates each transaction cycle and routes it to one of two tiers: Both tiers are LLM-backed. Reflex routes most cycles deterministically and only calls the model when it encounters an edge case. Cortex calls the model unconditionally.

Switching modes at runtime

Agent presence

The Synapse agent keeps a persistent SSE connection open to /internal/agent/presence. When it connects, it registers its model and provider. Check agent status:

Environment variables