@auxot/cli 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +60 -12
- package/dist/index.js.map +3 -3
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2417,7 +2417,8 @@ import { writeFileSync, mkdirSync } from "node:fs";
|
|
|
2417
2417
|
import { join } from "node:path";
|
|
2418
2418
|
import { createInterface } from "node:readline";
|
|
2419
2419
|
import { tmpdir } from "node:os";
|
|
2420
|
-
|
|
2420
|
+
import { randomBytes as randomBytes2 } from "node:crypto";
|
|
2421
|
+
var DEFAULT_MODEL = "Qwen3-Coder-30B-A3B";
|
|
2421
2422
|
var DOCKER_IMAGE = "ghcr.io/auxothq/auxot-router";
|
|
2422
2423
|
var args = process.argv.slice(2);
|
|
2423
2424
|
var command = args[0];
|
|
@@ -2458,7 +2459,7 @@ async function main() {
|
|
|
2458
2459
|
async function runSetup() {
|
|
2459
2460
|
const fly = getFlag("fly");
|
|
2460
2461
|
const model = getOption("model") || DEFAULT_MODEL;
|
|
2461
|
-
const appName = getOption("app") ||
|
|
2462
|
+
const appName = getOption("app") || `auxot-${randomBytes2(6).toString("hex")}`;
|
|
2462
2463
|
console.log("Generating keys...\n");
|
|
2463
2464
|
const adminKey = await generateAdminKey();
|
|
2464
2465
|
const apiKey = await generateAPIKey();
|
|
@@ -2473,25 +2474,72 @@ async function runSetup() {
|
|
|
2473
2474
|
console.log("# API Key (give to API callers):");
|
|
2474
2475
|
console.log(`# ${apiKey.key}`);
|
|
2475
2476
|
console.log("#");
|
|
2477
|
+
console.log(`# Change APP_NAME to customize your deployment:`);
|
|
2478
|
+
console.log("#");
|
|
2479
|
+
console.log(`export APP_NAME="${appName}"`);
|
|
2480
|
+
console.log();
|
|
2476
2481
|
console.log("# Step 1: Create your Fly app");
|
|
2477
2482
|
console.log("#");
|
|
2478
|
-
console.log(`fly apps create $
|
|
2483
|
+
console.log(`fly apps create $APP_NAME`);
|
|
2484
|
+
console.log();
|
|
2485
|
+
console.log("# Step 2: Write fly.toml");
|
|
2486
|
+
console.log("#");
|
|
2487
|
+
console.log(`cat > fly.toml << EOF`);
|
|
2488
|
+
console.log(`app = "$APP_NAME"`);
|
|
2489
|
+
console.log(`primary_region = 'iad'`);
|
|
2490
|
+
console.log();
|
|
2491
|
+
console.log(`[http_service]`);
|
|
2492
|
+
console.log(` internal_port = 8080`);
|
|
2493
|
+
console.log(` force_https = true`);
|
|
2494
|
+
console.log(` auto_stop_machines = 'off'`);
|
|
2495
|
+
console.log(` auto_start_machines = true`);
|
|
2496
|
+
console.log(` min_machines_running = 1`);
|
|
2497
|
+
console.log();
|
|
2498
|
+
console.log(` [[http_service.checks]]`);
|
|
2499
|
+
console.log(` grace_period = '10s'`);
|
|
2500
|
+
console.log(` interval = '30s'`);
|
|
2501
|
+
console.log(` method = 'GET'`);
|
|
2502
|
+
console.log(` timeout = '5s'`);
|
|
2503
|
+
console.log(` path = '/health'`);
|
|
2504
|
+
console.log();
|
|
2505
|
+
console.log(`[vm]`);
|
|
2506
|
+
console.log(` cpu_kind = 'shared'`);
|
|
2507
|
+
console.log(` cpus = 1`);
|
|
2508
|
+
console.log(` memory_mb = 256`);
|
|
2509
|
+
console.log(`EOF`);
|
|
2479
2510
|
console.log();
|
|
2480
|
-
console.log("# Step
|
|
2511
|
+
console.log("# Step 3: Set secrets");
|
|
2481
2512
|
console.log("#");
|
|
2482
2513
|
console.log(`fly secrets set \\`);
|
|
2483
2514
|
console.log(` AUXOT_ADMIN_KEY_HASH='${adminKey.hash}' \\`);
|
|
2484
2515
|
console.log(` AUXOT_API_KEY_HASH='${apiKey.hash}' \\`);
|
|
2485
2516
|
console.log(` AUXOT_MODEL='${model}' \\`);
|
|
2486
|
-
console.log(` -a $
|
|
2517
|
+
console.log(` -a $APP_NAME`);
|
|
2487
2518
|
console.log();
|
|
2488
|
-
console.log("# Step
|
|
2519
|
+
console.log("# Step 4: Deploy");
|
|
2489
2520
|
console.log("#");
|
|
2490
|
-
console.log(`fly deploy --image ${DOCKER_IMAGE}:latest -a $
|
|
2521
|
+
console.log(`fly deploy --image ${DOCKER_IMAGE}:latest --ha=false -a $APP_NAME`);
|
|
2491
2522
|
console.log();
|
|
2492
|
-
console.log("# Step
|
|
2523
|
+
console.log("# Step 5: Connect a GPU worker");
|
|
2524
|
+
console.log("#");
|
|
2525
|
+
console.log("# Run this on the machine with your GPU. This is a long-running process");
|
|
2526
|
+
console.log("# that must stay running for inference to work.");
|
|
2527
|
+
console.log("#");
|
|
2528
|
+
console.log(`npx @auxot/worker-cli --gpu-key ${adminKey.key} --router-url wss://$APP_NAME.fly.dev/ws`);
|
|
2529
|
+
console.log();
|
|
2530
|
+
console.log("# Step 6: Configure your tools");
|
|
2531
|
+
console.log("#");
|
|
2532
|
+
console.log("# Point any OpenAI or Anthropic-compatible tool at your router:");
|
|
2533
|
+
console.log("#");
|
|
2534
|
+
console.log("# OpenAI-compatible base URL:");
|
|
2535
|
+
console.log(`# https://$APP_NAME.fly.dev/api/openai`);
|
|
2536
|
+
console.log("#");
|
|
2537
|
+
console.log("# Anthropic-compatible base URL:");
|
|
2538
|
+
console.log(`# https://$APP_NAME.fly.dev/api/anthropic`);
|
|
2539
|
+
console.log("#");
|
|
2540
|
+
console.log(`# API Key: ${apiKey.key}`);
|
|
2493
2541
|
console.log("#");
|
|
2494
|
-
console.log(
|
|
2542
|
+
console.log("# Works with: Claude Code, Cursor, Open WebUI, LangChain, etc.");
|
|
2495
2543
|
console.log();
|
|
2496
2544
|
} else {
|
|
2497
2545
|
console.log("=== GPU KEY (for workers) ===");
|
|
@@ -2620,7 +2668,7 @@ primary_region = '${region}'
|
|
|
2620
2668
|
console.log(` API Key: ${apiKey.key}`);
|
|
2621
2669
|
console.log();
|
|
2622
2670
|
console.log(" Connect a GPU worker:");
|
|
2623
|
-
console.log(` npx @auxot/worker-cli --gpu-key ${adminKey.key} --router wss://${appName}.fly.dev/ws`);
|
|
2671
|
+
console.log(` npx @auxot/worker-cli --gpu-key ${adminKey.key} --router-url wss://${appName}.fly.dev/ws`);
|
|
2624
2672
|
console.log();
|
|
2625
2673
|
console.log(" Send a request:");
|
|
2626
2674
|
console.log(` curl https://${appName}.fly.dev/api/openai/v1/chat/completions \\`);
|
|
@@ -2644,10 +2692,10 @@ function printHelp() {
|
|
|
2644
2692
|
Usage:
|
|
2645
2693
|
npx @auxot/cli setup Generate keys and print env vars
|
|
2646
2694
|
npx @auxot/cli setup --fly Print complete Fly.io deploy steps
|
|
2647
|
-
npx @auxot/cli setup --fly --app X Use custom app name (default: auxot
|
|
2695
|
+
npx @auxot/cli setup --fly --app X Use custom app name (default: auxot-<random>)
|
|
2648
2696
|
npx @auxot/cli setup --model NAME Use a specific model (default: ${DEFAULT_MODEL})
|
|
2649
2697
|
npx @auxot/cli deploy Deploy auxot-router to Fly.io (interactive)
|
|
2650
|
-
npx @auxot/cli deploy --app NAME App name (
|
|
2698
|
+
npx @auxot/cli deploy --app NAME App name (prompted if not given)
|
|
2651
2699
|
npx @auxot/cli deploy --region RGN Fly.io region (default: iad)
|
|
2652
2700
|
npx @auxot/cli deploy --model NAME Model to serve
|
|
2653
2701
|
npx @auxot/cli help Print this help
|