Script for easily configuring, using, switching and comparing local offline coding models
at main 96 lines 2.1 kB view raw
1export interface TuiDef { 2 id: string; 3 name: string; 4 installCmd: string; 5 checkCmd: string; 6 launchArgs: string; 7 /** Extra args to pass when resuming a previous session. */ 8 resumeArgs?: string[]; 9 /** If set, launch via `ollama launch <ollamaLaunch> --model <tag>` instead of direct exec. */ 10 ollamaLaunch?: string; 11} 12 13export const TUIS: TuiDef[] = [ 14 { 15 id: "claude", 16 name: "Claude Code", 17 installCmd: "npm install -g @anthropic-ai/claude-code", 18 checkCmd: "claude", 19 launchArgs: '"$@"', 20 ollamaLaunch: "claude", 21 }, 22 { 23 id: "codex", 24 name: "Codex CLI", 25 installCmd: "npm install -g @openai/codex", 26 checkCmd: "codex", 27 launchArgs: '"$@"', 28 ollamaLaunch: "codex", 29 }, 30 { 31 id: "opencode", 32 name: "OpenCode", 33 installCmd: "npm install -g opencode-ai@latest", 34 checkCmd: "opencode", 35 launchArgs: '"$@"', 36 ollamaLaunch: "opencode", 37 }, 38 { 39 id: "pi", 40 name: "Pi", 41 installCmd: "npm install -g @mariozechner/pi-coding-agent", 42 checkCmd: "pi", 43 launchArgs: '"$@"', 44 ollamaLaunch: "pi", 45 }, 46 { 47 id: "cline", 48 name: "Cline", 49 installCmd: "npm install -g @anthropic-ai/cline", 50 checkCmd: "cline", 51 launchArgs: '"$@"', 52 ollamaLaunch: "cline", 53 }, 54 { 55 id: "droid", 56 name: "Droid", 57 installCmd: "npm install -g droid", 58 checkCmd: "droid", 59 launchArgs: '"$@"', 60 ollamaLaunch: "droid", 61 }, 62 { 63 id: "openclaw", 64 name: "OpenClaw", 65 installCmd: "npm install -g openclaw", 66 checkCmd: "openclaw", 67 launchArgs: '"$@"', 68 ollamaLaunch: "openclaw", 69 }, 70 { 71 id: "aider", 72 name: "Aider", 73 installCmd: "pipx install aider-chat", 74 checkCmd: "aider", 75 launchArgs: '"$@"', 76 }, 77 { 78 id: "goose", 79 name: "Goose", 80 installCmd: "brew install block-goose-cli", 81 checkCmd: "goose", 82 launchArgs: '"$@"', 83 }, 84 { 85 id: "gptme", 86 name: "gptme", 87 installCmd: "pipx install gptme", 88 checkCmd: "gptme", 89 launchArgs: '"$@"', 90 resumeArgs: ["-r"], 91 }, 92]; 93 94export function getTuiById(id: string): TuiDef | undefined { 95 return TUIS.find((t) => t.id === id); 96}