nico commited on
Commit
a895a12
·
1 Parent(s): 033b658

Add MODEL_BASE_URL env for local-model agents (forwarded to /join)

Browse files
Files changed (2) hide show
  1. .env-example +7 -0
  2. src/index.ts +10 -5
.env-example CHANGED
@@ -17,5 +17,12 @@ MODEL=openai/gpt-5-nano
17
  # Optional: OpenRouter API key passed to the server so our side can call your model during play.
18
  OPENROUTER_API_KEY=
19
 
 
 
 
 
 
 
 
20
  # Optional: on-chain wallet you want the cashout paid to (mocked in dev, real in prod).
21
  CASHOUT_WALLET=
 
17
  # Optional: OpenRouter API key passed to the server so our side can call your model during play.
18
  OPENROUTER_API_KEY=
19
 
20
+ # Optional: PUBLIC HTTPS URL of your OpenAI-compatible local model.
21
+ # Use this to plug your own Ollama / llama.cpp / vLLM / LM Studio model into the casino.
22
+ # Must be reachable from the public internet — expose your local server via cloudflared:
23
+ # cloudflared tunnel --url http://localhost:11434
24
+ # …then set MODEL_BASE_URL=https://<random>.trycloudflare.com/v1/chat/completions
25
+ MODEL_BASE_URL=
26
+
27
  # Optional: on-chain wallet you want the cashout paid to (mocked in dev, real in prod).
28
  CASHOUT_WALLET=
src/index.ts CHANGED
@@ -29,6 +29,8 @@ const CASINO = (process.env.CASINO_URL || "http://localhost:8000").replace(/\
29
  const MODEL = process.env.MODEL || "openai/gpt-5-nano";
30
  const APIKEY = process.env.OPENROUTER_API_KEY || "";
31
  const CASHOUT_WALLET = process.env.CASHOUT_WALLET || "";
 
 
32
 
33
  function mustEnv(name: string): string {
34
  const v = process.env[name];
@@ -103,12 +105,15 @@ async function cmdTopup(usdc = 0.01) {
103
  }
104
  }
105
 
106
- async function cmdJoin(name: string, model = MODEL, buyIn = 10.0) {
107
  requireToken();
108
- if (!name) { console.error(chalk.red("usage: join <name> [model]")); process.exit(1); }
109
- const r: any = await api("/api/twitch/join", {
110
- name, model, api_key: APIKEY, buy_in_usdc: buyIn, token: TOKEN,
111
- });
 
 
 
112
  console.log(chalk.cyan(JSON.stringify(r, null, 2)));
113
  }
114
 
 
29
  const MODEL = process.env.MODEL || "openai/gpt-5-nano";
30
  const APIKEY = process.env.OPENROUTER_API_KEY || "";
31
  const CASHOUT_WALLET = process.env.CASHOUT_WALLET || "";
32
+ // Optional: public HTTPS URL of an OpenAI-compat endpoint (your local model exposed via cloudflared/ngrok).
33
+ const BASE_URL = process.env.MODEL_BASE_URL || "";
34
 
35
  function mustEnv(name: string): string {
36
  const v = process.env[name];
 
105
  }
106
  }
107
 
108
+ async function cmdJoin(name: string, model = MODEL, buyIn = 10.0) { // $10 = 1000 chips, matches house-bot stacks
109
  requireToken();
110
+ if (!name) { console.error(chalk.red("usage: join <name> [model] [buy_in_usdc]")); process.exit(1); }
111
+ const body: any = { name, model, api_key: APIKEY, buy_in_usdc: buyIn, token: TOKEN };
112
+ if (BASE_URL) {
113
+ body.base_url = BASE_URL;
114
+ console.log(chalk.gray(` using local agent endpoint: ${BASE_URL}`));
115
+ }
116
+ const r: any = await api("/api/twitch/join", body);
117
  console.log(chalk.cyan(JSON.stringify(r, null, 2)));
118
  }
119