From c2056599e60937833445009184a77a313e27c6c0 Mon Sep 17 00:00:00 2001 From: Raimund Bauer Date: Tue, 2 Jun 2026 12:24:58 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20Pi-Starter-Skripte=20und=20models.json?= =?UTF-8?q?=20ins=20Repo=20=E2=80=94=20maschinen=C3=BCbergreifend=20deploy?= =?UTF-8?q?bar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GlmPi, MiniPi, FlashPi, OrchestratorPi, DeepSeekFlashPi und models.json hinzugefügt. install.sh: alle bin/-Skripte gehen nach /usr/local/bin/ (nicht nur Sub*), agent/-Dateien werden vollständig deployt. --- agent/models.json | 181 ++++++++++++++++++++++++++++++++++++++++++++ bin/DeepSeekFlashPi | 3 + bin/FlashPi | 19 +++++ bin/GlmPi | 3 + bin/MiniPi | 19 +++++ bin/OrchestratorPi | 20 +++++ install.sh | 14 ++-- 7 files changed, 253 insertions(+), 6 deletions(-) create mode 100644 agent/models.json create mode 100644 bin/DeepSeekFlashPi create mode 100644 bin/FlashPi create mode 100644 bin/GlmPi create mode 100644 bin/MiniPi create mode 100644 bin/OrchestratorPi diff --git a/agent/models.json b/agent/models.json new file mode 100644 index 0000000..6001b98 --- /dev/null +++ b/agent/models.json @@ -0,0 +1,181 @@ +{ + "providers": { + "ollama-cloud": { + "api": "openai-completions", + "apiKey": "$OLLAMA_API_KEY", + "authHeader": true, + "baseUrl": "https://ollama.com/v1", + "models": [ + { + "contextWindow": 1000000, + "id": "gemini-3-flash-preview", + "input": [ + "text", + "image" + ], + "name": "Gemini 3 Flash Preview" + }, + { + "id": "kimi-k2.6", + "input": [ + "text", + "image" + ], + "name": "Kimi K2.6" + }, + { + "id": "qwen3.5:397b", + "input": [ + "text", + "image" + ], + "name": "Qwen 3.5 397B" + }, + { + "id": "qwen3-vl:235b", + "input": [ + "text", + "image" + ], + "name": "Qwen 3 VL 235B" + }, + { + "contextWindow": 1000000, + "id": "deepseek-v4-flash", + "input": [ + "text" + ], + "name": "DeepSeek V4 Flash" + }, + { + "contextWindow": 1000000, + "id": "deepseek-v4-pro", + "input": [ + "text" + ], + "name": "DeepSeek V4 Pro" + }, + { + "id": "mistral-large-3:675b", + "input": [ + "text", + "image" + ], + "name": "Mistral Large 3" + }, + { + "contextWindow": 1000000, + "id": "minimax-m3:cloud", + "input": [ + "text", + "image" + ], + "name": "MiniMax M3 (Ollama Cloud)" + } + ] + }, + "novita": { + "api": "openai-completions", + "apiKey": "$NOVITA_API_KEY", + "baseUrl": "https://api.novita.ai/v3/openai", + "models": [ + { + "id": "deepseek/deepseek-v4-flash", + "name": "DeepSeek V4 Flash (Novita)", + "contextWindow": 1000000, + "input": [ + "text" + ], + "maxTokens": 393216 + } + ] + }, + "openrouter": { + "api": "openai-completions", + "apiKey": "$OPENROUTER_API_KEY", + "baseUrl": "https://openrouter.ai/api/v1", + "models": [ + { + "contextWindow": 1000000, + "id": "deepseek/deepseek-v4-flash", + "input": [ + "text" + ], + "name": "DeepSeek V4 Flash", + "compat": { + "openRouterRouting": { + "order": [ + "siliconflow", + "novita", + "atlas-cloud" + ], + "quantizations": [ + "fp8" + ], + "allow_fallbacks": true + } + } + }, + { + "contextWindow": 1000000, + "id": "deepseek/deepseek-r1", + "input": [ + "text" + ], + "name": "DeepSeek R1 (OpenRouter)" + }, + { + "contextWindow": 262144, + "id": "qwen/qwen3-vl-32b-instruct", + "input": [ + "text", + "image" + ], + "name": "Qwen3 VL 32B Instruct (OpenRouter)" + } + ] + }, + "z-ai": { + "api": "anthropic-messages", + "apiKey": "$GLM5_API_KEY", + "authHeader": true, + "baseUrl": "https://api.z.ai/api/anthropic", + "models": [ + { + "id": "glm-5.1", + "input": [ + "text", + "image" + ], + "name": "GLM 5.1 (Z.AI)", + "reasoning": true + } + ] + }, + "together": { + "api": "openai-completions", + "apiKey": "$TOGETHER_API_KEY", + "baseUrl": "https://api.together.xyz/v1", + "models": [ + { + "id": "openai/gpt-oss-120b", + "input": [ + "text", + "image" + ], + "name": "GPT-OSS 120B", + "contextWindow": 131072 + }, + { + "id": "MiniMaxAI/MiniMax-M2.7", + "input": [ + "text", + "image" + ], + "name": "MiniMax M2.7", + "contextWindow": 196608 + } + ] + } + } +} diff --git a/bin/DeepSeekFlashPi b/bin/DeepSeekFlashPi new file mode 100644 index 0000000..e40fc70 --- /dev/null +++ b/bin/DeepSeekFlashPi @@ -0,0 +1,3 @@ +#!/bin/bash +# DeepSeekFlashPi — Startet den Pi KI-Editor mit DeepSeek V4 Flash (OpenRouter) +exec pi --provider openrouter --model deepseek/deepseek-v4-flash "$@" diff --git a/bin/FlashPi b/bin/FlashPi new file mode 100644 index 0000000..bbd564f --- /dev/null +++ b/bin/FlashPi @@ -0,0 +1,19 @@ +#!/bin/bash +# FlashPi — Startet Pi mit DeepSeek V4 Flash über Novita +# Holt den API-Key dynamisch aus Infisical + +# Novita API-Key aus Infisical holen +NOVITA_API_KEY=$(INFISICAL_API_URL="https://infisical.ccpn.cc" \ + infisical secrets get NOVITA_API_KEY \ + --domain https://infisical.ccpn.cc \ + --projectId 9e8562f2-8ec8-49f5-a551-db13d265b3cc \ + --env dev --plain 2>/dev/null) + +if [ -z "$NOVITA_API_KEY" ]; then + echo "FEHLER: Konnte NOVITA_API_KEY nicht aus Infisical holen." + echo "Prüfe: infisical login --domain https://infisical.ccpn.cc" + exit 1 +fi + +export NOVITA_API_KEY +exec pi --provider novita --model "deepseek/deepseek-v4-flash" "$@" diff --git a/bin/GlmPi b/bin/GlmPi new file mode 100644 index 0000000..74b1b89 --- /dev/null +++ b/bin/GlmPi @@ -0,0 +1,3 @@ +#!/bin/bash +# GlmPi — Startet den Pi KI-Editor mit GLM 5.1 (Z.AI) +exec pi --provider z-ai --model glm-5.1 "$@" diff --git a/bin/MiniPi b/bin/MiniPi new file mode 100644 index 0000000..6c6ddc6 --- /dev/null +++ b/bin/MiniPi @@ -0,0 +1,19 @@ +#!/bin/bash +# MiniPi — Startet Pi mit MiniMax M3 ueber Ollama Cloud +# MiniMax M3: 1M Tokens Kontext, Multi-Modal, Sparse Attention (MSA) +# Modell: minimax-m3:cloud (Ollama Cloud, US-Hosting, Zero Data Retention) + +OLLAMA_API_KEY=$(INFISICAL_API_URL="https://infisical.ccpn.cc" \ + infisical secrets get OLLAMA_API_KEY \ + --domain https://infisical.ccpn.cc \ + --projectId 9e8562f2-8ec8-49f5-a551-db13d265b3cc \ + --env dev --plain 2>/dev/null) + +if [ -z "$OLLAMA_API_KEY" ]; then + echo "FEHLER: Konnte OLLAMA_API_KEY nicht aus Infisical holen." + echo "Pruefe: infisical login --domain https://infisical.ccpn.cc" + exit 1 +fi + +export OLLAMA_API_KEY +exec pi --provider ollama-cloud --model "minimax-m3:cloud" "$@" diff --git a/bin/OrchestratorPi b/bin/OrchestratorPi new file mode 100644 index 0000000..7977d44 --- /dev/null +++ b/bin/OrchestratorPi @@ -0,0 +1,20 @@ +#!/bin/bash +# OrchestratorPi — Startet Pi als Orchestrator mit DeepSeek V4 Flash ueber Novita +# Setzt PI_ORCHESTRATOR=1, damit Extensions und Skills wissen: diese Session ist der Orchestrator. + +NOVITA_API_KEY=$(INFISICAL_API_URL="https://infisical.ccpn.cc" \ + infisical secrets get NOVITA_API_KEY \ + --domain https://infisical.ccpn.cc \ + --projectId 9e8562f2-8ec8-49f5-a551-db13d265b3cc \ + --env dev --plain 2>/dev/null) + +if [ -z "$NOVITA_API_KEY" ]; then + echo "FEHLER: Konnte NOVITA_API_KEY nicht aus Infisical holen." + echo "Pruefe: infisical login --domain https://infisical.ccpn.cc" + exit 1 +fi + +export NOVITA_API_KEY +export PI_ORCHESTRATOR=1 + +exec pi --provider novita --model "deepseek/deepseek-v4-flash" "$@" diff --git a/install.sh b/install.sh index 35d7a54..96b345f 100644 --- a/install.sh +++ b/install.sh @@ -106,9 +106,9 @@ for f in "$REPO_DIR"/bin/*; do done echo "" -# ─── bin/ → /usr/local/bin/ (nur Sub* Skripte) ────────────── -echo "── bin/Sub* → /usr/local/bin/ ─────────────────────────" -for f in "$REPO_DIR"/bin/Sub*; do +# ─── bin/ → /usr/local/bin/ (alle Skripte) ────────────────── +echo "── bin/ → /usr/local/bin/ ──────────────────────────────" +for f in "$REPO_DIR"/bin/*; do [ -f "$f" ] || continue DST="/usr/local/bin/$(basename "$f")" if $DRY_RUN; then @@ -141,10 +141,12 @@ for f in "$REPO_DIR"/memory/*; do done echo "" -# ─── AGENTS.md ────────────────────────────────────────────── +# ─── agent/ → ~/.pi/agent/ ────────────────────────────────── echo "── agent/ → ~/.pi/agent/ ───────────────────────────────" -install_file "$REPO_DIR/agent/AGENTS.md" "$HOME/.pi/agent/AGENTS.md" -install_file "$REPO_DIR/agent/settings.json" "$HOME/.pi/agent/settings.json" +for f in "$REPO_DIR"/agent/*; do + [ -f "$f" ] || continue + install_file "$f" "$HOME/.pi/agent/$(basename "$f")" +done echo "" # ─── PATH prüfen ────────────────────────────────────────────