# routstrd Routstr daemon - A CLI tool for managing routstr processes, similar to `cocod` (a Cashu wallet daemon). ## Overview routstrd is a Bun-based CLI tool that provides a background daemon for the Routstr protocol. It integrates with `cocod` for wallet management and uses the Routstr SDK to handle provider routing and model discovery. ## Routstr for Teams For team-based routing, see [routstrd-auth](https://github.com/Routstr/routstrd-auth). ## Features - **Daemon Mode**: Run routstrd as a background HTTP server - **Wallet Integration**: Works with cocod for Cashu token management - **Provider Routing**: Automatically discovers and routes requests to available providers - **Config Management**: Stores configuration in `~/.routstrd/` ## Requirements - [Bun](https://bun.sh) runtime ```sh curl -fsSL https://bun.com/install | bash ``` ## Installation ### Step 1: Install **Global with bun:** ```sh bun i -g routstrd ``` **OR - From source:** ```sh git clone https://github.com/routstr/routstrd.git cd routstrd bun install bun link ``` ### Step 2: Setup & Fund ```sh routstrd onboard routstrd receive # receive a Cashu token routstrd receive 2100 # to top up 2100 sats with lightning ``` ### Step 3: Integrate with Claude Code ```sh routstrd clients add --claude-code # or --pi-agent / --opencode ``` ## Use Routstrd Skill > **Tip:** You can also install the [routstrd skill](https://github.com/Routstr/routstrd/blob/main/SKILL.md) so the agent can manage routstrd for you. ## More Commands ### Start Daemon Start the background daemon: ```sh routstrd start ``` With custom port: ```sh routstrd start --port 9000 ``` With specific provider: ```sh routstrd start --provider https://your-provider.com ``` ### CLI Commands Check daemon status: ```sh routstrd status ``` Get wallet balance: ```sh routstrd balance ``` Test connection: ```sh routstrd ping ``` Stop the daemon: ```sh routstrd stop ``` ### Daemon API The daemon exposes an HTTP server (default port 8008) with the following endpoints: #### Health Check ``` GET /health ``` #### Route Request ``` POST / ``` Request body: ```json { "model": "model-id", "messages": [...], "stream": false } ``` Response: ```json { "choices": [...], "usage": {...} } ``` ## Configuration Configuration is stored in `~/.routstrd/config.json`: ```json { "port": 8008, "provider": null, "cocodPath": null } ``` ### Environment Variables - `ROUTSTRD_DIR` - Config directory (default: `~/.routstrd`) - `ROUTSTRD_SOCKET` - Socket path (default: `~/.routstrd/routstrd.sock`) - `ROUTSTRD_PID` - PID file path (default: `~/.routstrd/routstrd.pid`) ## Development Install dependencies: ```sh bun install ``` Run CLI: ```sh bun run start ``` Run daemon: ```sh bun run start ``` Typecheck: ```sh bun run lint ``` ## Project Structure ``` routstrd/ ├── src/ │ ├── index.ts # Entry point with shebang │ ├── cli.ts # Commander CLI commands │ ├── cli-shared.ts # IPC utilities │ ├── daemon.ts # HTTP server daemon │ └── utils/ │ └── config.ts # Path configuration ├── package.json └── tsconfig.json ``` ## License MIT