SPB Git

spb/admin-ka

Public

runs locaux: injecter tout ~/.claude/.env (APIFY_TOKEN, etc.)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Simon-Pierre Boucher committed (Aug 20, 2026) parent bde8b3a Browse files

4 changed files +20 −7

modified data/backend.log +1 −0
@@ -7,3 +7,4 @@ admin-ka backend sur port 3300 (dual-stack)
7 admin-ka v2 sur port 3300 (dual-stack) 7 admin-ka v2 sur port 3300 (dual-stack)
8 admin-ka v2 sur port 3300 (dual-stack) 8 admin-ka v2 sur port 3300 (dual-stack)
9 admin-ka v2 sur port 3300 (dual-stack) 9 admin-ka v2 sur port 3300 (dual-stack)
10+admin-ka v2 sur port 3300 (dual-stack)
modified data/eco.sqlite +0 −0

Binary file not shown.

modified data/ngrok.log +6 −0
@@ -323,3 +323,9 @@ t=2026-08-20T00:38:11-0400 lvl=info msg="join connections" obj=join id=83adadecc
323 t=2026-08-20T00:38:39-0400 lvl=info msg="join connections" obj=join id=f7755b441375 l=[::1]:3300 r=[2605:b100:121:7aaf:a44c:a261:eb80:fba]:54373 323 t=2026-08-20T00:38:39-0400 lvl=info msg="join connections" obj=join id=f7755b441375 l=[::1]:3300 r=[2605:b100:121:7aaf:a44c:a261:eb80:fba]:54373
324 t=2026-08-20T00:38:39-0400 lvl=info msg="join connections" obj=join id=274ae66881de l=[::1]:3300 r=[2605:b100:121:7aaf:a44c:a261:eb80:fba]:54376 324 t=2026-08-20T00:38:39-0400 lvl=info msg="join connections" obj=join id=274ae66881de l=[::1]:3300 r=[2605:b100:121:7aaf:a44c:a261:eb80:fba]:54376
325 t=2026-08-20T01:02:03-0400 lvl=info msg="join connections" obj=join id=504deb98fb4c l=[::1]:3300 r=70.25.239.68:61599 325 t=2026-08-20T01:02:03-0400 lvl=info msg="join connections" obj=join id=504deb98fb4c l=[::1]:3300 r=70.25.239.68:61599
326+t=2026-08-20T01:02:04-0400 lvl=info msg="join connections" obj=join id=21d3b27089b3 l=[::1]:3300 r=70.25.239.68:50559
327+t=2026-08-20T01:05:35-0400 lvl=info msg="join connections" obj=join id=e796ab5e83a3 l=[::1]:3300 r=70.25.239.68:61603
328+t=2026-08-20T01:05:35-0400 lvl=info msg="join connections" obj=join id=67f44373f352 l=[::1]:3300 r=70.25.239.68:61603
329+t=2026-08-20T01:05:35-0400 lvl=info msg="join connections" obj=join id=4b8ab47d4ea5 l=[::1]:3300 r=70.25.239.68:61603
330+t=2026-08-20T01:05:36-0400 lvl=info msg="join connections" obj=join id=c5fc9e96ae20 l=[::1]:3300 r=70.25.239.68:61607
331+t=2026-08-20T01:05:42-0400 lvl=info msg="join connections" obj=join id=4c93058d9170 l=[::1]:3300 r=70.25.239.68:61603
modified server/server.js +13 −7
@@ -31,15 +31,21 @@ const PORT = config.port || 3300;
31 const CLAUDE_BIN = config.claudeBin || '/opt/homebrew/bin/claude'; 31 const CLAUDE_BIN = config.claudeBin || '/opt/homebrew/bin/claude';
32 const NODE_BIN = config.nodeBin || '/opt/homebrew/bin/node'; 32 const NODE_BIN = config.nodeBin || '/opt/homebrew/bin/node';
33 33
34−function loadAnthropicKey() { 34+// toutes les variables de ~/.claude/.env (ANTHROPIC_API_KEY, APIFY_TOKEN, …)
35+// sont injectées dans les runs claude locaux (les runs distants font
36+// `export $(cat ~/.claude/.env | xargs)` côté nœud)
37+function loadClaudeEnv() {
38+ const out = {};
35 try { 39 try {
36− const envFile = fs.readFileSync(path.join(HOME, '.claude', '.env'), 'utf8'); 40+ for (const line of fs.readFileSync(path.join(HOME, '.claude', '.env'), 'utf8').split('\n')) {
37− const m = envFile.match(/ANTHROPIC_API_KEY=(\S+)/); 41+ const m = line.match(/^([A-Z0-9_]+)=(\S+)/);
38− if (m) return m[1]; 42+ if (m) out[m[1]] = m[2];
43+ }
39 } catch {} 44 } catch {}
40− return process.env.ANTHROPIC_API_KEY || ''; 45+ return out;
41 } 46 }
42−const ANTHROPIC_API_KEY = loadAnthropicKey(); 47+const CLAUDE_ENV = loadClaudeEnv();
48+const ANTHROPIC_API_KEY = CLAUDE_ENV.ANTHROPIC_API_KEY || process.env.ANTHROPIC_API_KEY || '';
43 49
44 // ---------- audit ---------- 50 // ---------- audit ----------
45 const AUDIT_PATH = path.join(DATA_DIR, 'audit.jsonl'); 51 const AUDIT_PATH = path.join(DATA_DIR, 'audit.jsonl');
@@ -241,7 +247,7 @@ function startClaude(chat, prompt) {
241 proc = spawn(CLAUDE_BIN, args, { 247 proc = spawn(CLAUDE_BIN, args, {
242 cwd: chat.dir, 248 cwd: chat.dir,
243 env: { 249 env: {
244− ...process.env, ANTHROPIC_API_KEY, 250+ ...process.env, ...CLAUDE_ENV,
245 PATH: '/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin', HOME, 251 PATH: '/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin', HOME,
246 }, 252 },
247 stdio: ['pipe', 'pipe', 'pipe'], 253 stdio: ['pipe', 'pipe', 'pipe'],
248 254
Menu

Theme