From 69ecabcb8c64148f2c8f3a08109c4ee0ecbc6957 Mon Sep 17 00:00:00 2001 From: Smokey <150986568+jacisjake@users.noreply.github.com> Date: Tue, 27 Oct 2026 15:54:26 -0600 Subject: [PATCH] start.command: real crows from a local .env key; --mock for offline Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01UQnSw4RRWp8uqpj3nsnnXF --- .gitignore | 1 + start.command | 28 +++++++++++++++++++--------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index a2faa1a..9ca58c8 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ dist/ /somanycrows /web/ /dist/ +.env diff --git a/start.command b/start.command index 9cf8aeb..16f9221 100755 --- a/start.command +++ b/start.command @@ -1,19 +1,29 @@ #!/bin/bash -# So Many Crows: local test server. +# So Many Crows: local server. # Double-click to start. Close this window (or Ctrl-C) to stop. # -# Controlled by default: -# - offline mock crows (no API key used, no cost, no network calls) -# - listens on this Mac only (127.0.0.1:8080) -# - all state lives in this folder's .crows/ (delete it to start fresh) -# From Terminal, `./start.command --real` uses real Claude crows (needs ANTHROPIC_API_KEY). +# - Real crows (Claude) when .env in this folder holds ANTHROPIC_API_KEY=...; mock crows otherwise. +# - `./start.command --mock` forces mock crows. +# - Listens on this Mac only (127.0.0.1:8080). State lives in .crows/ (delete it to start fresh). +# - Guardrails: 20,000 tokens per item, 100,000 per list; you approve everything until crows earn trust. cd "$(dirname "$0")" || exit 1 xattr -d com.apple.quarantine ./crows 2>/dev/null chmod +x ./crows -if [ "$1" != "--real" ]; then - unset ANTHROPIC_API_KEY - echo "Controlled mode: offline mock crows." + +unset ANTHROPIC_API_KEY +if [ "$1" != "--mock" ] && [ -f .env ]; then + # Read only the key line; the file is never executed. + ANTHROPIC_API_KEY="$(sed -n 's/^ANTHROPIC_API_KEY=//p' .env | head -n 1 | tr -d '[:space:]')" + CROWS_MODEL_FROM_ENV="$(sed -n 's/^CROWS_MODEL=//p' .env | head -n 1 | tr -d '[:space:]')" + [ -n "$CROWS_MODEL_FROM_ENV" ] && export CROWS_MODEL="$CROWS_MODEL_FROM_ENV" + [ -n "$ANTHROPIC_API_KEY" ] && export ANTHROPIC_API_KEY fi +if [ -n "$ANTHROPIC_API_KEY" ]; then + echo "Real crows: Claude (${CROWS_MODEL:-claude-sonnet-5-5}). Each list is capped at 100,000 tokens." +else + echo "Mock crows (no key in .env, or --mock)." +fi + if lsof -iTCP:8080 -sTCP:LISTEN >/dev/null 2>&1; then echo "Something is already using port 8080. Stop it first." exit 1