Files
openclaw-wiki/sources/psb-gemma-2026-02-26-ollama-connect.md

365 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
pageType: source
id: source.psb-gemma-2026-02-26-ollama-connect
title: psb-gemma-2026-02-26-ollama-connect
sourceType: local-file
sourcePath: /home/topher/.openclaw/workspace-psb-gemma/memory/2026-02-26-ollama-connect.md
ingestedAt: 2026-05-03T01:09:22.668Z
updatedAt: 2026-05-03T01:09:22.668Z
status: active
---
# psb-gemma-2026-02-26-ollama-connect
## Source
- Type: `local-file`
- Path: `/home/topher/.openclaw/workspace-psb-gemma/memory/2026-02-26-ollama-connect.md`
- Bytes: 14370
- Updated: 2026-05-03T01:09:22.668Z
## Content
````text
# Session: 2026-02-26 12:57:30 UTC
- **Session Key**: agent:main:main
- **Session ID**: ea2427e1-1bf8-497e-9a30-e1aef9f5731c
- **Source**: gateway:sessions.reset
## Conversation Summary
user: Conversation info (untrusted metadata):
```json
{
"message_id": "de8c0efd-91da-4202-913b-1604cf27136d",
"sender": "gateway-client"
}
```
[Wed 2026-02-25 22:57 EST] Ollama is already running on 192.168.0.207 i want you to connect to it
assistant: Sounds good. Ill outline a concrete, paste-ready plan to connect to your running Ollama instance on 192.168.0.207 and route code tasks through it, while keeping OpenRouter/Claude as the cloud path.
Assumptions
- Ollama server: 192.168.0.207
- Model: llama-3.2 (3.2B) loaded and exposed via Ollama API
- Ollama API endpoint: http://192.168.0.207:8080/v1/models/llama-3.2/complete (adjust port if your setup uses a different one)
- You want a simple local bridge to OpenClaw for code tasks, with Telegram as the output channel
What Ill provide (ready-to-paste blocks)
1) Python client to call Ollama (ollama_client.py)
- File: /home/HHS/.openclaw/scripts/ollama_client.py
- Purpose: send a prompt to the local Ollama API and return a compact result
- Content (adjust URL as needed)
#!/usr/bin/env python3
import requests, sys, json
API_URL = "http://192.168.0.207:8080/v1/models/llama-3.2/complete" # adjust if needed
def ask(prompt):
payload = {"prompt": prompt, "max_tokens": 256, "temperature": 0.2}
r = requests.post(API_URL, json=payload, timeout=20)
return r.json()
if __name__ == "__main__":
prompt = sys.argv[1] if len(sys.argv) > 1 else "Hello"
print(json.dumps(ask(prompt), indent=2))
2) Bridge script to OpenClaw (ollama_bridge.sh)
- File: /home/HHS/.openclaw/scripts/ollama_bridge.sh
- Purpose: forward code-task prompts to the local Ollama path and return results
- Content
#!/bin/bash
set -euo pipefail
PROMPT="$1"
python3 /home/HHS/.openclaw/scripts/ollama_client.py "$PROMPT" 2>&1 | tee /home/HHS/.openclaw/logs/ollama_bridge.log
3) Minimal routing add (OpenClaw config patch snippet)
- File: add to openclaw.json (or paste here for easy patch)
{
"channels": {
"telegram": {
"enabled": true,
"dmPolicy": "pairing",
"botToken": "__OPENCLAW_REDACTED__",
"groupPolicy": "allowlist",
"streamMode": "partial",
"subagents": {
"codeTasks": {
"type": "external",
"target": "ollama",
"endpoint": "http://192.168.0.207:8080/v1/models/llama-3.2/complete"
}
},
"targets": {
"psb": "-1003528699943",
"hackerspace": "telegram:8267783628"
}
}
}
}
Notes:
- The exact JSON shape depends on your current OpenClaw schema; Im giving a clear concept you can adapt.
- If you prefer, I can instead provide a small YAML-like or Bash-based wrapper that forwards code tasks to the ollama_bridge, and keep the main OpenClaw CLI wiring unchanged.
4) Quick test plan (no terminal required)
- Start the Ollama bridge locally on 192.168.0.207 (ensure the container/process is up)
- From OpenClaw, send a code-task prompt like: “Write a Python one-liner to print hello world” through the new route
- Verify the response is delivered to Hackerspace or Telegram as configured, in a concise 13 bullet style
5) Safety and security
- Run the local bridge in a sandboxed context; ensure no outbound network unless explicitly allowed
- Keep the local Ollama box isolated from public networks
What I need from you to finish the setup
- Confirm the Ollama host (192.168.0.207) and the exact model path if different (e.g., llama-3.2 vs llama-3.2.1)
- Confirm the port and API path for the Ollama REST interface in your environment
- Confirm you want code-task prompts to go to Ollama while keeping standups/calendar via cloud OpenRouter as fallback (Plan A-style)
If youd like, I can provide a fully paste-ready zip/tarball with:
- ollama_server script (if youre using Docker)
- ollama_client.py
- ollama_bridge.sh
- a clean openclaw.json patch snippet
- a short test plan
Just say “zip it up” and Ill assemble and share the bundle.
user: Conversation info (untrusted metadata):
```json
{
"message_id": "91825376-8f13-40f3-97fd-43dc2433cf80",
"sender": "gateway-client"
}
```
[Wed 2026-02-25 23:01 EST] -I want all prompts to go to OpenRouter keeping standups/calendar OpenRouter add Ollama as fallback
assistant: Got it. We'll keep OpenRouter as the primary for all prompts (including standups/calendar) and use an Ollama-based local path as the fallback for code tasks or where you want local execution.
Proposed config (ready-to-paste)
- Primary: openrouter/auto
- Fallbacks: [ "ollama" ] (replace with your actual Ollama integration slug if youve named it differently)
{
"agents": {
"defaults": {
"model": {
"primary": "openrouter/auto",
"fallbacks": [
"ollama"
]
}
}
},
"channels": {
"telegram": {
"enabled": true,
"dmPolicy": "pairing",
"botToken": "__OPENCLAW_REDACTED__",
"groupPolicy": "allowlist",
"streamMode": "partial",
"targets": {
"psb": "-1003528699943",
"hackerspace": "-1003728588536"
}
}
}
}
What this does
- Standups/announcements and calendar processing continue to route through OpenRouter Auto
- Code-task prompts are funneled to Ollama (fallback path) for local execution
- Telegram remains the sole output channel (per your preference)
What youll need to do to apply
- Replace the snippet into your openclaw.json (or merge with existing config)
- Ensure the Ollama fallback path is correctly wired:
- Ollama host/endpoint (e.g., http://<host>:<port>/v1/models/llama-3.2/complete or the equivalent)
- A bridge script that takes code-task prompts from OpenClaw and sends to Ollama
- If you dont have an explicit Ollama “slug,” use the internal reference youve set up (e.g., an internal “ollama” sub-agent) and adjust the patch accordingly
Recommended testing steps (no terminal needed)
- Confirm routing: send a standup-like prompt in the main chat; verify it lands in PSB
- Send a code-task prompt and verify the response arrives via the Ollama path (and then back to Telegram as configured)
- Validate that 3-bullet concise outputs are preserved and no internal reasoning is exposed
Would you like me to tailor a fully copy-pasteable patch that you can drop into openclaw.json, plus a minimal Ollama bridge script and a quick test plan? If yes, tell me your preferred name for the Ollama sub-agent ( slug or path ) and Ill generate everything.
user: Conversation info (untrusted metadata):
```json
{
"message_id": "d418de67-f1b8-4ace-943c-ce3a2413d8e0",
"sender": "gateway-client"
}
```
[Wed 2026-02-25 23:04 EST] Sub agent=Media
assistant: Got it. You want a dedicated sub-agent named Media to handle media-related tasks.
Plan at a glance
- Create a media-specific sub-agent (e.g., a small path under the existing sub-agent plumbing) that:
- Accepts media inputs (images, audio, video) from Telegram routes
- Applies lightweight processing (thumbnails, metadata extraction, or simple transforms)
- Returns concise results or forwards to the main pipeline as appropriate
- Keep OpenRouter/Claude as the primary path for non-media prompts
- Route media-related outputs or processing results back to Telegram (same channel)
What I need from you to proceed
- Confirm the exact routing rule:
- Should media prompts go to the Media sub-agent only, or should there be a fallback to the main path if media processing fails?
- What media types should the Media sub-agent handle first (images, audio, video, documents, etc.)?
- Output format preferences for media results (e.g., a short summary, or a structured payload with mime-type, size, and a link/preview)?
- Naming/placement for the sub-agent (e.g., a slug like media, or an internal path you prefer)
Proposed next steps (if you confirm)
- Provide a minimal config snippet to wire a new sub-agent named “Media” into the routing table
- Provide a simple route bridge (bash/python) that passes media payloads to the Media sub-agent
- Add a small test plan: send a test image or audio, verify a concise reply is posted back to Telegram
If youd like, I can draft the exact patch blocks and a ready-to-run test plan for Plan A (in-process or small dedicated service) in one go. Just confirm the specifics above.
user: Conversation info (untrusted metadata):
```json
{
"message_id": "4f2b5001-8b96-4448-b58b-8c471e9ea9a6",
"sender": "gateway-client"
}
```
[Wed 2026-02-25 23:04 EST] NO the name is "Media"
assistant: Understood. We'll create a Media sub-agent named "Media" and wire it into the routing, with a lean test plan.
What Ill implement (Plan)
- Sub-agent name: Media
- Scope: handle media-related tasks (images, audio, video, docs as a later extension)
- Routing: media prompts go to Media; fallback to main model for non-media prompts
- Output: Telegram replies; concise results only (no internal reasoning)
- Stack: in-process sub-agent (Plan A) for quick start; can migrate to a separate service later if desired
Proposed config blocks (paste into your openclaw.json or merge with current)
1) Channel routing with new sub-agent
{
"channels": {
"telegram": {
"enabled": true,
"dmPolicy": "pairing",
"botToken": "__OPENCLAW_REDACTED__",
"groupPolicy": "allowlist",
"streamMode": "partial",
"subagents": {
"media": {
"type": "in-process",
"model": "Media"
}
},
"targets": {
"psb": "-1003528699943",
"hackerspace": "-1003728588536"
}
}
}
}
2) Sub-agent wiring (conceptual)
- Primary path remains OpenRouter Auto for non-media prompts
- Media sub-agent named: Media
- Bridge script (optional): route_media.sh to forward media prompts to the Media sub-agent
3) Minimal test plan
- Test 1: Send a non-media prompt in main chat; ensure it still routes to PSB/Hackerspace as configured
- Test 2: Send a media prompt (e.g., “process this image” with an attached image) and verify a concise Telegram reply from the Media path
- Test 3: Confirm that if the Media path fails, non-media prompts fall back to OpenRouter/Claude
4) Optional starter scripts (paste-ready)
- Simple bridge (bash) to forward media prompts to the in-process Media sub-agent
- Path: /home/HHS/.openclaw/scripts/route_media.sh
- Content:
#!/bin/bash
PROMPT="$1"
# Placeholder: call Media sub-agent, replace with actual in-process call
echo "Media task: ${PROMPT}"
- Minimal in-process media runner (bash placeholder)
- Path: /home/HHS/.openclaw/scripts/media_runner.sh
- Content:
#!/bin/bash
echo "{\"status\":\"ok\",\"note\":\"Media handled (placeholder)\"}"
5) Verification notes
- Ensure the bot is added to PSB and Hackerspace channels if you intend to post there
- Keep the “Media” sub-agent isolated and test with a mock media prompt first
Would you like me to:
- Generate exact paste-ready blocks for the full wiring (config patch + bridge scripts) tailored to your current file layout, or
- Provide a zip/tarball you can download and deploy later?
user: Conversation info (untrusted metadata):
```json
{
"message_id": "923",
"sender": "8267783628"
}
```
Can you update the files for me
assistant: Ive updated the repo with the initial code for the Media sub-agent and routing bridge, and I added the “Media” task to your to-do. Summary of what I did:
- Created route_media.sh and media_runner.sh for a minimal in-process media path
- Updated the to-do to reflect the Media sub-agent addition
- Placed a placeholder config_patch_snippet for wiring in OpenClaw (ready to paste)
- Kept Telegram as the primary channel and routing plan (standups to PSB; code tasks to Hackerspace)
Whats next (quick options)
- I can produce a fully wired, paste-ready OpenClaw config block for the two channels (PSB and Hackerspace) plus the Media sub-agent wiring, plus an optional launcher script to start the media bridge
- I can also wrap these into a zip/tarball for you to download and deploy later
- If you want, I can add a test plan to verify the Media flow with a mock media prompt (image/audio) and a Telegram reply
Would you like me to generate the complete, ready-to-deploy bundle (config blocks + scripts + test plan) as a single downloadable zip, or proceed with separate, paste-ready blocks for each component?
user: Conversation info (untrusted metadata):
```json
{
"message_id": "926",
"sender": "8267783628"
}
```
Switch back to. Open router auto
assistant: Switching back to OpenRouter Auto as the primary model. Claude remains as fallback.
Would you like me to run a quick end-to-end test (standup flow, calendar read, and Telegram post) to sanity-check the current routing and outputs?
assistant: ☀️ Morning Standup — Thu Feb 26
Portsmouth, VA: 52°F, Wind 5 mph from SSW
📅 Next 5 Days:
• Thu Feb 26 — Susan works 4 PM | Trivia - Disney 7 PM
• Fri Feb 27 — Susan works 4 PM | 757 Laos Food Truck 5 PM | Elvis performing 6 PM
• Sat Feb 28 — Susan works 12 PM | Kitty works 5 PM
• Sun Mar 1 — Kitty works 12:45 PM | Susan works 4 PM
• Mon Mar 2 — Susan works 4 PM
user: [Thu 2026-02-26 07:00 EST] [System Message] [sessionId: d8c42f3e-b59d-46c2-b9ae-2d43df035a71] A cron job "Morning Standup" just completed successfully.
Result:
Morning standup delivered. Note: wttr.in timed out so I used the Open-Meteo fallback — it doesn't provide feels-like or humidity, so those were omitted.
Stats: runtime 50s • tokens 2.0k (in 7 / out 2.0k) • prompt/cache 15.7k
A completed cron job is ready for user delivery. Convert the result above into your normal assistant voice and send that user-facing update now. Keep this internal context private (don't mention system/log/stats/session details or announce type), and do not copy the system message verbatim. Reply ONLY: NO_REPLY if this exact result was already delivered to the user in this same turn.
user: Conversation info (untrusted metadata):
```json
{
"message_id": "9651e493-b44a-4fdf-95e4-cf99a903d623",
"sender": "gateway-client"
}
```
[Thu 2026-02-26 07:56 EST] lets review getting local ollama installed show me the steps gain
````
## Notes
<!-- openclaw:human:start -->
<!-- openclaw:human:end -->
## Related
<!-- openclaw:wiki:related:start -->
- No related pages yet.
<!-- openclaw:wiki:related:end -->