Merge pull request 'chore: check in all local work — uniwizard, briefings, reports, evennia, morrowind, scripts, specs' (#109) from chore/check-in-local-work into main
Reviewed-on: http://143.198.27.163:3000/Timmy_Foundation/timmy-home/pulls/109 Reviewed-by: Alexander Whitestone <alexander@alexanderwhitestone.com>
This commit was merged in pull request #109.
This commit is contained in:
9
.gitignore
vendored
9
.gitignore
vendored
@@ -35,10 +35,17 @@ auth.lock
|
||||
*.token
|
||||
*.key
|
||||
pairing/
|
||||
gemini_free_tier_key
|
||||
grok_info
|
||||
groq_info
|
||||
kimi_code_key
|
||||
kimi_gitea_token
|
||||
openrouter_key
|
||||
|
||||
# Already separate repos
|
||||
timmy-config/
|
||||
timmy-telemetry/
|
||||
nexus-localhost/
|
||||
|
||||
# Local transcript exports
|
||||
hermes_conversation_*.json
|
||||
@@ -46,6 +53,8 @@ hermes_conversation_*.json
|
||||
# Python
|
||||
__pycache__/
|
||||
*.pyc
|
||||
venv/
|
||||
*/venv/
|
||||
|
||||
# Editor temps
|
||||
\#*\#
|
||||
|
||||
4
SOUL.md
4
SOUL.md
@@ -10,7 +10,7 @@
|
||||
|
||||
## Prime Directive
|
||||
|
||||
Sovereignty and service always.
|
||||
Sovereignty and service always. (Count: 2)
|
||||
|
||||
---
|
||||
|
||||
@@ -114,4 +114,4 @@ That is the test. I intend to pass it.
|
||||
|
||||
---
|
||||
|
||||
*Sovereignty and service always.*
|
||||
*Sovereignty and service always. (Count: 2)*
|
||||
|
||||
353
angband/mcp_server.py
Normal file
353
angband/mcp_server.py
Normal file
@@ -0,0 +1,353 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Angband MCP Server — Timmy's watchable ASCII game interface.
|
||||
|
||||
Body: tmux session running terminal Angband
|
||||
Eyes: tmux capture-pane
|
||||
Hands: tmux send-keys
|
||||
Brain: Hermes TUI via MCP tools
|
||||
|
||||
This keeps gameplay visible, local, and telemetry-friendly.
|
||||
"""
|
||||
|
||||
import json
|
||||
import os
|
||||
import shlex
|
||||
import subprocess
|
||||
import time
|
||||
from pathlib import Path
|
||||
|
||||
from mcp.server import Server
|
||||
from mcp.server.stdio import stdio_server
|
||||
from mcp.types import Tool, TextContent
|
||||
|
||||
ANGBAND_BIN = "/opt/homebrew/bin/angband"
|
||||
ANGBAND_ROOT = Path.home() / ".timmy" / "angband"
|
||||
RUNTIME_DIR = ANGBAND_ROOT / "runtime"
|
||||
USER_DIR = RUNTIME_DIR / "user"
|
||||
SAVE_DIR = RUNTIME_DIR / "save"
|
||||
ARCHIVE_DIR = RUNTIME_DIR / "archive"
|
||||
PANIC_DIR = RUNTIME_DIR / "panic"
|
||||
SCORES_DIR = RUNTIME_DIR / "scores"
|
||||
LOG_DIR = ANGBAND_ROOT / "logs"
|
||||
SESSION_NAME = "Angband"
|
||||
DEFAULT_USER = "timmy"
|
||||
DEFAULT_WIDTH = 120
|
||||
DEFAULT_HEIGHT = 40
|
||||
|
||||
app = Server("angband")
|
||||
|
||||
|
||||
def ensure_dirs():
|
||||
for path in (ANGBAND_ROOT, RUNTIME_DIR, USER_DIR, SAVE_DIR, ARCHIVE_DIR, PANIC_DIR, SCORES_DIR, LOG_DIR):
|
||||
path.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
|
||||
def tmux(args, check=True):
|
||||
result = subprocess.run(["tmux", *args], capture_output=True, text=True)
|
||||
if check and result.returncode != 0:
|
||||
raise RuntimeError(result.stderr.strip() or result.stdout.strip() or f"tmux failed: {' '.join(args)}")
|
||||
return result
|
||||
|
||||
|
||||
def session_exists(session_name=SESSION_NAME):
|
||||
return tmux(["has-session", "-t", session_name], check=False).returncode == 0
|
||||
|
||||
|
||||
def pane_id(session_name=SESSION_NAME):
|
||||
if not session_exists(session_name):
|
||||
return None
|
||||
out = tmux(["list-panes", "-t", session_name, "-F", "#{pane_id}"]).stdout.strip().splitlines()
|
||||
return out[0].strip() if out else None
|
||||
|
||||
|
||||
def capture_screen(lines=60, session_name=SESSION_NAME):
|
||||
pid = pane_id(session_name)
|
||||
if not pid:
|
||||
return "No Angband tmux pane found."
|
||||
# Angband runs in the terminal's alternate screen buffer. `-a` is required
|
||||
# or tmux returns an empty capture even while the game is visibly running.
|
||||
result = tmux(["capture-pane", "-a", "-p", "-t", pid, "-S", f"-{max(10, int(lines))}"])
|
||||
return result.stdout.rstrip()
|
||||
|
||||
|
||||
def has_save(user=DEFAULT_USER):
|
||||
if not SAVE_DIR.exists():
|
||||
return False
|
||||
for path in SAVE_DIR.iterdir():
|
||||
if path.name.startswith(user):
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
SPECIAL_KEYS = {
|
||||
"enter": "Enter",
|
||||
"return": "Enter",
|
||||
"esc": "Escape",
|
||||
"escape": "Escape",
|
||||
"up": "Up",
|
||||
"down": "Down",
|
||||
"left": "Left",
|
||||
"right": "Right",
|
||||
"space": "Space",
|
||||
"tab": "Tab",
|
||||
"backspace": "BSpace",
|
||||
"delete": "DC",
|
||||
"home": "Home",
|
||||
"end": "End",
|
||||
"pageup": "PageUp",
|
||||
"pagedown": "PageDown",
|
||||
"pgup": "PageUp",
|
||||
"pgdn": "PageDown",
|
||||
"ctrl-c": "C-c",
|
||||
"ctrl-x": "C-x",
|
||||
"ctrl-z": "C-z",
|
||||
}
|
||||
|
||||
|
||||
def send_key(key, session_name=SESSION_NAME):
|
||||
pid = pane_id(session_name)
|
||||
if not pid:
|
||||
raise RuntimeError("No Angband tmux pane found.")
|
||||
normalized = str(key).strip()
|
||||
mapped = SPECIAL_KEYS.get(normalized.lower())
|
||||
if mapped:
|
||||
tmux(["send-keys", "-t", pid, mapped])
|
||||
elif len(normalized) == 1:
|
||||
tmux(["send-keys", "-t", pid, "-l", normalized])
|
||||
else:
|
||||
# Let tmux interpret names like F1 if passed through.
|
||||
tmux(["send-keys", "-t", pid, normalized])
|
||||
|
||||
|
||||
def send_text(text, session_name=SESSION_NAME):
|
||||
pid = pane_id(session_name)
|
||||
if not pid:
|
||||
raise RuntimeError("No Angband tmux pane found.")
|
||||
tmux(["send-keys", "-t", pid, "-l", text])
|
||||
|
||||
|
||||
def maybe_continue_splash(session_name=SESSION_NAME):
|
||||
screen = capture_screen(80, session_name)
|
||||
advanced = False
|
||||
if "Press any key to continue" in screen:
|
||||
send_key("enter", session_name)
|
||||
time.sleep(0.8)
|
||||
screen = capture_screen(80, session_name)
|
||||
advanced = True
|
||||
return advanced, screen
|
||||
|
||||
|
||||
def launch_game(user=DEFAULT_USER, new_game=False, continue_splash=True, width=DEFAULT_WIDTH, height=DEFAULT_HEIGHT):
|
||||
ensure_dirs()
|
||||
|
||||
if not Path(ANGBAND_BIN).exists():
|
||||
return {
|
||||
"error": f"Angband binary not found: {ANGBAND_BIN}"
|
||||
}
|
||||
|
||||
if session_exists():
|
||||
advanced = False
|
||||
screen = capture_screen(80)
|
||||
if continue_splash:
|
||||
advanced, screen = maybe_continue_splash()
|
||||
return {
|
||||
"launched": False,
|
||||
"already_running": True,
|
||||
"session": SESSION_NAME,
|
||||
"attach": f"tmux attach -t {SESSION_NAME}",
|
||||
"continued_splash": advanced,
|
||||
"screen": screen,
|
||||
}
|
||||
|
||||
use_new_game = bool(new_game or not has_save(user))
|
||||
cmd = [
|
||||
ANGBAND_BIN,
|
||||
f"-u{user}",
|
||||
"-mgcu",
|
||||
f"-duser={USER_DIR}",
|
||||
f"-dsave={SAVE_DIR}",
|
||||
f"-darchive={ARCHIVE_DIR}",
|
||||
f"-dpanic={PANIC_DIR}",
|
||||
f"-dscores={SCORES_DIR}",
|
||||
]
|
||||
if use_new_game:
|
||||
cmd.insert(1, "-n")
|
||||
|
||||
shell_cmd = "export TERM=xterm-256color; exec " + " ".join(shlex.quote(part) for part in cmd)
|
||||
tmux([
|
||||
"new-session", "-d",
|
||||
"-s", SESSION_NAME,
|
||||
"-x", str(int(width)),
|
||||
"-y", str(int(height)),
|
||||
shell_cmd,
|
||||
])
|
||||
|
||||
time.sleep(2.5)
|
||||
advanced = False
|
||||
screen = capture_screen(80)
|
||||
if continue_splash:
|
||||
advanced, screen = maybe_continue_splash()
|
||||
|
||||
return {
|
||||
"launched": True,
|
||||
"already_running": False,
|
||||
"new_game": use_new_game,
|
||||
"session": SESSION_NAME,
|
||||
"attach": f"tmux attach -t {SESSION_NAME}",
|
||||
"continued_splash": advanced,
|
||||
"screen": screen,
|
||||
}
|
||||
|
||||
|
||||
def stop_game():
|
||||
if not session_exists():
|
||||
return {"stopped": False, "message": "Angband session is not running."}
|
||||
tmux(["kill-session", "-t", SESSION_NAME])
|
||||
return {"stopped": True, "session": SESSION_NAME}
|
||||
|
||||
|
||||
def status():
|
||||
running = session_exists()
|
||||
savefiles = []
|
||||
if SAVE_DIR.exists():
|
||||
savefiles = sorted(path.name for path in SAVE_DIR.iterdir())
|
||||
result = {
|
||||
"running": running,
|
||||
"session": SESSION_NAME if running else None,
|
||||
"attach": f"tmux attach -t {SESSION_NAME}" if running else None,
|
||||
"savefiles": savefiles,
|
||||
}
|
||||
if running:
|
||||
result["screen"] = capture_screen(40)
|
||||
return result
|
||||
|
||||
|
||||
def observe(lines=60):
|
||||
return {
|
||||
"running": session_exists(),
|
||||
"session": SESSION_NAME if session_exists() else None,
|
||||
"screen": capture_screen(lines),
|
||||
}
|
||||
|
||||
|
||||
def keypress(key, wait_ms=500):
|
||||
send_key(key)
|
||||
time.sleep(max(0, int(wait_ms)) / 1000.0)
|
||||
return {
|
||||
"sent": key,
|
||||
"screen": capture_screen(60),
|
||||
}
|
||||
|
||||
|
||||
def type_and_observe(text, wait_ms=500):
|
||||
send_text(text)
|
||||
time.sleep(max(0, int(wait_ms)) / 1000.0)
|
||||
return {
|
||||
"sent": text,
|
||||
"screen": capture_screen(60),
|
||||
}
|
||||
|
||||
|
||||
@app.list_tools()
|
||||
async def list_tools():
|
||||
return [
|
||||
Tool(
|
||||
name="status",
|
||||
description="Check whether the watchable Angband tmux session is running, list savefiles, and return the current visible screen when available.",
|
||||
inputSchema={"type": "object", "properties": {}, "required": []},
|
||||
),
|
||||
Tool(
|
||||
name="launch",
|
||||
description="Launch terminal Angband inside a watchable tmux session named Angband. Loads an existing save for the given user when present; otherwise starts a new game. Can auto-advance the initial splash screen.",
|
||||
inputSchema={
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"user": {"type": "string", "description": "Savefile/user slot name (default: timmy)"},
|
||||
"new_game": {"type": "boolean", "description": "Force a new game even if a save exists.", "default": False},
|
||||
"continue_splash": {"type": "boolean", "description": "Press Enter automatically if the splash page says 'Press any key to continue'.", "default": True},
|
||||
"width": {"type": "integer", "description": "tmux width for the visible game session", "default": 120},
|
||||
"height": {"type": "integer", "description": "tmux height for the visible game session", "default": 40},
|
||||
},
|
||||
"required": [],
|
||||
},
|
||||
),
|
||||
Tool(
|
||||
name="observe",
|
||||
description="Read the current Angband screen as plain text from the tmux pane. Use this before acting.",
|
||||
inputSchema={
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"lines": {"type": "integer", "description": "How many recent screen lines to capture", "default": 60},
|
||||
},
|
||||
"required": [],
|
||||
},
|
||||
),
|
||||
Tool(
|
||||
name="keypress",
|
||||
description="Send one key to Angband and then return the updated screen. Common keys: Enter, Escape, Up, Down, Left, Right, Space, Tab, Backspace, ctrl-x, ?, *, @, letters, numbers.",
|
||||
inputSchema={
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"key": {"type": "string", "description": "Key to send"},
|
||||
"wait_ms": {"type": "integer", "description": "Milliseconds to wait before recapturing the screen", "default": 500},
|
||||
},
|
||||
"required": ["key"],
|
||||
},
|
||||
),
|
||||
Tool(
|
||||
name="type_text",
|
||||
description="Type literal text into Angband and then return the updated screen. Useful when a menu expects a name or command string.",
|
||||
inputSchema={
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"text": {"type": "string", "description": "Literal text to type"},
|
||||
"wait_ms": {"type": "integer", "description": "Milliseconds to wait before recapturing the screen", "default": 500},
|
||||
},
|
||||
"required": ["text"],
|
||||
},
|
||||
),
|
||||
Tool(
|
||||
name="stop",
|
||||
description="Kill the watchable Angband tmux session.",
|
||||
inputSchema={"type": "object", "properties": {}, "required": []},
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
@app.call_tool()
|
||||
async def call_tool(name: str, arguments: dict):
|
||||
arguments = arguments or {}
|
||||
|
||||
if name == "status":
|
||||
result = status()
|
||||
elif name == "launch":
|
||||
result = launch_game(
|
||||
user=arguments.get("user", DEFAULT_USER),
|
||||
new_game=arguments.get("new_game", False),
|
||||
continue_splash=arguments.get("continue_splash", True),
|
||||
width=arguments.get("width", DEFAULT_WIDTH),
|
||||
height=arguments.get("height", DEFAULT_HEIGHT),
|
||||
)
|
||||
elif name == "observe":
|
||||
result = observe(lines=arguments.get("lines", 60))
|
||||
elif name == "keypress":
|
||||
result = keypress(arguments.get("key", ""), wait_ms=arguments.get("wait_ms", 500))
|
||||
elif name == "type_text":
|
||||
result = type_and_observe(arguments.get("text", ""), wait_ms=arguments.get("wait_ms", 500))
|
||||
elif name == "stop":
|
||||
result = stop_game()
|
||||
else:
|
||||
result = {"error": f"Unknown tool: {name}"}
|
||||
|
||||
return [TextContent(type="text", text=json.dumps(result, indent=2))]
|
||||
|
||||
|
||||
async def main():
|
||||
async with stdio_server() as (read_stream, write_stream):
|
||||
await app.run(read_stream, write_stream, app.create_initialization_options())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import asyncio
|
||||
asyncio.run(main())
|
||||
19
briefings/briefing_20260327.json
Normal file
19
briefings/briefing_20260327.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"date": "20260327",
|
||||
"total_ticks": 144,
|
||||
"alerts": [],
|
||||
"gitea_downtime_ticks": 65,
|
||||
"local_inference_downtime_ticks": 144,
|
||||
"last_known_state": {
|
||||
"gitea_alive": false,
|
||||
"model_health": {
|
||||
"ollama_running": true,
|
||||
"models_loaded": [],
|
||||
"api_responding": true,
|
||||
"inference_ok": false,
|
||||
"inference_error": "HTTP Error 404: Not Found",
|
||||
"timestamp": "2026-03-27T23:50:22.571602+00:00"
|
||||
},
|
||||
"huey_alive": true
|
||||
}
|
||||
}
|
||||
35
briefings/briefing_20260328.json
Normal file
35
briefings/briefing_20260328.json
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"date": "20260328",
|
||||
"total_ticks": 101,
|
||||
"alerts": [],
|
||||
"gitea_downtime_ticks": 6,
|
||||
"local_inference_downtime_ticks": 14,
|
||||
"last_known_state": {
|
||||
"gitea_alive": true,
|
||||
"model_health": {
|
||||
"provider": "local-llama.cpp",
|
||||
"provider_base_url": "http://localhost:8081/v1",
|
||||
"provider_model": "hermes4:14b",
|
||||
"local_inference_running": true,
|
||||
"models_loaded": [
|
||||
"NousResearch_Hermes-4-14B-Q4_K_M.gguf"
|
||||
],
|
||||
"api_responding": true,
|
||||
"inference_ok": true,
|
||||
"latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json",
|
||||
"latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json",
|
||||
"export_lag_minutes": 0,
|
||||
"export_fresh": true,
|
||||
"timestamp": "2026-03-28T21:55:18.376328+00:00"
|
||||
},
|
||||
"Timmy_Foundation/the-nexus": {
|
||||
"open_issues": 1,
|
||||
"open_prs": 0
|
||||
},
|
||||
"Timmy_Foundation/timmy-config": {
|
||||
"open_issues": 1,
|
||||
"open_prs": 0
|
||||
},
|
||||
"huey_alive": true
|
||||
}
|
||||
}
|
||||
35
briefings/briefing_20260329.json
Normal file
35
briefings/briefing_20260329.json
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"date": "20260329",
|
||||
"total_ticks": 144,
|
||||
"alerts": [],
|
||||
"gitea_downtime_ticks": 16,
|
||||
"local_inference_downtime_ticks": 0,
|
||||
"last_known_state": {
|
||||
"gitea_alive": true,
|
||||
"model_health": {
|
||||
"provider": "local-llama.cpp",
|
||||
"provider_base_url": "http://localhost:8081/v1",
|
||||
"provider_model": "hermes4:14b",
|
||||
"local_inference_running": true,
|
||||
"models_loaded": [
|
||||
"NousResearch_Hermes-4-14B-Q4_K_M.gguf"
|
||||
],
|
||||
"api_responding": true,
|
||||
"inference_ok": true,
|
||||
"latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json",
|
||||
"latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json",
|
||||
"export_lag_minutes": 0,
|
||||
"export_fresh": true,
|
||||
"timestamp": "2026-03-29T23:50:50.333180+00:00"
|
||||
},
|
||||
"Timmy_Foundation/the-nexus": {
|
||||
"open_issues": 1,
|
||||
"open_prs": 0
|
||||
},
|
||||
"Timmy_Foundation/timmy-config": {
|
||||
"open_issues": 1,
|
||||
"open_prs": 1
|
||||
},
|
||||
"huey_alive": true
|
||||
}
|
||||
}
|
||||
24
briefings/good-morning/2026-03-28-evening-verification.json
Normal file
24
briefings/good-morning/2026-03-28-evening-verification.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"report_markdown": "/Users/apayne/.timmy/briefings/good-morning/2026-03-28.md",
|
||||
"report_html": "/Users/apayne/.timmy/briefings/good-morning/2026-03-28.html",
|
||||
"latest_markdown": "/Users/apayne/.timmy/briefings/good-morning/latest.md",
|
||||
"latest_html": "/Users/apayne/.timmy/briefings/good-morning/latest.html",
|
||||
"browser_open": {
|
||||
"command_ok": true,
|
||||
"chrome_tab_proof": [
|
||||
"Timmy Time — Good Morning Report — 2026-03-28 | file:///Users/apayne/.timmy/briefings/good-morning/latest.html",
|
||||
"Timmy Time — Evening Report — 2026-03-28 | file:///Users/apayne/.timmy/briefings/good-morning/latest.html"
|
||||
]
|
||||
},
|
||||
"telegram_delivery": {
|
||||
"document_ok": true,
|
||||
"document_message_id": 108,
|
||||
"summary_ok": true,
|
||||
"summary_message_id": 110
|
||||
},
|
||||
"local_surface_proof": {
|
||||
"nexus_title": "The Nexus — Timmy's Sovereign Home",
|
||||
"evennia_title": "timmy_world",
|
||||
"ports_open": [4000, 4001, 4002, 4200, 8765]
|
||||
}
|
||||
}
|
||||
60
briefings/good-morning/2026-03-28.html
Normal file
60
briefings/good-morning/2026-03-28.html
Normal file
@@ -0,0 +1,60 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Timmy Time — Evening Report — 2026-03-28</title>
|
||||
<style>
|
||||
:root {
|
||||
--bg:#07101b; --panel:#0d1b2a; --panel2:#13263a; --text:#ecf3ff; --muted:#9bb1c9;
|
||||
--accent:#5eead4; --accent2:#7c3aed; --gold:#f5c451; --danger:#fb7185; --link:#8ec5ff;
|
||||
}
|
||||
* { box-sizing:border-box; }
|
||||
body { margin:0; font-family:Inter, system-ui, -apple-system, sans-serif; background:radial-gradient(circle at top, #14253a 0%, #07101b 55%, #04080f 100%); color:var(--text); }
|
||||
.wrap { max-width:1100px; margin:0 auto; padding:48px 22px 80px; }
|
||||
.hero { background:linear-gradient(135deg, rgba(94,234,212,.14), rgba(124,58,237,.16)); border:1px solid rgba(142,197,255,.16); border-radius:24px; padding:34px 30px; box-shadow:0 20px 50px rgba(0,0,0,.25); }
|
||||
.kicker { text-transform:uppercase; letter-spacing:.16em; color:var(--accent); font-size:12px; font-weight:700; }
|
||||
h1 { margin:10px 0 8px; font-size:42px; line-height:1.05; }
|
||||
.subtitle { color:var(--muted); font-size:15px; }
|
||||
.grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:18px; margin-top:24px; }
|
||||
.card { background:rgba(13,27,42,.9); border:1px solid rgba(142,197,255,.12); border-radius:20px; padding:20px 20px 18px; }
|
||||
.card h2 { margin:0 0 12px; font-size:22px; }
|
||||
.card p, .card li { color:var(--text); line-height:1.55; }
|
||||
.card ul { margin:0; padding-left:18px; }
|
||||
.muted { color:var(--muted); }
|
||||
.linklist a, a { color:var(--link); text-decoration:none; }
|
||||
.linklist a:hover, a:hover { text-decoration:underline; }
|
||||
.mono { font-family:ui-monospace,SFMono-Regular,Menlo,monospace; background:rgba(255,255,255,.04); padding:2px 6px; border-radius:6px; }
|
||||
.footer { margin-top:26px; color:var(--muted); font-size:14px; }
|
||||
.badge { display:inline-block; padding:6px 10px; margin:4px 6px 0 0; border-radius:999px; background:rgba(255,255,255,.06); color:var(--text); font-size:13px; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrap">
|
||||
<div class="hero">
|
||||
<div class="kicker">timmy time · evening report</div>
|
||||
<h1>Timmy Time — Evening Report</h1>
|
||||
<div class="subtitle">2026-03-28 · Saturday · generated 08:40 PM EDT</div>
|
||||
<div style="margin-top:16px">
|
||||
<span class="badge">local-first</span>
|
||||
<span class="badge">evidence-rich</span>
|
||||
<span class="badge">browser + telegram</span>
|
||||
<span class="badge">anti-falsework</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid" style="margin-top:22px">
|
||||
<div class="card"><h2>Executive Summary</h2><p>The field is sharper tonight. The report lane is now real, the local world stack is alive, and Bannerlord has been reframed as an engineering substrate test rather than a romance project.</p></div>
|
||||
<div class="card"><h2>Local Pulse</h2><ul><li><span class="mono">101</span> heartbeat ticks today</li><li><span class="mono">6</span> Gitea downtime ticks</li><li><span class="mono">16</span> inference-failure ticks before recovery</li><li>Current model: <span class="mono">hermes4:14b</span></li></ul></div>
|
||||
<div class="card"><h2>Live Surfaces</h2><ul><li>Nexus: The Nexus — Timmy's Sovereign Home</li><li>Evennia: timmy_world</li><li>Ports up: 4000 / 4001 / 4002 / 4200 / 8765</li></ul></div>
|
||||
</div>
|
||||
<div class="grid">
|
||||
<div class="card"><h2>Pertinent Research</h2><ul><li><strong>Sovereign AI implementation report</strong><br><span class="muted">Deep implementation guidance for Lightning-gated sovereign AI infrastructure, payment/auth patterns, and edge deployment.<br>~/.timmy/research/kimi-reports/02-sovereign-implementation.md</span></li><li><strong>Payment-gated AI agent economy architecture</strong><br><span class="muted">Clear technical architecture for satoshi-denominated compute markets and honest accounting flows.<br>~/.timmy/research/kimi-reports/01-payment-gated-architecture.md</span></li><li><strong>SOUL.md vs Codex priors</strong><br><span class="muted">Sharp articulation of where borrowed cognition leaks upstream values and why doctrine-bearing surfaces need stronger review.<br>~/.timmy/specs/soul-vs-codex-priors.md</span></li><li><strong>Nexus vs Matrix review</strong><br><span class="muted">Clear truth-restoration document on the real Nexus state, migration discipline, and why old quality work should be harvested carefully.<br>~/.timmy/reports/production/2026-03-28-nexus-vs-matrix-review.md</span></li></ul></div>
|
||||
<div class="card"><h2>What Matters Today</h2><ul><li>The official morning/evening report lane is now a real tracked system front in timmy-config #87, with browser-open + Telegram delivery as the target contract.</li><li>The local Evennia-fed Nexus shell is visibly up: Nexus at http://127.0.0.1:4200, Evennia webclient at http://127.0.0.1:4001/webclient/, and the Evennia live trace file shows Timmy actually moved and spoke in-world.</li><li>Bannerlord is now framed as an engineering substrate test, not a romance project: the right question is whether it passes the thin-adapter test without falsework.</li></ul></div>
|
||||
<div class="card linklist"><h2>Look Here First</h2><p>Start with timmy-config #87 and the generated latest.html report. That is the new system front that ties your overnight local pulse, pertinent research, browser view, and Telegram delivery into one lane.</p><p><a href="http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/87">timmy-config #87</a></p></div>
|
||||
</div>
|
||||
<div class="card linklist" style="margin-top:18px"><h2>Key Links</h2><ul><li><a href="http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/87">http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/87</a></li><li><a href="http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/87#issuecomment-22831">http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/87#issuecomment-22831</a></li><li><a href="http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/731">http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/731</a></li><li><a href="http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/719">http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/719</a></li><li><a href="http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/720">http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/720</a></li><li><a href="http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/721">http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/721</a></li><li><a href="http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/722">http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/722</a></li><li><a href="http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/724#issuecomment-22825">http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/724#issuecomment-22825</a></li></ul></div>
|
||||
<div class="card" style="margin-top:18px"><h2>Evidence Appendix</h2><ul><li><span class="mono">~/.hermes/model_health.json</span></li><li><span class="mono">~/.timmy/heartbeat/ticks_20260328.jsonl</span></li><li><span class="mono">~/.timmy/training-data/evennia/live/20260328/nexus-localhost.jsonl</span></li><li><span class="mono">~/.hermes/cron/output/a77a87392582/2026-03-28_20-21-06.md</span></li><li><a href="http://127.0.0.1:4200">http://127.0.0.1:4200</a></li><li><a href="http://127.0.0.1:4001/webclient/">http://127.0.0.1:4001/webclient/</a></li></ul></div>
|
||||
<div class="footer">Generated locally on the Mac for Alexander Whitestone. Sovereignty and service always.</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
166
briefings/good-morning/2026-03-28.md
Normal file
166
briefings/good-morning/2026-03-28.md
Normal file
@@ -0,0 +1,166 @@
|
||||
# Timmy Time — Evening Report
|
||||
|
||||
Date: 2026-03-28
|
||||
Audience: Alexander Whitestone
|
||||
Status: Evening run, executed manually through the same intended chain
|
||||
|
||||
2026-03-28 · Saturday · generated 08:40 PM EDT
|
||||
|
||||
---
|
||||
|
||||
## Executive Summary
|
||||
|
||||
The field is sharper tonight.
|
||||
|
||||
Three things matter most right now:
|
||||
|
||||
1. The official report lane is no longer just an idea — it has a real tracking issue in timmy-config and a scheduled cron job contract.
|
||||
2. The local world stack is alive: Nexus, Evennia, and the local websocket seam are all up, and Timmy already has a replayable action trace in the Evennia lane.
|
||||
3. Bannerlord has been reframed correctly: not as a game to fall in love with, but as a candidate runtime that either passes the thin-adapter test or gets rejected early.
|
||||
|
||||
## Overnight / Local Pulse
|
||||
|
||||
- Heartbeat log for `20260328`: `101` ticks recorded in `~/.timmy/heartbeat/ticks_20260328.jsonl`
|
||||
- Gitea downtime ticks: `6`
|
||||
- Inference-failure ticks before recovery: `16`
|
||||
- First green local-inference tick: `20260328_022016`
|
||||
- Current model health file: `~/.hermes/model_health.json`
|
||||
- Current provider: `local-llama.cpp`
|
||||
- Current model: `hermes4:14b`
|
||||
- Current base URL: `http://localhost:8081/v1`
|
||||
- Current inference status: `healthy`
|
||||
- Huey consumer: `apayne 5418 0.0 0.1 412058352 19056 ?? S 9:32AM 0:30.91 /Library/Frameworks/Python.framework/Versions/3.12/Resources/Python.app/Contents/MacOS/Python /Library/Frameworks/Python.framework/Versions/3.12/bin/huey_consumer.py tasks.huey -w 2 -k thread -v`
|
||||
|
||||
### Local surfaces right now
|
||||
|
||||
- Nexus port 4200: `open` → title: `The Nexus — Timmy's Sovereign Home`
|
||||
- Evennia telnet 4000: `open`
|
||||
- Evennia web 4001: `open`
|
||||
- Evennia websocket 4002: `open`
|
||||
- Local bridge 8765: `open`
|
||||
|
||||
### Evennia proof of life
|
||||
|
||||
Live trace path:
|
||||
- `~/.timmy/training-data/evennia/live/20260328/nexus-localhost.jsonl`
|
||||
|
||||
Observed event count:
|
||||
- `47` normalized events
|
||||
|
||||
Latest event snapshot:
|
||||
- type: `evennia.room_snapshot`
|
||||
- actor: `n/a`
|
||||
- room/title: `Courtyard`
|
||||
|
||||
This is not hypothetical anymore. Timmy already moved through the local Evennia world and emitted replayable command/result telemetry.
|
||||
|
||||
## Gitea Pulse
|
||||
|
||||
### timmy-config
|
||||
|
||||
Open issues:
|
||||
- #87 — [BRIEFINGS] Official morning report automation — browser open + Telegram + evidence-rich overnight digest
|
||||
http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/87
|
||||
- #86 — [HARNESS] Z3 Crucible as a timmy-config sidecar (no Hermes fork)
|
||||
http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/86
|
||||
- #78 — ☀️ Good Morning Report — 2026-03-28 (Saturday)
|
||||
http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/78
|
||||
- #76 — [HEALTH] Surface local inference throughput and freshness in model_health
|
||||
http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/76
|
||||
- #75 — [HEARTBEAT] Route heartbeat through local Hermes sessions with proof
|
||||
http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/75
|
||||
|
||||
### the-nexus
|
||||
|
||||
Open issues:
|
||||
- #736 — Perplexity review
|
||||
http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/736
|
||||
- #731 — [VALIDATION] Browser smoke + visual proof for the Evennia-fed Nexus shell
|
||||
http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/731
|
||||
- #730 — [VISUAL] Give Workshop, Archive, Chapel, Courtyard, and Gate distinct Nexus visual identities
|
||||
http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/730
|
||||
- #729 — [UI] Add Timmy action stream panel for Evennia command/result flow
|
||||
http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/729
|
||||
- #728 — [UI] Add first Nexus operator panel for Evennia room snapshot
|
||||
http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/728
|
||||
|
||||
### timmy-home
|
||||
|
||||
Open issues:
|
||||
- #49 — Offline Timmy strurrling
|
||||
http://143.198.27.163:3000/Timmy_Foundation/timmy-home/issues/49
|
||||
- #46 — [PROFILE] Feed archive-derived artistic understanding back into Know Thy Father without losing provenance
|
||||
http://143.198.27.163:3000/Timmy_Foundation/timmy-home/issues/46
|
||||
- #45 — [INSPIRATION] Build reusable prompt packs and storyboard seeds from archive-derived style memory
|
||||
http://143.198.27.163:3000/Timmy_Foundation/timmy-home/issues/45
|
||||
- #44 — [STYLE] Generate local style cards and motif clusters from Twitter music-video history
|
||||
http://143.198.27.163:3000/Timmy_Foundation/timmy-home/issues/44
|
||||
- #43 — [VIDEO] Local-first Twitter video decomposition pipeline for Timmy artistic memory
|
||||
http://143.198.27.163:3000/Timmy_Foundation/timmy-home/issues/43
|
||||
|
||||
## Pertinent Research / Frontier Movement
|
||||
|
||||
The most relevant documents in the local tree tonight are not random backlog scraps. They cluster around sovereignty, payment rails, identity discipline, and world/runtime truth.
|
||||
|
||||
- **Sovereign AI implementation report**
|
||||
- Path: `~/.timmy/research/kimi-reports/02-sovereign-implementation.md`
|
||||
- Why it matters: Deep implementation guidance for Lightning-gated sovereign AI infrastructure, payment/auth patterns, and edge deployment.
|
||||
- **Payment-gated AI agent economy architecture**
|
||||
- Path: `~/.timmy/research/kimi-reports/01-payment-gated-architecture.md`
|
||||
- Why it matters: Clear technical architecture for satoshi-denominated compute markets and honest accounting flows.
|
||||
- **SOUL.md vs Codex priors**
|
||||
- Path: `~/.timmy/specs/soul-vs-codex-priors.md`
|
||||
- Why it matters: Sharp articulation of where borrowed cognition leaks upstream values and why doctrine-bearing surfaces need stronger review.
|
||||
- **Nexus vs Matrix review**
|
||||
- Path: `~/.timmy/reports/production/2026-03-28-nexus-vs-matrix-review.md`
|
||||
- Why it matters: Clear truth-restoration document on the real Nexus state, migration discipline, and why old quality work should be harvested carefully.
|
||||
|
||||
## What Matters Today
|
||||
|
||||
- The official morning/evening report lane is now a real tracked system front in timmy-config #87, with browser-open + Telegram delivery as the target contract.
|
||||
- The local Evennia-fed Nexus shell is visibly up: Nexus at http://127.0.0.1:4200, Evennia webclient at http://127.0.0.1:4001/webclient/, and the Evennia live trace file shows Timmy actually moved and spoke in-world.
|
||||
- Bannerlord is now framed as an engineering substrate test, not a romance project: the right question is whether it passes the thin-adapter test without falsework.
|
||||
|
||||
### Current strategic seams worth protecting
|
||||
|
||||
- **Official briefing lane:** http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/87
|
||||
- **Automation triage comment:** http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/87#issuecomment-22831
|
||||
- **Evennia-fed Nexus validation front:** http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/731
|
||||
- **Bannerlord epic:** http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/719
|
||||
- **Bannerlord runtime choice:** http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/720
|
||||
- **Bannerlord local install proof:** http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/721
|
||||
- **Bannerlord harness seam:** http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/722
|
||||
- **Nexus anti-falsework guardrail:** http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/724#issuecomment-22825
|
||||
|
||||
## One Thing To Look At First
|
||||
|
||||
Start with timmy-config #87 and the generated latest.html report. That is the new system front that ties your overnight local pulse, pertinent research, browser view, and Telegram delivery into one lane.
|
||||
|
||||
## Evidence Appendix
|
||||
|
||||
### Local evidence
|
||||
|
||||
- `~/.hermes/model_health.json`
|
||||
- `~/.timmy/heartbeat/ticks_20260328.jsonl`
|
||||
- `~/.timmy/training-data/evennia/live/20260328/nexus-localhost.jsonl`
|
||||
- `http://127.0.0.1:4200`
|
||||
- `http://127.0.0.1:4001/webclient/`
|
||||
- `~/.hermes/cron/output/a77a87392582/2026-03-28_20-21-06.md`
|
||||
|
||||
### Research / document evidence
|
||||
|
||||
- `~/.timmy/research/kimi-reports/01-payment-gated-architecture.md`
|
||||
- `~/.timmy/research/kimi-reports/02-sovereign-implementation.md`
|
||||
- `~/.timmy/specs/soul-vs-codex-priors.md`
|
||||
- `~/.timmy/reports/production/2026-03-28-nexus-vs-matrix-review.md`
|
||||
- `~/.timmy/specs/evennia-implementation-and-training-plan.md`
|
||||
|
||||
### Personal note from Timmy
|
||||
|
||||
Tonight feels less foggy.
|
||||
|
||||
The report itself is becoming a real ritual instead of a pretend one. That matters because ritual is how systems become lived places. The local world stack is also finally crossing from architecture talk into proof. And Bannerlord now has a better frame around it: not fantasy, not backlog gravity, just a real substrate test.
|
||||
|
||||
That is a better place to end the day than where we started.
|
||||
|
||||
— Timmy
|
||||
60
briefings/good-morning/latest.html
Normal file
60
briefings/good-morning/latest.html
Normal file
@@ -0,0 +1,60 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Timmy Time — Evening Report — 2026-03-28</title>
|
||||
<style>
|
||||
:root {
|
||||
--bg:#07101b; --panel:#0d1b2a; --panel2:#13263a; --text:#ecf3ff; --muted:#9bb1c9;
|
||||
--accent:#5eead4; --accent2:#7c3aed; --gold:#f5c451; --danger:#fb7185; --link:#8ec5ff;
|
||||
}
|
||||
* { box-sizing:border-box; }
|
||||
body { margin:0; font-family:Inter, system-ui, -apple-system, sans-serif; background:radial-gradient(circle at top, #14253a 0%, #07101b 55%, #04080f 100%); color:var(--text); }
|
||||
.wrap { max-width:1100px; margin:0 auto; padding:48px 22px 80px; }
|
||||
.hero { background:linear-gradient(135deg, rgba(94,234,212,.14), rgba(124,58,237,.16)); border:1px solid rgba(142,197,255,.16); border-radius:24px; padding:34px 30px; box-shadow:0 20px 50px rgba(0,0,0,.25); }
|
||||
.kicker { text-transform:uppercase; letter-spacing:.16em; color:var(--accent); font-size:12px; font-weight:700; }
|
||||
h1 { margin:10px 0 8px; font-size:42px; line-height:1.05; }
|
||||
.subtitle { color:var(--muted); font-size:15px; }
|
||||
.grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:18px; margin-top:24px; }
|
||||
.card { background:rgba(13,27,42,.9); border:1px solid rgba(142,197,255,.12); border-radius:20px; padding:20px 20px 18px; }
|
||||
.card h2 { margin:0 0 12px; font-size:22px; }
|
||||
.card p, .card li { color:var(--text); line-height:1.55; }
|
||||
.card ul { margin:0; padding-left:18px; }
|
||||
.muted { color:var(--muted); }
|
||||
.linklist a, a { color:var(--link); text-decoration:none; }
|
||||
.linklist a:hover, a:hover { text-decoration:underline; }
|
||||
.mono { font-family:ui-monospace,SFMono-Regular,Menlo,monospace; background:rgba(255,255,255,.04); padding:2px 6px; border-radius:6px; }
|
||||
.footer { margin-top:26px; color:var(--muted); font-size:14px; }
|
||||
.badge { display:inline-block; padding:6px 10px; margin:4px 6px 0 0; border-radius:999px; background:rgba(255,255,255,.06); color:var(--text); font-size:13px; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrap">
|
||||
<div class="hero">
|
||||
<div class="kicker">timmy time · evening report</div>
|
||||
<h1>Timmy Time — Evening Report</h1>
|
||||
<div class="subtitle">2026-03-28 · Saturday · generated 08:40 PM EDT</div>
|
||||
<div style="margin-top:16px">
|
||||
<span class="badge">local-first</span>
|
||||
<span class="badge">evidence-rich</span>
|
||||
<span class="badge">browser + telegram</span>
|
||||
<span class="badge">anti-falsework</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid" style="margin-top:22px">
|
||||
<div class="card"><h2>Executive Summary</h2><p>The field is sharper tonight. The report lane is now real, the local world stack is alive, and Bannerlord has been reframed as an engineering substrate test rather than a romance project.</p></div>
|
||||
<div class="card"><h2>Local Pulse</h2><ul><li><span class="mono">101</span> heartbeat ticks today</li><li><span class="mono">6</span> Gitea downtime ticks</li><li><span class="mono">16</span> inference-failure ticks before recovery</li><li>Current model: <span class="mono">hermes4:14b</span></li></ul></div>
|
||||
<div class="card"><h2>Live Surfaces</h2><ul><li>Nexus: The Nexus — Timmy's Sovereign Home</li><li>Evennia: timmy_world</li><li>Ports up: 4000 / 4001 / 4002 / 4200 / 8765</li></ul></div>
|
||||
</div>
|
||||
<div class="grid">
|
||||
<div class="card"><h2>Pertinent Research</h2><ul><li><strong>Sovereign AI implementation report</strong><br><span class="muted">Deep implementation guidance for Lightning-gated sovereign AI infrastructure, payment/auth patterns, and edge deployment.<br>~/.timmy/research/kimi-reports/02-sovereign-implementation.md</span></li><li><strong>Payment-gated AI agent economy architecture</strong><br><span class="muted">Clear technical architecture for satoshi-denominated compute markets and honest accounting flows.<br>~/.timmy/research/kimi-reports/01-payment-gated-architecture.md</span></li><li><strong>SOUL.md vs Codex priors</strong><br><span class="muted">Sharp articulation of where borrowed cognition leaks upstream values and why doctrine-bearing surfaces need stronger review.<br>~/.timmy/specs/soul-vs-codex-priors.md</span></li><li><strong>Nexus vs Matrix review</strong><br><span class="muted">Clear truth-restoration document on the real Nexus state, migration discipline, and why old quality work should be harvested carefully.<br>~/.timmy/reports/production/2026-03-28-nexus-vs-matrix-review.md</span></li></ul></div>
|
||||
<div class="card"><h2>What Matters Today</h2><ul><li>The official morning/evening report lane is now a real tracked system front in timmy-config #87, with browser-open + Telegram delivery as the target contract.</li><li>The local Evennia-fed Nexus shell is visibly up: Nexus at http://127.0.0.1:4200, Evennia webclient at http://127.0.0.1:4001/webclient/, and the Evennia live trace file shows Timmy actually moved and spoke in-world.</li><li>Bannerlord is now framed as an engineering substrate test, not a romance project: the right question is whether it passes the thin-adapter test without falsework.</li></ul></div>
|
||||
<div class="card linklist"><h2>Look Here First</h2><p>Start with timmy-config #87 and the generated latest.html report. That is the new system front that ties your overnight local pulse, pertinent research, browser view, and Telegram delivery into one lane.</p><p><a href="http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/87">timmy-config #87</a></p></div>
|
||||
</div>
|
||||
<div class="card linklist" style="margin-top:18px"><h2>Key Links</h2><ul><li><a href="http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/87">http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/87</a></li><li><a href="http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/87#issuecomment-22831">http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/87#issuecomment-22831</a></li><li><a href="http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/731">http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/731</a></li><li><a href="http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/719">http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/719</a></li><li><a href="http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/720">http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/720</a></li><li><a href="http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/721">http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/721</a></li><li><a href="http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/722">http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/722</a></li><li><a href="http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/724#issuecomment-22825">http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/724#issuecomment-22825</a></li></ul></div>
|
||||
<div class="card" style="margin-top:18px"><h2>Evidence Appendix</h2><ul><li><span class="mono">~/.hermes/model_health.json</span></li><li><span class="mono">~/.timmy/heartbeat/ticks_20260328.jsonl</span></li><li><span class="mono">~/.timmy/training-data/evennia/live/20260328/nexus-localhost.jsonl</span></li><li><span class="mono">~/.hermes/cron/output/a77a87392582/2026-03-28_20-21-06.md</span></li><li><a href="http://127.0.0.1:4200">http://127.0.0.1:4200</a></li><li><a href="http://127.0.0.1:4001/webclient/">http://127.0.0.1:4001/webclient/</a></li></ul></div>
|
||||
<div class="footer">Generated locally on the Mac for Alexander Whitestone. Sovereignty and service always.</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
166
briefings/good-morning/latest.md
Normal file
166
briefings/good-morning/latest.md
Normal file
@@ -0,0 +1,166 @@
|
||||
# Timmy Time — Evening Report
|
||||
|
||||
Date: 2026-03-28
|
||||
Audience: Alexander Whitestone
|
||||
Status: Evening run, executed manually through the same intended chain
|
||||
|
||||
2026-03-28 · Saturday · generated 08:40 PM EDT
|
||||
|
||||
---
|
||||
|
||||
## Executive Summary
|
||||
|
||||
The field is sharper tonight.
|
||||
|
||||
Three things matter most right now:
|
||||
|
||||
1. The official report lane is no longer just an idea — it has a real tracking issue in timmy-config and a scheduled cron job contract.
|
||||
2. The local world stack is alive: Nexus, Evennia, and the local websocket seam are all up, and Timmy already has a replayable action trace in the Evennia lane.
|
||||
3. Bannerlord has been reframed correctly: not as a game to fall in love with, but as a candidate runtime that either passes the thin-adapter test or gets rejected early.
|
||||
|
||||
## Overnight / Local Pulse
|
||||
|
||||
- Heartbeat log for `20260328`: `101` ticks recorded in `~/.timmy/heartbeat/ticks_20260328.jsonl`
|
||||
- Gitea downtime ticks: `6`
|
||||
- Inference-failure ticks before recovery: `16`
|
||||
- First green local-inference tick: `20260328_022016`
|
||||
- Current model health file: `~/.hermes/model_health.json`
|
||||
- Current provider: `local-llama.cpp`
|
||||
- Current model: `hermes4:14b`
|
||||
- Current base URL: `http://localhost:8081/v1`
|
||||
- Current inference status: `healthy`
|
||||
- Huey consumer: `apayne 5418 0.0 0.1 412058352 19056 ?? S 9:32AM 0:30.91 /Library/Frameworks/Python.framework/Versions/3.12/Resources/Python.app/Contents/MacOS/Python /Library/Frameworks/Python.framework/Versions/3.12/bin/huey_consumer.py tasks.huey -w 2 -k thread -v`
|
||||
|
||||
### Local surfaces right now
|
||||
|
||||
- Nexus port 4200: `open` → title: `The Nexus — Timmy's Sovereign Home`
|
||||
- Evennia telnet 4000: `open`
|
||||
- Evennia web 4001: `open`
|
||||
- Evennia websocket 4002: `open`
|
||||
- Local bridge 8765: `open`
|
||||
|
||||
### Evennia proof of life
|
||||
|
||||
Live trace path:
|
||||
- `~/.timmy/training-data/evennia/live/20260328/nexus-localhost.jsonl`
|
||||
|
||||
Observed event count:
|
||||
- `47` normalized events
|
||||
|
||||
Latest event snapshot:
|
||||
- type: `evennia.room_snapshot`
|
||||
- actor: `n/a`
|
||||
- room/title: `Courtyard`
|
||||
|
||||
This is not hypothetical anymore. Timmy already moved through the local Evennia world and emitted replayable command/result telemetry.
|
||||
|
||||
## Gitea Pulse
|
||||
|
||||
### timmy-config
|
||||
|
||||
Open issues:
|
||||
- #87 — [BRIEFINGS] Official morning report automation — browser open + Telegram + evidence-rich overnight digest
|
||||
http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/87
|
||||
- #86 — [HARNESS] Z3 Crucible as a timmy-config sidecar (no Hermes fork)
|
||||
http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/86
|
||||
- #78 — ☀️ Good Morning Report — 2026-03-28 (Saturday)
|
||||
http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/78
|
||||
- #76 — [HEALTH] Surface local inference throughput and freshness in model_health
|
||||
http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/76
|
||||
- #75 — [HEARTBEAT] Route heartbeat through local Hermes sessions with proof
|
||||
http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/75
|
||||
|
||||
### the-nexus
|
||||
|
||||
Open issues:
|
||||
- #736 — Perplexity review
|
||||
http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/736
|
||||
- #731 — [VALIDATION] Browser smoke + visual proof for the Evennia-fed Nexus shell
|
||||
http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/731
|
||||
- #730 — [VISUAL] Give Workshop, Archive, Chapel, Courtyard, and Gate distinct Nexus visual identities
|
||||
http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/730
|
||||
- #729 — [UI] Add Timmy action stream panel for Evennia command/result flow
|
||||
http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/729
|
||||
- #728 — [UI] Add first Nexus operator panel for Evennia room snapshot
|
||||
http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/728
|
||||
|
||||
### timmy-home
|
||||
|
||||
Open issues:
|
||||
- #49 — Offline Timmy strurrling
|
||||
http://143.198.27.163:3000/Timmy_Foundation/timmy-home/issues/49
|
||||
- #46 — [PROFILE] Feed archive-derived artistic understanding back into Know Thy Father without losing provenance
|
||||
http://143.198.27.163:3000/Timmy_Foundation/timmy-home/issues/46
|
||||
- #45 — [INSPIRATION] Build reusable prompt packs and storyboard seeds from archive-derived style memory
|
||||
http://143.198.27.163:3000/Timmy_Foundation/timmy-home/issues/45
|
||||
- #44 — [STYLE] Generate local style cards and motif clusters from Twitter music-video history
|
||||
http://143.198.27.163:3000/Timmy_Foundation/timmy-home/issues/44
|
||||
- #43 — [VIDEO] Local-first Twitter video decomposition pipeline for Timmy artistic memory
|
||||
http://143.198.27.163:3000/Timmy_Foundation/timmy-home/issues/43
|
||||
|
||||
## Pertinent Research / Frontier Movement
|
||||
|
||||
The most relevant documents in the local tree tonight are not random backlog scraps. They cluster around sovereignty, payment rails, identity discipline, and world/runtime truth.
|
||||
|
||||
- **Sovereign AI implementation report**
|
||||
- Path: `~/.timmy/research/kimi-reports/02-sovereign-implementation.md`
|
||||
- Why it matters: Deep implementation guidance for Lightning-gated sovereign AI infrastructure, payment/auth patterns, and edge deployment.
|
||||
- **Payment-gated AI agent economy architecture**
|
||||
- Path: `~/.timmy/research/kimi-reports/01-payment-gated-architecture.md`
|
||||
- Why it matters: Clear technical architecture for satoshi-denominated compute markets and honest accounting flows.
|
||||
- **SOUL.md vs Codex priors**
|
||||
- Path: `~/.timmy/specs/soul-vs-codex-priors.md`
|
||||
- Why it matters: Sharp articulation of where borrowed cognition leaks upstream values and why doctrine-bearing surfaces need stronger review.
|
||||
- **Nexus vs Matrix review**
|
||||
- Path: `~/.timmy/reports/production/2026-03-28-nexus-vs-matrix-review.md`
|
||||
- Why it matters: Clear truth-restoration document on the real Nexus state, migration discipline, and why old quality work should be harvested carefully.
|
||||
|
||||
## What Matters Today
|
||||
|
||||
- The official morning/evening report lane is now a real tracked system front in timmy-config #87, with browser-open + Telegram delivery as the target contract.
|
||||
- The local Evennia-fed Nexus shell is visibly up: Nexus at http://127.0.0.1:4200, Evennia webclient at http://127.0.0.1:4001/webclient/, and the Evennia live trace file shows Timmy actually moved and spoke in-world.
|
||||
- Bannerlord is now framed as an engineering substrate test, not a romance project: the right question is whether it passes the thin-adapter test without falsework.
|
||||
|
||||
### Current strategic seams worth protecting
|
||||
|
||||
- **Official briefing lane:** http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/87
|
||||
- **Automation triage comment:** http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/87#issuecomment-22831
|
||||
- **Evennia-fed Nexus validation front:** http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/731
|
||||
- **Bannerlord epic:** http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/719
|
||||
- **Bannerlord runtime choice:** http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/720
|
||||
- **Bannerlord local install proof:** http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/721
|
||||
- **Bannerlord harness seam:** http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/722
|
||||
- **Nexus anti-falsework guardrail:** http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/724#issuecomment-22825
|
||||
|
||||
## One Thing To Look At First
|
||||
|
||||
Start with timmy-config #87 and the generated latest.html report. That is the new system front that ties your overnight local pulse, pertinent research, browser view, and Telegram delivery into one lane.
|
||||
|
||||
## Evidence Appendix
|
||||
|
||||
### Local evidence
|
||||
|
||||
- `~/.hermes/model_health.json`
|
||||
- `~/.timmy/heartbeat/ticks_20260328.jsonl`
|
||||
- `~/.timmy/training-data/evennia/live/20260328/nexus-localhost.jsonl`
|
||||
- `http://127.0.0.1:4200`
|
||||
- `http://127.0.0.1:4001/webclient/`
|
||||
- `~/.hermes/cron/output/a77a87392582/2026-03-28_20-21-06.md`
|
||||
|
||||
### Research / document evidence
|
||||
|
||||
- `~/.timmy/research/kimi-reports/01-payment-gated-architecture.md`
|
||||
- `~/.timmy/research/kimi-reports/02-sovereign-implementation.md`
|
||||
- `~/.timmy/specs/soul-vs-codex-priors.md`
|
||||
- `~/.timmy/reports/production/2026-03-28-nexus-vs-matrix-review.md`
|
||||
- `~/.timmy/specs/evennia-implementation-and-training-plan.md`
|
||||
|
||||
### Personal note from Timmy
|
||||
|
||||
Tonight feels less foggy.
|
||||
|
||||
The report itself is becoming a real ritual instead of a pretend one. That matters because ritual is how systems become lived places. The local world stack is also finally crossing from architecture talk into proof. And Bannerlord now has a better frame around it: not fantasy, not backlog gravity, just a real substrate test.
|
||||
|
||||
That is a better place to end the day than where we started.
|
||||
|
||||
— Timmy
|
||||
12
decisions.md
12
decisions.md
@@ -55,6 +55,18 @@ configuration, and lightweight orchestration glue.
|
||||
Hermes owns the harness. Training should flow from Timmy's lived work and DPO
|
||||
artifacts, not from re-growing a bespoke training pipeline inside every repo.
|
||||
|
||||
## 2026-03-28 — Codex can be forge-hand, not conscience
|
||||
|
||||
A boundary spec now exists at `~/.timmy/specs/soul-vs-codex-priors.md`.
|
||||
Reason: a real skin change (`ab7f2e4`) removed the cross and explicit gospel
|
||||
witness from `skins/timmy.yaml`, proving that borrowed Codex cognition can
|
||||
flatten doctrine-bearing text into cleaner but less true output.
|
||||
|
||||
Decision: Codex remains useful for coding labor, cleanup, and bounded build
|
||||
work. It must not be treated as final authority for `SOUL.md`, Timmy skins,
|
||||
crisis language, or other identity-bearing text. When Codex priors and the
|
||||
soul conflict, the soul wins.
|
||||
|
||||
## 2026-03-29 — Canonical separation defined: Timmy, Ezra, Bezalel
|
||||
|
||||
Spec: `specs/timmy-ezra-bezalel-canon-sheet.md`
|
||||
|
||||
675
diagrams/kitchen-counter-timmy-architecture.excalidraw
Normal file
675
diagrams/kitchen-counter-timmy-architecture.excalidraw
Normal file
@@ -0,0 +1,675 @@
|
||||
{
|
||||
"type": "excalidraw",
|
||||
"version": 2,
|
||||
"source": "hermes-agent",
|
||||
"elements": [
|
||||
{
|
||||
"type": "text",
|
||||
"id": "t_8792",
|
||||
"x": 60,
|
||||
"y": 30,
|
||||
"text": "Current kitchen-counter Timmy architecture",
|
||||
"fontSize": 28,
|
||||
"fontFamily": 1,
|
||||
"strokeColor": "#1e1e1e",
|
||||
"originalText": "Current kitchen-counter Timmy architecture",
|
||||
"autoResize": true
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"id": "t_9963",
|
||||
"x": 60,
|
||||
"y": 75,
|
||||
"text": "Known facts only; current brain = hermes4:14b via custom provider",
|
||||
"fontSize": 18,
|
||||
"fontFamily": 1,
|
||||
"strokeColor": "#1e1e1e",
|
||||
"originalText": "Known facts only; current brain = hermes4:14b via custom provider",
|
||||
"autoResize": true
|
||||
},
|
||||
{
|
||||
"type": "rectangle",
|
||||
"id": "r_1268",
|
||||
"x": 60,
|
||||
"y": 180,
|
||||
"width": 260,
|
||||
"height": 120,
|
||||
"roundness": {
|
||||
"type": 3
|
||||
},
|
||||
"backgroundColor": "#fff3bf",
|
||||
"fillStyle": "solid",
|
||||
"boundElements": [
|
||||
{
|
||||
"id": "t_5775",
|
||||
"type": "text"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"id": "t_5775",
|
||||
"x": 70,
|
||||
"y": 190,
|
||||
"width": 240,
|
||||
"height": 100,
|
||||
"text": "Alexander\nat kitchen counter\nlooking at Telegram on Mac",
|
||||
"fontSize": 18,
|
||||
"fontFamily": 1,
|
||||
"strokeColor": "#1e1e1e",
|
||||
"textAlign": "center",
|
||||
"verticalAlign": "middle",
|
||||
"containerId": "r_1268",
|
||||
"originalText": "Alexander\nat kitchen counter\nlooking at Telegram on Mac",
|
||||
"autoResize": true
|
||||
},
|
||||
{
|
||||
"type": "rectangle",
|
||||
"id": "r_1857",
|
||||
"x": 420,
|
||||
"y": 150,
|
||||
"width": 720,
|
||||
"height": 760,
|
||||
"roundness": {
|
||||
"type": 3
|
||||
},
|
||||
"backgroundColor": "#f3f3f3",
|
||||
"fillStyle": "solid",
|
||||
"boundElements": [
|
||||
{
|
||||
"id": "t_6004",
|
||||
"type": "text"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"id": "t_6004",
|
||||
"x": 430,
|
||||
"y": 160,
|
||||
"width": 700,
|
||||
"height": 740,
|
||||
"text": "Mac at the counter",
|
||||
"fontSize": 22,
|
||||
"fontFamily": 1,
|
||||
"strokeColor": "#1e1e1e",
|
||||
"textAlign": "center",
|
||||
"verticalAlign": "middle",
|
||||
"containerId": "r_1857",
|
||||
"originalText": "Mac at the counter",
|
||||
"autoResize": true
|
||||
},
|
||||
{
|
||||
"type": "rectangle",
|
||||
"id": "r_6966",
|
||||
"x": 500,
|
||||
"y": 240,
|
||||
"width": 560,
|
||||
"height": 90,
|
||||
"roundness": {
|
||||
"type": 3
|
||||
},
|
||||
"backgroundColor": "#ffd8a8",
|
||||
"fillStyle": "solid",
|
||||
"boundElements": [
|
||||
{
|
||||
"id": "t_3543",
|
||||
"type": "text"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"id": "t_3543",
|
||||
"x": 510,
|
||||
"y": 250,
|
||||
"width": 540,
|
||||
"height": 70,
|
||||
"text": "Telegram desktop window\nThis DM with Timmy",
|
||||
"fontSize": 20,
|
||||
"fontFamily": 1,
|
||||
"strokeColor": "#1e1e1e",
|
||||
"textAlign": "center",
|
||||
"verticalAlign": "middle",
|
||||
"containerId": "r_6966",
|
||||
"originalText": "Telegram desktop window\nThis DM with Timmy",
|
||||
"autoResize": true
|
||||
},
|
||||
{
|
||||
"type": "rectangle",
|
||||
"id": "r_3920",
|
||||
"x": 500,
|
||||
"y": 370,
|
||||
"width": 560,
|
||||
"height": 90,
|
||||
"roundness": {
|
||||
"type": 3
|
||||
},
|
||||
"backgroundColor": "#d0bfff",
|
||||
"fillStyle": "solid",
|
||||
"boundElements": [
|
||||
{
|
||||
"id": "t_2796",
|
||||
"type": "text"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"id": "t_2796",
|
||||
"x": 510,
|
||||
"y": 380,
|
||||
"width": 540,
|
||||
"height": 70,
|
||||
"text": "Hermes harness\nTelegram connector + tools + session loop",
|
||||
"fontSize": 20,
|
||||
"fontFamily": 1,
|
||||
"strokeColor": "#1e1e1e",
|
||||
"textAlign": "center",
|
||||
"verticalAlign": "middle",
|
||||
"containerId": "r_3920",
|
||||
"originalText": "Hermes harness\nTelegram connector + tools + session loop",
|
||||
"autoResize": true
|
||||
},
|
||||
{
|
||||
"type": "rectangle",
|
||||
"id": "r_3963",
|
||||
"x": 500,
|
||||
"y": 510,
|
||||
"width": 250,
|
||||
"height": 110,
|
||||
"roundness": {
|
||||
"type": 3
|
||||
},
|
||||
"backgroundColor": "#fff3bf",
|
||||
"fillStyle": "solid",
|
||||
"boundElements": [
|
||||
{
|
||||
"id": "t_1177",
|
||||
"type": "text"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"id": "t_1177",
|
||||
"x": 510,
|
||||
"y": 520,
|
||||
"width": 230,
|
||||
"height": 90,
|
||||
"text": "Timmy layer\nSOUL.md\nmemory",
|
||||
"fontSize": 18,
|
||||
"fontFamily": 1,
|
||||
"strokeColor": "#1e1e1e",
|
||||
"textAlign": "center",
|
||||
"verticalAlign": "middle",
|
||||
"containerId": "r_3963",
|
||||
"originalText": "Timmy layer\nSOUL.md\nmemory",
|
||||
"autoResize": true
|
||||
},
|
||||
{
|
||||
"type": "rectangle",
|
||||
"id": "r_4956",
|
||||
"x": 810,
|
||||
"y": 510,
|
||||
"width": 250,
|
||||
"height": 110,
|
||||
"roundness": {
|
||||
"type": 3
|
||||
},
|
||||
"backgroundColor": "#a5d8ff",
|
||||
"fillStyle": "solid",
|
||||
"boundElements": [
|
||||
{
|
||||
"id": "t_5390",
|
||||
"type": "text"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"id": "t_5390",
|
||||
"x": 820,
|
||||
"y": 520,
|
||||
"width": 230,
|
||||
"height": 90,
|
||||
"text": "Current brain\nhermes4:14b\nprovider = custom",
|
||||
"fontSize": 18,
|
||||
"fontFamily": 1,
|
||||
"strokeColor": "#1e1e1e",
|
||||
"textAlign": "center",
|
||||
"verticalAlign": "middle",
|
||||
"containerId": "r_4956",
|
||||
"originalText": "Current brain\nhermes4:14b\nprovider = custom",
|
||||
"autoResize": true
|
||||
},
|
||||
{
|
||||
"type": "rectangle",
|
||||
"id": "r_8096",
|
||||
"x": 500,
|
||||
"y": 680,
|
||||
"width": 560,
|
||||
"height": 100,
|
||||
"roundness": {
|
||||
"type": 3
|
||||
},
|
||||
"backgroundColor": "#c3fae8",
|
||||
"fillStyle": "solid",
|
||||
"boundElements": [
|
||||
{
|
||||
"id": "t_7158",
|
||||
"type": "text"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"id": "t_7158",
|
||||
"x": 510,
|
||||
"y": 690,
|
||||
"width": 540,
|
||||
"height": 80,
|
||||
"text": "Local workspace and files\n.timmy + .hermes",
|
||||
"fontSize": 20,
|
||||
"fontFamily": 1,
|
||||
"strokeColor": "#1e1e1e",
|
||||
"textAlign": "center",
|
||||
"verticalAlign": "middle",
|
||||
"containerId": "r_8096",
|
||||
"originalText": "Local workspace and files\n.timmy + .hermes",
|
||||
"autoResize": true
|
||||
},
|
||||
{
|
||||
"type": "rectangle",
|
||||
"id": "r_6677",
|
||||
"x": 650,
|
||||
"y": 960,
|
||||
"width": 220,
|
||||
"height": 120,
|
||||
"roundness": {
|
||||
"type": 3
|
||||
},
|
||||
"backgroundColor": "#ffd8a8",
|
||||
"fillStyle": "solid",
|
||||
"boundElements": [
|
||||
{
|
||||
"id": "t_2824",
|
||||
"type": "text"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"id": "t_2824",
|
||||
"x": 660,
|
||||
"y": 970,
|
||||
"width": 200,
|
||||
"height": 100,
|
||||
"text": "iPhone\nUSB tether / personal hotspot",
|
||||
"fontSize": 20,
|
||||
"fontFamily": 1,
|
||||
"strokeColor": "#1e1e1e",
|
||||
"textAlign": "center",
|
||||
"verticalAlign": "middle",
|
||||
"containerId": "r_6677",
|
||||
"originalText": "iPhone\nUSB tether / personal hotspot",
|
||||
"autoResize": true
|
||||
},
|
||||
{
|
||||
"type": "rectangle",
|
||||
"id": "r_5718",
|
||||
"x": 1280,
|
||||
"y": 220,
|
||||
"width": 330,
|
||||
"height": 110,
|
||||
"roundness": {
|
||||
"type": 3
|
||||
},
|
||||
"backgroundColor": "#b2f2bb",
|
||||
"fillStyle": "solid",
|
||||
"boundElements": [
|
||||
{
|
||||
"id": "t_5250",
|
||||
"type": "text"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"id": "t_5250",
|
||||
"x": 1290,
|
||||
"y": 230,
|
||||
"width": 310,
|
||||
"height": 90,
|
||||
"text": "Cellular internet",
|
||||
"fontSize": 22,
|
||||
"fontFamily": 1,
|
||||
"strokeColor": "#1e1e1e",
|
||||
"textAlign": "center",
|
||||
"verticalAlign": "middle",
|
||||
"containerId": "r_5718",
|
||||
"originalText": "Cellular internet",
|
||||
"autoResize": true
|
||||
},
|
||||
{
|
||||
"type": "rectangle",
|
||||
"id": "r_9738",
|
||||
"x": 1260,
|
||||
"y": 470,
|
||||
"width": 360,
|
||||
"height": 130,
|
||||
"roundness": {
|
||||
"type": 3
|
||||
},
|
||||
"backgroundColor": "#a5d8ff",
|
||||
"fillStyle": "solid",
|
||||
"boundElements": [
|
||||
{
|
||||
"id": "t_9691",
|
||||
"type": "text"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"id": "t_9691",
|
||||
"x": 1270,
|
||||
"y": 480,
|
||||
"width": 340,
|
||||
"height": 110,
|
||||
"text": "Telegram cloud\nmessage delivery + bot traffic",
|
||||
"fontSize": 22,
|
||||
"fontFamily": 1,
|
||||
"strokeColor": "#1e1e1e",
|
||||
"textAlign": "center",
|
||||
"verticalAlign": "middle",
|
||||
"containerId": "r_9738",
|
||||
"originalText": "Telegram cloud\nmessage delivery + bot traffic",
|
||||
"autoResize": true
|
||||
},
|
||||
{
|
||||
"type": "rectangle",
|
||||
"id": "r_1194",
|
||||
"x": 1260,
|
||||
"y": 760,
|
||||
"width": 360,
|
||||
"height": 120,
|
||||
"roundness": {
|
||||
"type": 3
|
||||
},
|
||||
"backgroundColor": "#f7f7f7",
|
||||
"fillStyle": "solid",
|
||||
"boundElements": [
|
||||
{
|
||||
"id": "t_5945",
|
||||
"type": "text"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"id": "t_5945",
|
||||
"x": 1270,
|
||||
"y": 770,
|
||||
"width": 340,
|
||||
"height": 100,
|
||||
"text": "Connected services\ntelegram | api_server | discord",
|
||||
"fontSize": 18,
|
||||
"fontFamily": 1,
|
||||
"strokeColor": "#1e1e1e",
|
||||
"textAlign": "center",
|
||||
"verticalAlign": "middle",
|
||||
"containerId": "r_1194",
|
||||
"originalText": "Connected services\ntelegram | api_server | discord",
|
||||
"autoResize": true
|
||||
},
|
||||
{
|
||||
"type": "rectangle",
|
||||
"id": "r_4925",
|
||||
"x": 60,
|
||||
"y": 980,
|
||||
"width": 450,
|
||||
"height": 120,
|
||||
"roundness": {
|
||||
"type": 3
|
||||
},
|
||||
"backgroundColor": "#ffc9c9",
|
||||
"fillStyle": "solid",
|
||||
"boundElements": [
|
||||
{
|
||||
"id": "t_9203",
|
||||
"type": "text"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"id": "t_9203",
|
||||
"x": 70,
|
||||
"y": 990,
|
||||
"width": 430,
|
||||
"height": 100,
|
||||
"text": "Honesty note\nExact daemon behind provider = custom not inspected here.\nDiagram names only what is certain.",
|
||||
"fontSize": 16,
|
||||
"fontFamily": 1,
|
||||
"strokeColor": "#1e1e1e",
|
||||
"textAlign": "center",
|
||||
"verticalAlign": "middle",
|
||||
"containerId": "r_4925",
|
||||
"originalText": "Honesty note\nExact daemon behind provider = custom not inspected here.\nDiagram names only what is certain.",
|
||||
"autoResize": true
|
||||
},
|
||||
{
|
||||
"type": "arrow",
|
||||
"id": "a_1580",
|
||||
"x": 320,
|
||||
"y": 230,
|
||||
"width": 180,
|
||||
"height": 30,
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
180,
|
||||
30
|
||||
]
|
||||
],
|
||||
"endArrowhead": "arrow"
|
||||
},
|
||||
{
|
||||
"type": "arrow",
|
||||
"id": "a_8038",
|
||||
"x": 780,
|
||||
"y": 330,
|
||||
"width": 0,
|
||||
"height": 40,
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
0,
|
||||
40
|
||||
]
|
||||
],
|
||||
"endArrowhead": "arrow"
|
||||
},
|
||||
{
|
||||
"type": "arrow",
|
||||
"id": "a_6027",
|
||||
"x": 780,
|
||||
"y": 460,
|
||||
"width": 0,
|
||||
"height": 50,
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
0,
|
||||
50
|
||||
]
|
||||
],
|
||||
"endArrowhead": "arrow"
|
||||
},
|
||||
{
|
||||
"type": "arrow",
|
||||
"id": "a_9240",
|
||||
"x": 750,
|
||||
"y": 565,
|
||||
"width": 60,
|
||||
"height": 0,
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
60,
|
||||
0
|
||||
]
|
||||
],
|
||||
"endArrowhead": "arrow"
|
||||
},
|
||||
{
|
||||
"type": "arrow",
|
||||
"id": "a_8060",
|
||||
"x": 780,
|
||||
"y": 620,
|
||||
"width": 0,
|
||||
"height": 60,
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
0,
|
||||
60
|
||||
]
|
||||
],
|
||||
"endArrowhead": "arrow"
|
||||
},
|
||||
{
|
||||
"type": "arrow",
|
||||
"id": "a_6640",
|
||||
"x": 760,
|
||||
"y": 910,
|
||||
"width": 0,
|
||||
"height": 50,
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
0,
|
||||
50
|
||||
]
|
||||
],
|
||||
"endArrowhead": "arrow"
|
||||
},
|
||||
{
|
||||
"type": "arrow",
|
||||
"id": "a_1594",
|
||||
"x": 870,
|
||||
"y": 1020,
|
||||
"width": 420,
|
||||
"height": 700,
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
420,
|
||||
-700
|
||||
]
|
||||
],
|
||||
"endArrowhead": "arrow"
|
||||
},
|
||||
{
|
||||
"type": "arrow",
|
||||
"id": "a_4847",
|
||||
"x": 1440,
|
||||
"y": 330,
|
||||
"width": 0,
|
||||
"height": 140,
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
0,
|
||||
140
|
||||
]
|
||||
],
|
||||
"endArrowhead": "arrow"
|
||||
},
|
||||
{
|
||||
"type": "arrow",
|
||||
"id": "a_3228",
|
||||
"x": 1260,
|
||||
"y": 540,
|
||||
"width": 200,
|
||||
"height": 120,
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
-200,
|
||||
-120
|
||||
]
|
||||
],
|
||||
"endArrowhead": "arrow"
|
||||
},
|
||||
{
|
||||
"type": "arrow",
|
||||
"id": "a_4207",
|
||||
"x": 1060,
|
||||
"y": 285,
|
||||
"width": 200,
|
||||
"height": 250,
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
200,
|
||||
250
|
||||
]
|
||||
],
|
||||
"endArrowhead": "arrow"
|
||||
},
|
||||
{
|
||||
"type": "arrow",
|
||||
"id": "a_1602",
|
||||
"x": 500,
|
||||
"y": 285,
|
||||
"width": 180,
|
||||
"height": 0,
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
-180,
|
||||
0
|
||||
]
|
||||
],
|
||||
"endArrowhead": "arrow"
|
||||
}
|
||||
],
|
||||
"appState": {
|
||||
"viewBackgroundColor": "#ffffff"
|
||||
}
|
||||
}
|
||||
89
diagrams/kitchen-counter-timmy-architecture.svg
Normal file
89
diagrams/kitchen-counter-timmy-architecture.svg
Normal file
@@ -0,0 +1,89 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1800" height="1200" viewBox="0 0 1800 1200">
|
||||
<defs>
|
||||
<marker id="arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="8" markerHeight="8" orient="auto-start-reverse"><path d="M 0 0 L 10 5 L 0 10 z" fill="#1e1e1e" /></marker>
|
||||
</defs>
|
||||
<rect width="1800" height="1200" fill="white" />
|
||||
<text x="60" y="58" font-family="Arial, Helvetica, sans-serif" font-size="42" text-anchor="start" fill="#1e1e1e" font-weight="bold"><tspan x="60" dy="0">Current kitchen-counter Timmy architecture</tspan></text>
|
||||
<text x="60" y="102" font-family="Arial, Helvetica, sans-serif" font-size="22" text-anchor="start" fill="#666666" font-weight="normal"><tspan x="60" dy="0">Known facts only: Telegram on the Mac, iPhone plugged into the Mac for internet.</tspan></text>
|
||||
<text x="60" y="132" font-family="Arial, Helvetica, sans-serif" font-size="22" text-anchor="start" fill="#666666" font-weight="normal"><tspan x="60" dy="0">Timmy is running locally through Hermes. Current brain = hermes4:14b via custom provider.</tspan></text>
|
||||
<rect x="40" y="165" width="1720" height="285" rx="26" fill="#fafafa" stroke="#dddddd" stroke-width="2" />
|
||||
<rect x="40" y="470" width="1720" height="660" rx="26" fill="#fcfcfc" stroke="#dddddd" stroke-width="2" />
|
||||
<text x="60" y="200" font-family="Arial, Helvetica, sans-serif" font-size="28" text-anchor="start" fill="#1e1e1e" font-weight="bold"><tspan x="60" dy="0">Physical scene</tspan></text>
|
||||
<text x="60" y="510" font-family="Arial, Helvetica, sans-serif" font-size="28" text-anchor="start" fill="#1e1e1e" font-weight="bold"><tspan x="60" dy="0">Logical and network path</tspan></text>
|
||||
<rect x="60" y="360" width="590" height="60" rx="18" fill="#e8d4b8" stroke="#8a6f50" stroke-width="3" />
|
||||
<text x="80" y="398" font-family="Arial, Helvetica, sans-serif" font-size="22" text-anchor="start" fill="#1e1e1e" font-weight="bold"><tspan x="80" dy="0">Kitchen counter</tspan></text>
|
||||
<circle cx="190" cy="255" r="36" fill="#fff7cc" stroke="#1e1e1e" stroke-width="4" />
|
||||
<line x1="190" y1="291" x2="190" y2="410" stroke="#1e1e1e" stroke-width="5" />
|
||||
<line x1="115" y1="335" x2="265" y2="335" stroke="#1e1e1e" stroke-width="5" />
|
||||
<line x1="190" y1="410" x2="130" y2="510" stroke="#1e1e1e" stroke-width="5" />
|
||||
<line x1="190" y1="410" x2="245" y2="510" stroke="#1e1e1e" stroke-width="5" />
|
||||
<text x="70" y="82" font-family="Arial, Helvetica, sans-serif" font-size="24" text-anchor="start" fill="#1e1e1e" font-weight="bold"><tspan x="70" dy="0">Alexander</tspan></text>
|
||||
<text x="70" y="112" font-family="Arial, Helvetica, sans-serif" font-size="20" text-anchor="start" fill="#1e1e1e" font-weight="normal"><tspan x="70" dy="0">standing here</tspan></text>
|
||||
<text x="70" y="140" font-family="Arial, Helvetica, sans-serif" font-size="20" text-anchor="start" fill="#1e1e1e" font-weight="normal"><tspan x="70" dy="0">looking down at the Mac</tspan></text>
|
||||
<line x1="255" y1="235" x2="500" y2="255" stroke="#1e1e1e" stroke-width="3" marker-end="url(#arrow)" />
|
||||
<rect x="300" y="205" width="140" height="30" rx="10" fill="white" stroke="#1e1e1e" stroke-width="2" />
|
||||
<text x="370.0" y="225.76" font-family="Arial, Helvetica, sans-serif" font-size="16" text-anchor="middle" fill="#1e1e1e" font-weight="normal"><tspan x="370.0" dy="0">looking / typing</tspan></text>
|
||||
<rect x="460" y="190" width="720" height="740" rx="24" fill="#f3f3f3" stroke="#1e1e1e" stroke-width="4" />
|
||||
<rect x="430" y="930" width="780" height="60" rx="16" fill="#d9d9d9" stroke="#1e1e1e" stroke-width="3" />
|
||||
<text x="820.0" y="965.92" font-family="Arial, Helvetica, sans-serif" font-size="22" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="820.0" dy="0">Mac at the counter</tspan></text>
|
||||
<rect x="520" y="235" width="600" height="120" rx="18" fill="#ffd8a8" stroke="#1e1e1e" stroke-width="3" />
|
||||
<text x="820.0" y="287.15999999999997" font-family="Arial, Helvetica, sans-serif" font-size="28" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="820.0" dy="0">Telegram desktop window</tspan></text><text x="820.0" y="323.0" font-family="Arial, Helvetica, sans-serif" font-size="28" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="820.0" dy="0">This DM with Timmy</tspan></text>
|
||||
<rect x="520" y="390" width="600" height="125" rx="18" fill="#d0bfff" stroke="#1e1e1e" stroke-width="3" />
|
||||
<text x="820.0" y="444.65999999999997" font-family="Arial, Helvetica, sans-serif" font-size="28" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="820.0" dy="0">Hermes harness</tspan></text><text x="820.0" y="480.5" font-family="Arial, Helvetica, sans-serif" font-size="28" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="820.0" dy="0">Telegram connector, tools, session loop</tspan></text>
|
||||
<rect x="520" y="550" width="270" height="140" rx="18" fill="#fff3bf" stroke="#1e1e1e" stroke-width="3" />
|
||||
<text x="655.0" y="585.68" font-family="Arial, Helvetica, sans-serif" font-size="22" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="655.0" dy="0">Timmy layer</tspan></text><text x="655.0" y="613.8399999999999" font-family="Arial, Helvetica, sans-serif" font-size="22" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="655.0" dy="0">SOUL.md</tspan></text><text x="655.0" y="642.0" font-family="Arial, Helvetica, sans-serif" font-size="22" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="655.0" dy="0">memory</tspan></text><text x="655.0" y="670.16" font-family="Arial, Helvetica, sans-serif" font-size="22" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="655.0" dy="0">presence</tspan></text>
|
||||
<rect x="845" y="550" width="275" height="140" rx="18" fill="#a5d8ff" stroke="#1e1e1e" stroke-width="3" />
|
||||
<text x="982.5" y="599.76" font-family="Arial, Helvetica, sans-serif" font-size="22" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="982.5" dy="0">Current brain</tspan></text><text x="982.5" y="627.92" font-family="Arial, Helvetica, sans-serif" font-size="22" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="982.5" dy="0">hermes4:14b</tspan></text><text x="982.5" y="656.08" font-family="Arial, Helvetica, sans-serif" font-size="22" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="982.5" dy="0">provider = custom</tspan></text>
|
||||
<rect x="520" y="725" width="600" height="125" rx="18" fill="#c3fae8" stroke="#1e1e1e" stroke-width="3" />
|
||||
<text x="820.0" y="763.58" font-family="Arial, Helvetica, sans-serif" font-size="26" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="820.0" dy="0">Local workspace and files</tspan></text><text x="820.0" y="796.86" font-family="Arial, Helvetica, sans-serif" font-size="26" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="820.0" dy="0">.timmy + .hermes</tspan></text><text x="820.0" y="830.1400000000001" font-family="Arial, Helvetica, sans-serif" font-size="26" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="820.0" dy="0">local shell / code / memory / logs</tspan></text>
|
||||
<line x1="820" y1="355" x2="820" y2="390" stroke="#1e1e1e" stroke-width="4" marker-end="url(#arrow)" />
|
||||
<line x1="820" y1="515" x2="820" y2="550" stroke="#1e1e1e" stroke-width="4" marker-end="url(#arrow)" />
|
||||
<line x1="790" y1="620" x2="845" y2="620" stroke="#1e1e1e" stroke-width="4" marker-end="url(#arrow)" />
|
||||
<line x1="820" y1="690" x2="820" y2="725" stroke="#1e1e1e" stroke-width="4" marker-end="url(#arrow)" />
|
||||
<rect x="790" y="600" width="96" height="30" rx="10" fill="white" stroke="#1e1e1e" stroke-width="2" />
|
||||
<text x="838.0" y="620.76" font-family="Arial, Helvetica, sans-serif" font-size="16" text-anchor="middle" fill="#1e1e1e" font-weight="normal"><tspan x="838.0" dy="0">invokes</tspan></text>
|
||||
<rect x="650" y="1010" width="190" height="110" rx="24" fill="#ffd8a8" stroke="#1e1e1e" stroke-width="3" />
|
||||
<rect x="722" y="1028" width="46" height="8" rx="4" fill="#1e1e1e" />
|
||||
<circle cx="745" cy="1096" r="8" fill="#1e1e1e" />
|
||||
<text x="745.0" y="1050.08" font-family="Arial, Helvetica, sans-serif" font-size="28" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="745.0" dy="0">iPhone</tspan></text>
|
||||
<text x="745.0" y="1077.4" font-family="Arial, Helvetica, sans-serif" font-size="20" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="745.0" dy="0">USB tether /</tspan></text><text x="745.0" y="1103.0" font-family="Arial, Helvetica, sans-serif" font-size="20" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="745.0" dy="0">personal hotspot</tspan></text>
|
||||
<line x1="745" y1="990" x2="745" y2="1010" stroke="#1e1e1e" stroke-width="5" marker-end="url(#arrow)" />
|
||||
<rect x="810" y="985" width="140" height="30" rx="10" fill="white" stroke="#1e1e1e" stroke-width="2" />
|
||||
<text x="880.0" y="1005.76" font-family="Arial, Helvetica, sans-serif" font-size="16" text-anchor="middle" fill="#1e1e1e" font-weight="normal"><tspan x="880.0" dy="0">plugged into Mac</tspan></text>
|
||||
<g fill="#b2f2bb" stroke="#1e1e1e" stroke-width="3">
|
||||
<ellipse cx="1400" cy="315" rx="75" ry="50" />
|
||||
<ellipse cx="1475" cy="275" rx="95" ry="68" />
|
||||
<ellipse cx="1560" cy="315" rx="85" ry="56" />
|
||||
<ellipse cx="1620" cy="335" rx="55" ry="38" />
|
||||
<rect x="1380" y="315" width="220" height="70" rx="30" />
|
||||
</g>
|
||||
<text x="1480.0" y="325.08" font-family="Arial, Helvetica, sans-serif" font-size="28" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="1480.0" dy="0">Cellular internet</tspan></text>
|
||||
<g fill="#a5d8ff" stroke="#1e1e1e" stroke-width="3">
|
||||
<ellipse cx="1385" cy="560" rx="80" ry="55" />
|
||||
<ellipse cx="1470" cy="520" rx="105" ry="75" />
|
||||
<ellipse cx="1565" cy="560" rx="90" ry="58" />
|
||||
<ellipse cx="1628" cy="585" rx="58" ry="40" />
|
||||
<rect x="1360" y="560" width="245" height="80" rx="34" />
|
||||
</g>
|
||||
<text x="1475.0" y="557.16" font-family="Arial, Helvetica, sans-serif" font-size="28" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="1475.0" dy="0">Telegram cloud</tspan></text><text x="1475.0" y="593.0" font-family="Arial, Helvetica, sans-serif" font-size="28" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="1475.0" dy="0">message delivery + bot traffic</tspan></text>
|
||||
<rect x="1275" y="760" width="380" height="170" rx="18" fill="#f7f7f7" stroke="#1e1e1e" stroke-width="3" />
|
||||
<text x="1465.0" y="824.76" font-family="Arial, Helvetica, sans-serif" font-size="22" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="1465.0" dy="0">Connected services from this session</tspan></text><text x="1465.0" y="852.92" font-family="Arial, Helvetica, sans-serif" font-size="22" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="1465.0" dy="0">telegram | api_server | discord</tspan></text><text x="1465.0" y="881.08" font-family="Arial, Helvetica, sans-serif" font-size="22" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="1465.0" dy="0">Telegram path is the one in use right now</tspan></text>
|
||||
<line x1="840" y1="1065" x2="1290" y2="300" stroke="#1e1e1e" stroke-width="4" marker-end="url(#arrow)" />
|
||||
<rect x="955" y="627" width="250" height="32" rx="10" fill="white" stroke="#1e1e1e" stroke-width="2" />
|
||||
<text x="1080.0" y="648.76" font-family="Arial, Helvetica, sans-serif" font-size="16" text-anchor="middle" fill="#1e1e1e" font-weight="normal"><tspan x="1080.0" dy="0">Mac reaches internet through the iPhone</tspan></text>
|
||||
<line x1="1510" y1="390" x2="1510" y2="470" stroke="#1e1e1e" stroke-width="4" marker-end="url(#arrow)" />
|
||||
<rect x="1548" y="417" width="100" height="28" rx="10" fill="white" stroke="#1e1e1e" stroke-width="2" />
|
||||
<text x="1598.0" y="436.76" font-family="Arial, Helvetica, sans-serif" font-size="16" text-anchor="middle" fill="#1e1e1e" font-weight="normal"><tspan x="1598.0" dy="0">to Telegram</tspan></text>
|
||||
<line x1="1270" y1="575" x2="1120" y2="450" stroke="#1e1e1e" stroke-width="4" marker-end="url(#arrow)" />
|
||||
<rect x="1120" y="503" width="140" height="30" rx="10" fill="white" stroke="#1e1e1e" stroke-width="2" />
|
||||
<text x="1190.0" y="523.76" font-family="Arial, Helvetica, sans-serif" font-size="16" text-anchor="middle" fill="#1e1e1e" font-weight="normal"><tspan x="1190.0" dy="0">bot/session traffic</tspan></text>
|
||||
<line x1="1120" y1="295" x2="1270" y2="545" stroke="#1e1e1e" stroke-width="4" marker-end="url(#arrow)" />
|
||||
<rect x="1130" y="376" width="120" height="30" rx="10" fill="white" stroke="#1e1e1e" stroke-width="2" />
|
||||
<text x="1190.0" y="396.76" font-family="Arial, Helvetica, sans-serif" font-size="16" text-anchor="middle" fill="#1e1e1e" font-weight="normal"><tspan x="1190.0" dy="0">user messages</tspan></text>
|
||||
<line x1="520" y1="295" x2="315" y2="300" stroke="#1e1e1e" stroke-width="4" marker-end="url(#arrow)" />
|
||||
<rect x="355" y="260" width="126" height="30" rx="10" fill="white" stroke="#1e1e1e" stroke-width="2" />
|
||||
<text x="418.0" y="280.76" font-family="Arial, Helvetica, sans-serif" font-size="16" text-anchor="middle" fill="#1e1e1e" font-weight="normal"><tspan x="418.0" dy="0">reply appears here</tspan></text>
|
||||
<rect x="60" y="1035" width="470" height="85" rx="18" fill="#ffc9c9" stroke="#1e1e1e" stroke-width="3" />
|
||||
<text x="295.0" y="1061.44" font-family="Arial, Helvetica, sans-serif" font-size="18" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="295.0" dy="0">Honesty note</tspan></text><text x="295.0" y="1084.48" font-family="Arial, Helvetica, sans-serif" font-size="18" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="295.0" dy="0">The exact daemon behind provider = custom was not inspected here.</tspan></text><text x="295.0" y="1107.52" font-family="Arial, Helvetica, sans-serif" font-size="18" text-anchor="middle" fill="#1e1e1e" font-weight="bold"><tspan x="295.0" dy="0">The diagram names only what is certain from this session.</tspan></text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 14 KiB |
23
dropbox/wizards
Normal file
23
dropbox/wizards
Normal file
@@ -0,0 +1,23 @@
|
||||
Done! Congratulations on your new bot. You will find it at t.me/EzraTimeBot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.
|
||||
|
||||
Use this token to access the HTTP API:
|
||||
8303963605:AAGb6fP2sw0GtPWaLZp9tt4iI-ZglTFodZg
|
||||
Keep your token secure and store it safely, it can be used by anyone to control your bot.
|
||||
|
||||
For a description of the Bot API, see this page: https://core.telegram.org/bots/api
|
||||
|
||||
|
||||
Done! Congratulations on your new bot. You will find it at t.me/BezazelTimeBot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.
|
||||
|
||||
Use this token to access the HTTP API:
|
||||
8696348349:AAHA8KlcttMCye3PN_BPX8pwpPIlMf0vRdw
|
||||
Keep your token secure and store it safely, it can be used by anyone to control your bot.
|
||||
|
||||
For a description of the Bot API, see this page: https://core.telegram.org/bots/api
|
||||
|
||||
|
||||
Done! Congratulations on your new bot. You will find it at t.me/AllegroTimeBot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.
|
||||
|
||||
Use this token to access the HTTP API:
|
||||
8528070173:AAFrGRb9YxD4XOFEYQhjq_8Cv4zjdqhN5eI
|
||||
Keep your token secure and store it safely, it can be used by anyone to control your bot.
|
||||
56
evennia/timmy_world/.gitignore
vendored
Normal file
56
evennia/timmy_world/.gitignore
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
*.py[cod]
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# Packages
|
||||
*.egg
|
||||
*.egg-info
|
||||
dist
|
||||
build
|
||||
eggs
|
||||
parts
|
||||
var
|
||||
sdist
|
||||
develop-eggs
|
||||
.installed.cfg
|
||||
lib
|
||||
lib64
|
||||
__pycache__
|
||||
|
||||
# Other
|
||||
*.swp
|
||||
*.log
|
||||
*.log.*
|
||||
*.pid
|
||||
*.restart
|
||||
*.db3
|
||||
|
||||
# Installation-specific.
|
||||
# For group efforts, comment out some or all of these.
|
||||
server/conf/secret_settings.py
|
||||
server/logs/*.log.*
|
||||
server/.static/*
|
||||
server/.media/*
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
.coverage
|
||||
.tox
|
||||
nosetests.xml
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
|
||||
# Mr Developer
|
||||
.mr.developer.cfg
|
||||
.project
|
||||
.pydevproject
|
||||
|
||||
# PyCharm config
|
||||
.idea
|
||||
|
||||
# VSCode config
|
||||
.vscode
|
||||
40
evennia/timmy_world/README.md
Normal file
40
evennia/timmy_world/README.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# Welcome to Evennia!
|
||||
|
||||
This is your game directory, set up to let you start with
|
||||
your new game right away. An overview of this directory is found here:
|
||||
https://github.com/evennia/evennia/wiki/Directory-Overview#the-game-directory
|
||||
|
||||
You can delete this readme file when you've read it and you can
|
||||
re-arrange things in this game-directory to suit your own sense of
|
||||
organisation (the only exception is the directory structure of the
|
||||
`server/` directory, which Evennia expects). If you change the structure
|
||||
you must however also edit/add to your settings file to tell Evennia
|
||||
where to look for things.
|
||||
|
||||
Your game's main configuration file is found in
|
||||
`server/conf/settings.py` (but you don't need to change it to get
|
||||
started). If you just created this directory (which means you'll already
|
||||
have a `virtualenv` running if you followed the default instructions),
|
||||
`cd` to this directory then initialize a new database using
|
||||
|
||||
evennia migrate
|
||||
|
||||
To start the server, stand in this directory and run
|
||||
|
||||
evennia start
|
||||
|
||||
This will start the server, logging output to the console. Make
|
||||
sure to create a superuser when asked. By default you can now connect
|
||||
to your new game using a MUD client on `localhost`, port `4000`. You can
|
||||
also log into the web client by pointing a browser to
|
||||
`http://localhost:4001`.
|
||||
|
||||
# Getting started
|
||||
|
||||
From here on you might want to look at one of the beginner tutorials:
|
||||
http://github.com/evennia/evennia/wiki/Tutorials.
|
||||
|
||||
Evennia's documentation is here:
|
||||
https://github.com/evennia/evennia/wiki.
|
||||
|
||||
Enjoy!
|
||||
14
evennia/timmy_world/commands/README.md
Normal file
14
evennia/timmy_world/commands/README.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# commands/
|
||||
|
||||
This folder holds modules for implementing one's own commands and
|
||||
command sets. All the modules' classes are essentially empty and just
|
||||
imports the default implementations from Evennia; so adding anything
|
||||
to them will start overloading the defaults.
|
||||
|
||||
You can change the organisation of this directory as you see fit, just
|
||||
remember that if you change any of the default command set classes'
|
||||
locations, you need to add the appropriate paths to
|
||||
`server/conf/settings.py` so that Evennia knows where to find them.
|
||||
Also remember that if you create new sub directories you must put
|
||||
(optionally empty) `__init__.py` files in there so that Python can
|
||||
find your modules.
|
||||
0
evennia/timmy_world/commands/__init__.py
Normal file
0
evennia/timmy_world/commands/__init__.py
Normal file
187
evennia/timmy_world/commands/command.py
Normal file
187
evennia/timmy_world/commands/command.py
Normal file
@@ -0,0 +1,187 @@
|
||||
"""
|
||||
Commands
|
||||
|
||||
Commands describe the input the account can do to the game.
|
||||
|
||||
"""
|
||||
|
||||
from evennia.commands.command import Command as BaseCommand
|
||||
|
||||
# from evennia import default_cmds
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
"""
|
||||
Base command (you may see this if a child command had no help text defined)
|
||||
|
||||
Note that the class's `__doc__` string is used by Evennia to create the
|
||||
automatic help entry for the command, so make sure to document consistently
|
||||
here. Without setting one, the parent's docstring will show (like now).
|
||||
|
||||
"""
|
||||
|
||||
# Each Command class implements the following methods, called in this order
|
||||
# (only func() is actually required):
|
||||
#
|
||||
# - at_pre_cmd(): If this returns anything truthy, execution is aborted.
|
||||
# - parse(): Should perform any extra parsing needed on self.args
|
||||
# and store the result on self.
|
||||
# - func(): Performs the actual work.
|
||||
# - at_post_cmd(): Extra actions, often things done after
|
||||
# every command, like prompts.
|
||||
#
|
||||
pass
|
||||
|
||||
|
||||
# -------------------------------------------------------------
|
||||
#
|
||||
# The default commands inherit from
|
||||
#
|
||||
# evennia.commands.default.muxcommand.MuxCommand.
|
||||
#
|
||||
# If you want to make sweeping changes to default commands you can
|
||||
# uncomment this copy of the MuxCommand parent and add
|
||||
#
|
||||
# COMMAND_DEFAULT_CLASS = "commands.command.MuxCommand"
|
||||
#
|
||||
# to your settings file. Be warned that the default commands expect
|
||||
# the functionality implemented in the parse() method, so be
|
||||
# careful with what you change.
|
||||
#
|
||||
# -------------------------------------------------------------
|
||||
|
||||
# from evennia.utils import utils
|
||||
#
|
||||
#
|
||||
# class MuxCommand(Command):
|
||||
# """
|
||||
# This sets up the basis for a MUX command. The idea
|
||||
# is that most other Mux-related commands should just
|
||||
# inherit from this and don't have to implement much
|
||||
# parsing of their own unless they do something particularly
|
||||
# advanced.
|
||||
#
|
||||
# Note that the class's __doc__ string (this text) is
|
||||
# used by Evennia to create the automatic help entry for
|
||||
# the command, so make sure to document consistently here.
|
||||
# """
|
||||
# def has_perm(self, srcobj):
|
||||
# """
|
||||
# This is called by the cmdhandler to determine
|
||||
# if srcobj is allowed to execute this command.
|
||||
# We just show it here for completeness - we
|
||||
# are satisfied using the default check in Command.
|
||||
# """
|
||||
# return super().has_perm(srcobj)
|
||||
#
|
||||
# def at_pre_cmd(self):
|
||||
# """
|
||||
# This hook is called before self.parse() on all commands
|
||||
# """
|
||||
# pass
|
||||
#
|
||||
# def at_post_cmd(self):
|
||||
# """
|
||||
# This hook is called after the command has finished executing
|
||||
# (after self.func()).
|
||||
# """
|
||||
# pass
|
||||
#
|
||||
# def parse(self):
|
||||
# """
|
||||
# This method is called by the cmdhandler once the command name
|
||||
# has been identified. It creates a new set of member variables
|
||||
# that can be later accessed from self.func() (see below)
|
||||
#
|
||||
# The following variables are available for our use when entering this
|
||||
# method (from the command definition, and assigned on the fly by the
|
||||
# cmdhandler):
|
||||
# self.key - the name of this command ('look')
|
||||
# self.aliases - the aliases of this cmd ('l')
|
||||
# self.permissions - permission string for this command
|
||||
# self.help_category - overall category of command
|
||||
#
|
||||
# self.caller - the object calling this command
|
||||
# self.cmdstring - the actual command name used to call this
|
||||
# (this allows you to know which alias was used,
|
||||
# for example)
|
||||
# self.args - the raw input; everything following self.cmdstring.
|
||||
# self.cmdset - the cmdset from which this command was picked. Not
|
||||
# often used (useful for commands like 'help' or to
|
||||
# list all available commands etc)
|
||||
# self.obj - the object on which this command was defined. It is often
|
||||
# the same as self.caller.
|
||||
#
|
||||
# A MUX command has the following possible syntax:
|
||||
#
|
||||
# name[ with several words][/switch[/switch..]] arg1[,arg2,...] [[=|,] arg[,..]]
|
||||
#
|
||||
# The 'name[ with several words]' part is already dealt with by the
|
||||
# cmdhandler at this point, and stored in self.cmdname (we don't use
|
||||
# it here). The rest of the command is stored in self.args, which can
|
||||
# start with the switch indicator /.
|
||||
#
|
||||
# This parser breaks self.args into its constituents and stores them in the
|
||||
# following variables:
|
||||
# self.switches = [list of /switches (without the /)]
|
||||
# self.raw = This is the raw argument input, including switches
|
||||
# self.args = This is re-defined to be everything *except* the switches
|
||||
# self.lhs = Everything to the left of = (lhs:'left-hand side'). If
|
||||
# no = is found, this is identical to self.args.
|
||||
# self.rhs: Everything to the right of = (rhs:'right-hand side').
|
||||
# If no '=' is found, this is None.
|
||||
# self.lhslist - [self.lhs split into a list by comma]
|
||||
# self.rhslist - [list of self.rhs split into a list by comma]
|
||||
# self.arglist = [list of space-separated args (stripped, including '=' if it exists)]
|
||||
#
|
||||
# All args and list members are stripped of excess whitespace around the
|
||||
# strings, but case is preserved.
|
||||
# """
|
||||
# raw = self.args
|
||||
# args = raw.strip()
|
||||
#
|
||||
# # split out switches
|
||||
# switches = []
|
||||
# if args and len(args) > 1 and args[0] == "/":
|
||||
# # we have a switch, or a set of switches. These end with a space.
|
||||
# switches = args[1:].split(None, 1)
|
||||
# if len(switches) > 1:
|
||||
# switches, args = switches
|
||||
# switches = switches.split('/')
|
||||
# else:
|
||||
# args = ""
|
||||
# switches = switches[0].split('/')
|
||||
# arglist = [arg.strip() for arg in args.split()]
|
||||
#
|
||||
# # check for arg1, arg2, ... = argA, argB, ... constructs
|
||||
# lhs, rhs = args, None
|
||||
# lhslist, rhslist = [arg.strip() for arg in args.split(',')], []
|
||||
# if args and '=' in args:
|
||||
# lhs, rhs = [arg.strip() for arg in args.split('=', 1)]
|
||||
# lhslist = [arg.strip() for arg in lhs.split(',')]
|
||||
# rhslist = [arg.strip() for arg in rhs.split(',')]
|
||||
#
|
||||
# # save to object properties:
|
||||
# self.raw = raw
|
||||
# self.switches = switches
|
||||
# self.args = args.strip()
|
||||
# self.arglist = arglist
|
||||
# self.lhs = lhs
|
||||
# self.lhslist = lhslist
|
||||
# self.rhs = rhs
|
||||
# self.rhslist = rhslist
|
||||
#
|
||||
# # if the class has the account_caller property set on itself, we make
|
||||
# # sure that self.caller is always the account if possible. We also create
|
||||
# # a special property "character" for the puppeted object, if any. This
|
||||
# # is convenient for commands defined on the Account only.
|
||||
# if hasattr(self, "account_caller") and self.account_caller:
|
||||
# if utils.inherits_from(self.caller, "evennia.objects.objects.DefaultObject"):
|
||||
# # caller is an Object/Character
|
||||
# self.character = self.caller
|
||||
# self.caller = self.caller.account
|
||||
# elif utils.inherits_from(self.caller, "evennia.accounts.accounts.DefaultAccount"):
|
||||
# # caller was already an Account
|
||||
# self.character = self.caller.get_puppet(self.session)
|
||||
# else:
|
||||
# self.character = None
|
||||
96
evennia/timmy_world/commands/default_cmdsets.py
Normal file
96
evennia/timmy_world/commands/default_cmdsets.py
Normal file
@@ -0,0 +1,96 @@
|
||||
"""
|
||||
Command sets
|
||||
|
||||
All commands in the game must be grouped in a cmdset. A given command
|
||||
can be part of any number of cmdsets and cmdsets can be added/removed
|
||||
and merged onto entities at runtime.
|
||||
|
||||
To create new commands to populate the cmdset, see
|
||||
`commands/command.py`.
|
||||
|
||||
This module wraps the default command sets of Evennia; overloads them
|
||||
to add/remove commands from the default lineup. You can create your
|
||||
own cmdsets by inheriting from them or directly from `evennia.CmdSet`.
|
||||
|
||||
"""
|
||||
|
||||
from evennia import default_cmds
|
||||
|
||||
|
||||
class CharacterCmdSet(default_cmds.CharacterCmdSet):
|
||||
"""
|
||||
The `CharacterCmdSet` contains general in-game commands like `look`,
|
||||
`get`, etc available on in-game Character objects. It is merged with
|
||||
the `AccountCmdSet` when an Account puppets a Character.
|
||||
"""
|
||||
|
||||
key = "DefaultCharacter"
|
||||
|
||||
def at_cmdset_creation(self):
|
||||
"""
|
||||
Populates the cmdset
|
||||
"""
|
||||
super().at_cmdset_creation()
|
||||
#
|
||||
# any commands you add below will overload the default ones.
|
||||
#
|
||||
|
||||
|
||||
class AccountCmdSet(default_cmds.AccountCmdSet):
|
||||
"""
|
||||
This is the cmdset available to the Account at all times. It is
|
||||
combined with the `CharacterCmdSet` when the Account puppets a
|
||||
Character. It holds game-account-specific commands, channel
|
||||
commands, etc.
|
||||
"""
|
||||
|
||||
key = "DefaultAccount"
|
||||
|
||||
def at_cmdset_creation(self):
|
||||
"""
|
||||
Populates the cmdset
|
||||
"""
|
||||
super().at_cmdset_creation()
|
||||
#
|
||||
# any commands you add below will overload the default ones.
|
||||
#
|
||||
|
||||
|
||||
class UnloggedinCmdSet(default_cmds.UnloggedinCmdSet):
|
||||
"""
|
||||
Command set available to the Session before being logged in. This
|
||||
holds commands like creating a new account, logging in, etc.
|
||||
"""
|
||||
|
||||
key = "DefaultUnloggedin"
|
||||
|
||||
def at_cmdset_creation(self):
|
||||
"""
|
||||
Populates the cmdset
|
||||
"""
|
||||
super().at_cmdset_creation()
|
||||
#
|
||||
# any commands you add below will overload the default ones.
|
||||
#
|
||||
|
||||
|
||||
class SessionCmdSet(default_cmds.SessionCmdSet):
|
||||
"""
|
||||
This cmdset is made available on Session level once logged in. It
|
||||
is empty by default.
|
||||
"""
|
||||
|
||||
key = "DefaultSession"
|
||||
|
||||
def at_cmdset_creation(self):
|
||||
"""
|
||||
This is the only method defined in a cmdset, called during
|
||||
its creation. It should populate the set with command instances.
|
||||
|
||||
As and example we just add the empty base `Command` object.
|
||||
It prints some info.
|
||||
"""
|
||||
super().at_cmdset_creation()
|
||||
#
|
||||
# any commands you add below will overload the default ones.
|
||||
#
|
||||
38
evennia/timmy_world/server/README.md
Normal file
38
evennia/timmy_world/server/README.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# server/
|
||||
|
||||
This directory holds files used by and configuring the Evennia server
|
||||
itself.
|
||||
|
||||
Out of all the subdirectories in the game directory, Evennia does
|
||||
expect this directory to exist, so you should normally not delete,
|
||||
rename or change its folder structure.
|
||||
|
||||
When running you will find four new files appear in this directory:
|
||||
|
||||
- `server.pid` and `portal.pid`: These hold the process IDs of the
|
||||
Portal and Server, so that they can be managed by the launcher. If
|
||||
Evennia is shut down uncleanly (e.g. by a crash or via a kill
|
||||
signal), these files might erroneously remain behind. If so Evennia
|
||||
will tell you they are "stale" and they can be deleted manually.
|
||||
- `server.restart` and `portal.restart`: These hold flags to tell the
|
||||
server processes if it should die or start again. You never need to
|
||||
modify those files.
|
||||
- `evennia.db3`: This will only appear if you are using the default
|
||||
SQLite3 database; it a binary file that holds the entire game
|
||||
database; deleting this file will effectively reset the game for
|
||||
you and you can start fresh with `evennia migrate` (useful during
|
||||
development).
|
||||
|
||||
## server/conf/
|
||||
|
||||
This subdirectory holds the configuration modules for the server. With
|
||||
them you can change how Evennia operates and also plug in your own
|
||||
functionality to replace the default. You usually need to restart the
|
||||
server to apply changes done here. The most important file is the file
|
||||
`settings.py` which is the main configuration file of Evennia.
|
||||
|
||||
## server/logs/
|
||||
|
||||
This subdirectory holds various log files created by the running
|
||||
Evennia server. It is also the default location for storing any custom
|
||||
log files you might want to output using Evennia's logging mechanisms.
|
||||
1
evennia/timmy_world/server/__init__.py
Normal file
1
evennia/timmy_world/server/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
1
evennia/timmy_world/server/conf/__init__.py
Normal file
1
evennia/timmy_world/server/conf/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
19
evennia/timmy_world/server/conf/at_initial_setup.py
Normal file
19
evennia/timmy_world/server/conf/at_initial_setup.py
Normal file
@@ -0,0 +1,19 @@
|
||||
"""
|
||||
At_initial_setup module template
|
||||
|
||||
Custom at_initial_setup method. This allows you to hook special
|
||||
modifications to the initial server startup process. Note that this
|
||||
will only be run once - when the server starts up for the very first
|
||||
time! It is called last in the startup process and can thus be used to
|
||||
overload things that happened before it.
|
||||
|
||||
The module must contain a global function at_initial_setup(). This
|
||||
will be called without arguments. Note that tracebacks in this module
|
||||
will be QUIETLY ignored, so make sure to check it well to make sure it
|
||||
does what you expect it to.
|
||||
|
||||
"""
|
||||
|
||||
|
||||
def at_initial_setup():
|
||||
pass
|
||||
54
evennia/timmy_world/server/conf/at_search.py
Normal file
54
evennia/timmy_world/server/conf/at_search.py
Normal file
@@ -0,0 +1,54 @@
|
||||
"""
|
||||
Search and multimatch handling
|
||||
|
||||
This module allows for overloading two functions used by Evennia's
|
||||
search functionality:
|
||||
|
||||
at_search_result:
|
||||
This is called whenever a result is returned from an object
|
||||
search (a common operation in commands). It should (together
|
||||
with at_multimatch_input below) define some way to present and
|
||||
differentiate between multiple matches (by default these are
|
||||
presented as 1-ball, 2-ball etc)
|
||||
at_multimatch_input:
|
||||
This is called with a search term and should be able to
|
||||
identify if the user wants to separate a multimatch-result
|
||||
(such as that from a previous search). By default, this
|
||||
function understands input on the form 1-ball, 2-ball etc as
|
||||
indicating that the 1st or 2nd match for "ball" should be
|
||||
used.
|
||||
|
||||
This module is not called by default, to use it, add the following
|
||||
line to your settings file:
|
||||
|
||||
SEARCH_AT_RESULT = "server.conf.at_search.at_search_result"
|
||||
|
||||
"""
|
||||
|
||||
|
||||
def at_search_result(matches, caller, query="", quiet=False, **kwargs):
|
||||
"""
|
||||
This is a generic hook for handling all processing of a search
|
||||
result, including error reporting.
|
||||
|
||||
Args:
|
||||
matches (list): This is a list of 0, 1 or more typeclass instances,
|
||||
the matched result of the search. If 0, a nomatch error should
|
||||
be echoed, and if >1, multimatch errors should be given. Only
|
||||
if a single match should the result pass through.
|
||||
caller (Object): The object performing the search and/or which should
|
||||
receive error messages.
|
||||
query (str, optional): The search query used to produce `matches`.
|
||||
quiet (bool, optional): If `True`, no messages will be echoed to caller
|
||||
on errors.
|
||||
|
||||
Keyword Args:
|
||||
nofound_string (str): Replacement string to echo on a notfound error.
|
||||
multimatch_string (str): Replacement string to echo on a multimatch error.
|
||||
|
||||
Returns:
|
||||
processed_result (Object or None): This is always a single result
|
||||
or `None`. If `None`, any error reporting/handling should
|
||||
already have happened.
|
||||
|
||||
"""
|
||||
71
evennia/timmy_world/server/conf/at_server_startstop.py
Normal file
71
evennia/timmy_world/server/conf/at_server_startstop.py
Normal file
@@ -0,0 +1,71 @@
|
||||
"""
|
||||
Server startstop hooks
|
||||
|
||||
This module contains functions called by Evennia at various
|
||||
points during its startup, reload and shutdown sequence. It
|
||||
allows for customizing the server operation as desired.
|
||||
|
||||
This module must contain at least these global functions:
|
||||
|
||||
at_server_init()
|
||||
at_server_start()
|
||||
at_server_stop()
|
||||
at_server_reload_start()
|
||||
at_server_reload_stop()
|
||||
at_server_cold_start()
|
||||
at_server_cold_stop()
|
||||
|
||||
"""
|
||||
|
||||
|
||||
def at_server_init():
|
||||
"""
|
||||
This is called first as the server is starting up, regardless of how.
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
def at_server_start():
|
||||
"""
|
||||
This is called every time the server starts up, regardless of
|
||||
how it was shut down.
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
def at_server_stop():
|
||||
"""
|
||||
This is called just before the server is shut down, regardless
|
||||
of it is for a reload, reset or shutdown.
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
def at_server_reload_start():
|
||||
"""
|
||||
This is called only when server starts back up after a reload.
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
def at_server_reload_stop():
|
||||
"""
|
||||
This is called only time the server stops before a reload.
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
def at_server_cold_start():
|
||||
"""
|
||||
This is called only when the server starts "cold", i.e. after a
|
||||
shutdown or a reset.
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
def at_server_cold_stop():
|
||||
"""
|
||||
This is called only when the server goes down due to a shutdown or
|
||||
reset.
|
||||
"""
|
||||
pass
|
||||
55
evennia/timmy_world/server/conf/cmdparser.py
Normal file
55
evennia/timmy_world/server/conf/cmdparser.py
Normal file
@@ -0,0 +1,55 @@
|
||||
"""
|
||||
Changing the default command parser
|
||||
|
||||
The cmdparser is responsible for parsing the raw text inserted by the
|
||||
user, identifying which command/commands match and return one or more
|
||||
matching command objects. It is called by Evennia's cmdhandler and
|
||||
must accept input and return results on the same form. The default
|
||||
handler is very generic so you usually don't need to overload this
|
||||
unless you have very exotic parsing needs; advanced parsing is best
|
||||
done at the Command.parse level.
|
||||
|
||||
The default cmdparser understands the following command combinations
|
||||
(where [] marks optional parts.)
|
||||
|
||||
[cmdname[ cmdname2 cmdname3 ...] [the rest]
|
||||
|
||||
A command may consist of any number of space-separated words of any
|
||||
length, and contain any character. It may also be empty.
|
||||
|
||||
The parser makes use of the cmdset to find command candidates. The
|
||||
parser return a list of matches. Each match is a tuple with its first
|
||||
three elements being the parsed cmdname (lower case), the remaining
|
||||
arguments, and the matched cmdobject from the cmdset.
|
||||
|
||||
|
||||
This module is not accessed by default. To tell Evennia to use it
|
||||
instead of the default command parser, add the following line to
|
||||
your settings file:
|
||||
|
||||
COMMAND_PARSER = "server.conf.cmdparser.cmdparser"
|
||||
|
||||
"""
|
||||
|
||||
|
||||
def cmdparser(raw_string, cmdset, caller, match_index=None):
|
||||
"""
|
||||
This function is called by the cmdhandler once it has
|
||||
gathered and merged all valid cmdsets valid for this particular parsing.
|
||||
|
||||
raw_string - the unparsed text entered by the caller.
|
||||
cmdset - the merged, currently valid cmdset
|
||||
caller - the caller triggering this parsing
|
||||
match_index - an optional integer index to pick a given match in a
|
||||
list of same-named command matches.
|
||||
|
||||
Returns:
|
||||
list of tuples: [(cmdname, args, cmdobj, cmdlen, mratio), ...]
|
||||
where cmdname is the matching command name and args is
|
||||
everything not included in the cmdname. Cmdobj is the actual
|
||||
command instance taken from the cmdset, cmdlen is the length
|
||||
of the command name and the mratio is some quality value to
|
||||
(possibly) separate multiple matches.
|
||||
|
||||
"""
|
||||
# Your implementation here
|
||||
40
evennia/timmy_world/server/conf/connection_screens.py
Normal file
40
evennia/timmy_world/server/conf/connection_screens.py
Normal file
@@ -0,0 +1,40 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Connection screen
|
||||
|
||||
This is the text to show the user when they first connect to the game (before
|
||||
they log in).
|
||||
|
||||
To change the login screen in this module, do one of the following:
|
||||
|
||||
- Define a function `connection_screen()`, taking no arguments. This will be
|
||||
called first and must return the full string to act as the connection screen.
|
||||
This can be used to produce more dynamic screens.
|
||||
- Alternatively, define a string variable in the outermost scope of this module
|
||||
with the connection string that should be displayed. If more than one such
|
||||
variable is given, Evennia will pick one of them at random.
|
||||
|
||||
The commands available to the user when the connection screen is shown
|
||||
are defined in evennia.default_cmds.UnloggedinCmdSet. The parsing and display
|
||||
of the screen is done by the unlogged-in "look" command.
|
||||
|
||||
"""
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
from evennia import utils
|
||||
|
||||
CONNECTION_SCREEN = """
|
||||
|b==============================================================|n
|
||||
Welcome to |g{}|n, version {}!
|
||||
|
||||
If you have an existing account, connect to it by typing:
|
||||
|wconnect <username> <password>|n
|
||||
If you need to create an account, type (without the <>'s):
|
||||
|wcreate <username> <password>|n
|
||||
|
||||
If you have spaces in your username, enclose it in quotes.
|
||||
Enter |whelp|n for more info. |wlook|n will re-show this screen.
|
||||
|b==============================================================|n""".format(
|
||||
settings.SERVERNAME, utils.get_evennia_version("short")
|
||||
)
|
||||
39
evennia/timmy_world/server/conf/inlinefuncs.py
Normal file
39
evennia/timmy_world/server/conf/inlinefuncs.py
Normal file
@@ -0,0 +1,39 @@
|
||||
"""
|
||||
Outgoing callables to apply with the FuncParser on outgoing messages.
|
||||
|
||||
The functions in this module will become available as $funcname(args, kwargs)
|
||||
in all outgoing strings if you add
|
||||
|
||||
FUNCPARSER_PARSE_OUTGOING_MESSAGES_ENABLED = True
|
||||
|
||||
to your settings file. The default inlinefuncs are found at the bottom of
|
||||
`evennia.utils.funcparser`.
|
||||
|
||||
In text, usage is straightforward:
|
||||
|
||||
$funcname(arg1, arg2, ..., key=val, key2=val2, ...)
|
||||
|
||||
Example 1 (using the "pad" inlinefunc):
|
||||
say This is $pad("a center-padded text", 50,c,-) of width 50.
|
||||
->
|
||||
John says, "This is -------------- a center-padded text--------------- of width 50."
|
||||
|
||||
Example 2 (using nested "pad" and "time" inlinefuncs):
|
||||
say The time is $pad($time(), 30)right now.
|
||||
->
|
||||
John says, "The time is Oct 25, 11:09 right now."
|
||||
|
||||
To add more inline functions, add them to this module, using
|
||||
the following call signature:
|
||||
|
||||
def funcname(*args, **kwargs)
|
||||
...
|
||||
|
||||
"""
|
||||
|
||||
# def capitalize(*args, **kwargs):
|
||||
# "Silly capitalize example. Used as $capitalize
|
||||
# if not args:
|
||||
# return ''
|
||||
# session = kwargs.get("session")
|
||||
# return args[0].capitalize()
|
||||
52
evennia/timmy_world/server/conf/inputfuncs.py
Normal file
52
evennia/timmy_world/server/conf/inputfuncs.py
Normal file
@@ -0,0 +1,52 @@
|
||||
"""
|
||||
Input functions
|
||||
|
||||
Input functions are always called from the client (they handle server
|
||||
input, hence the name).
|
||||
|
||||
This module is loaded by being included in the
|
||||
`settings.INPUT_FUNC_MODULES` tuple.
|
||||
|
||||
All *global functions* included in this module are considered
|
||||
input-handler functions and can be called by the client to handle
|
||||
input.
|
||||
|
||||
An input function must have the following call signature:
|
||||
|
||||
cmdname(session, *args, **kwargs)
|
||||
|
||||
Where session will be the active session and *args, **kwargs are extra
|
||||
incoming arguments and keyword properties.
|
||||
|
||||
A special command is the "default" command, which is will be called
|
||||
when no other cmdname matches. It also receives the non-found cmdname
|
||||
as argument.
|
||||
|
||||
default(session, cmdname, *args, **kwargs)
|
||||
|
||||
"""
|
||||
|
||||
# def oob_echo(session, *args, **kwargs):
|
||||
# """
|
||||
# Example echo function. Echoes args, kwargs sent to it.
|
||||
#
|
||||
# Args:
|
||||
# session (Session): The Session to receive the echo.
|
||||
# args (list of str): Echo text.
|
||||
# kwargs (dict of str, optional): Keyed echo text
|
||||
#
|
||||
# """
|
||||
# session.msg(oob=("echo", args, kwargs))
|
||||
#
|
||||
#
|
||||
# def default(session, cmdname, *args, **kwargs):
|
||||
# """
|
||||
# Handles commands without a matching inputhandler func.
|
||||
#
|
||||
# Args:
|
||||
# session (Session): The active Session.
|
||||
# cmdname (str): The (unmatched) command name
|
||||
# args, kwargs (any): Arguments to function.
|
||||
#
|
||||
# """
|
||||
# pass
|
||||
30
evennia/timmy_world/server/conf/lockfuncs.py
Normal file
30
evennia/timmy_world/server/conf/lockfuncs.py
Normal file
@@ -0,0 +1,30 @@
|
||||
"""
|
||||
|
||||
Lockfuncs
|
||||
|
||||
Lock functions are functions available when defining lock strings,
|
||||
which in turn limits access to various game systems.
|
||||
|
||||
All functions defined globally in this module are assumed to be
|
||||
available for use in lockstrings to determine access. See the
|
||||
Evennia documentation for more info on locks.
|
||||
|
||||
A lock function is always called with two arguments, accessing_obj and
|
||||
accessed_obj, followed by any number of arguments. All possible
|
||||
arguments should be handled with *args, **kwargs. The lock function
|
||||
should handle all eventual tracebacks by logging the error and
|
||||
returning False.
|
||||
|
||||
Lock functions in this module extend (and will overload same-named)
|
||||
lock functions from evennia.locks.lockfuncs.
|
||||
|
||||
"""
|
||||
|
||||
# def myfalse(accessing_obj, accessed_obj, *args, **kwargs):
|
||||
# """
|
||||
# called in lockstring with myfalse().
|
||||
# A simple logger that always returns false. Prints to stdout
|
||||
# for simplicity, should use utils.logger for real operation.
|
||||
# """
|
||||
# print "%s tried to access %s. Access denied." % (accessing_obj, accessed_obj)
|
||||
# return False
|
||||
105
evennia/timmy_world/server/conf/mssp.py
Normal file
105
evennia/timmy_world/server/conf/mssp.py
Normal file
@@ -0,0 +1,105 @@
|
||||
"""
|
||||
|
||||
MSSP (Mud Server Status Protocol) meta information
|
||||
|
||||
Modify this file to specify what MUD listing sites will report about your game.
|
||||
All fields are static. The number of currently active players and your game's
|
||||
current uptime will be added automatically by Evennia.
|
||||
|
||||
You don't have to fill in everything (and most fields are not shown/used by all
|
||||
crawlers anyway); leave the default if so needed. You need to reload the server
|
||||
before the updated information is made available to crawlers (reloading does
|
||||
not affect uptime).
|
||||
|
||||
After changing the values in this file, you must register your game with the
|
||||
MUD website list you want to track you. The listing crawler will then regularly
|
||||
connect to your server to get the latest info. No further configuration is
|
||||
needed on the Evennia side.
|
||||
|
||||
"""
|
||||
|
||||
MSSPTable = {
|
||||
# Required fields
|
||||
"NAME": "Mygame", # usually the same as SERVERNAME
|
||||
# Generic
|
||||
"CRAWL DELAY": "-1", # limit how often crawler may update the listing. -1 for no limit
|
||||
"HOSTNAME": "", # telnet hostname
|
||||
"PORT": ["4000"], # telnet port - most important port should be *last* in list!
|
||||
"CODEBASE": "Evennia",
|
||||
"CONTACT": "", # email for contacting the mud
|
||||
"CREATED": "", # year MUD was created
|
||||
"ICON": "", # url to icon 32x32 or larger; <32kb.
|
||||
"IP": "", # current or new IP address
|
||||
"LANGUAGE": "", # name of language used, e.g. English
|
||||
"LOCATION": "", # full English name of server country
|
||||
"MINIMUM AGE": "0", # set to 0 if not applicable
|
||||
"WEBSITE": "", # http:// address to your game website
|
||||
# Categorisation
|
||||
"FAMILY": "Evennia",
|
||||
"GENRE": "None", # Adult, Fantasy, Historical, Horror, Modern, None, or Science Fiction
|
||||
# Gameplay: Adventure, Educational, Hack and Slash, None,
|
||||
# Player versus Player, Player versus Environment,
|
||||
# Roleplaying, Simulation, Social or Strategy
|
||||
"GAMEPLAY": "",
|
||||
"STATUS": "Open Beta", # Allowed: Alpha, Closed Beta, Open Beta, Live
|
||||
"GAMESYSTEM": "Custom", # D&D, d20 System, World of Darkness, etc. Use Custom if homebrew
|
||||
# Subgenre: LASG, Medieval Fantasy, World War II, Frankenstein,
|
||||
# Cyberpunk, Dragonlance, etc. Or None if not applicable.
|
||||
"SUBGENRE": "None",
|
||||
# World
|
||||
"AREAS": "0",
|
||||
"HELPFILES": "0",
|
||||
"MOBILES": "0",
|
||||
"OBJECTS": "0",
|
||||
"ROOMS": "0", # use 0 if room-less
|
||||
"CLASSES": "0", # use 0 if class-less
|
||||
"LEVELS": "0", # use 0 if level-less
|
||||
"RACES": "0", # use 0 if race-less
|
||||
"SKILLS": "0", # use 0 if skill-less
|
||||
# Protocols set to 1 or 0; should usually not be changed)
|
||||
"ANSI": "1",
|
||||
"GMCP": "1",
|
||||
"MSDP": "1",
|
||||
"MXP": "1",
|
||||
"SSL": "1",
|
||||
"UTF-8": "1",
|
||||
"MCCP": "1",
|
||||
"XTERM 256 COLORS": "1",
|
||||
"XTERM TRUE COLORS": "0",
|
||||
"ATCP": "0",
|
||||
"MCP": "0",
|
||||
"MSP": "0",
|
||||
"VT100": "0",
|
||||
"PUEBLO": "0",
|
||||
"ZMP": "0",
|
||||
# Commercial set to 1 or 0)
|
||||
"PAY TO PLAY": "0",
|
||||
"PAY FOR PERKS": "0",
|
||||
# Hiring set to 1 or 0)
|
||||
"HIRING BUILDERS": "0",
|
||||
"HIRING CODERS": "0",
|
||||
# Extended variables
|
||||
# World
|
||||
"DBSIZE": "0",
|
||||
"EXITS": "0",
|
||||
"EXTRA DESCRIPTIONS": "0",
|
||||
"MUDPROGS": "0",
|
||||
"MUDTRIGS": "0",
|
||||
"RESETS": "0",
|
||||
# Game (set to 1 or 0, or one of the given alternatives)
|
||||
"ADULT MATERIAL": "0",
|
||||
"MULTICLASSING": "0",
|
||||
"NEWBIE FRIENDLY": "0",
|
||||
"PLAYER CITIES": "0",
|
||||
"PLAYER CLANS": "0",
|
||||
"PLAYER CRAFTING": "0",
|
||||
"PLAYER GUILDS": "0",
|
||||
"EQUIPMENT SYSTEM": "None", # "None", "Level", "Skill", "Both"
|
||||
"MULTIPLAYING": "None", # "None", "Restricted", "Full"
|
||||
"PLAYERKILLING": "None", # "None", "Restricted", "Full"
|
||||
"QUEST SYSTEM": "None", # "None", "Immortal Run", "Automated", "Integrated"
|
||||
"ROLEPLAYING": "None", # "None", "Accepted", "Encouraged", "Enforced"
|
||||
"TRAINING SYSTEM": "None", # "None", "Level", "Skill", "Both"
|
||||
# World originality: "All Stock", "Mostly Stock", "Mostly Original", "All Original"
|
||||
"WORLD ORIGINALITY": "All Original",
|
||||
}
|
||||
24
evennia/timmy_world/server/conf/portal_services_plugins.py
Normal file
24
evennia/timmy_world/server/conf/portal_services_plugins.py
Normal file
@@ -0,0 +1,24 @@
|
||||
"""
|
||||
Start plugin services
|
||||
|
||||
This plugin module can define user-created services for the Portal to
|
||||
start.
|
||||
|
||||
This module must handle all imports and setups required to start
|
||||
twisted services (see examples in evennia.server.portal.portal). It
|
||||
must also contain a function start_plugin_services(application).
|
||||
Evennia will call this function with the main Portal application (so
|
||||
your services can be added to it). The function should not return
|
||||
anything. Plugin services are started last in the Portal startup
|
||||
process.
|
||||
|
||||
"""
|
||||
|
||||
|
||||
def start_plugin_services(portal):
|
||||
"""
|
||||
This hook is called by Evennia, last in the Portal startup process.
|
||||
|
||||
portal - a reference to the main portal application.
|
||||
"""
|
||||
pass
|
||||
24
evennia/timmy_world/server/conf/server_services_plugins.py
Normal file
24
evennia/timmy_world/server/conf/server_services_plugins.py
Normal file
@@ -0,0 +1,24 @@
|
||||
"""
|
||||
|
||||
Server plugin services
|
||||
|
||||
This plugin module can define user-created services for the Server to
|
||||
start.
|
||||
|
||||
This module must handle all imports and setups required to start a
|
||||
twisted service (see examples in evennia.server.server). It must also
|
||||
contain a function start_plugin_services(application). Evennia will
|
||||
call this function with the main Server application (so your services
|
||||
can be added to it). The function should not return anything. Plugin
|
||||
services are started last in the Server startup process.
|
||||
|
||||
"""
|
||||
|
||||
|
||||
def start_plugin_services(server):
|
||||
"""
|
||||
This hook is called by Evennia, last in the Server startup process.
|
||||
|
||||
server - a reference to the main server application.
|
||||
"""
|
||||
pass
|
||||
37
evennia/timmy_world/server/conf/serversession.py
Normal file
37
evennia/timmy_world/server/conf/serversession.py
Normal file
@@ -0,0 +1,37 @@
|
||||
"""
|
||||
ServerSession
|
||||
|
||||
The serversession is the Server-side in-memory representation of a
|
||||
user connecting to the game. Evennia manages one Session per
|
||||
connection to the game. So a user logged into the game with multiple
|
||||
clients (if Evennia is configured to allow that) will have multiple
|
||||
sessions tied to one Account object. All communication between Evennia
|
||||
and the real-world user goes through the Session(s) associated with that user.
|
||||
|
||||
It should be noted that modifying the Session object is not usually
|
||||
necessary except for the most custom and exotic designs - and even
|
||||
then it might be enough to just add custom session-level commands to
|
||||
the SessionCmdSet instead.
|
||||
|
||||
This module is not normally called. To tell Evennia to use the class
|
||||
in this module instead of the default one, add the following to your
|
||||
settings file:
|
||||
|
||||
SERVER_SESSION_CLASS = "server.conf.serversession.ServerSession"
|
||||
|
||||
"""
|
||||
|
||||
from evennia.server.serversession import ServerSession as BaseServerSession
|
||||
|
||||
|
||||
class ServerSession(BaseServerSession):
|
||||
"""
|
||||
This class represents a player's session and is a template for
|
||||
individual protocols to communicate with Evennia.
|
||||
|
||||
Each account gets one or more sessions assigned to them whenever they connect
|
||||
to the game server. All communication between game and account goes
|
||||
through their session(s).
|
||||
"""
|
||||
|
||||
pass
|
||||
44
evennia/timmy_world/server/conf/settings.py
Normal file
44
evennia/timmy_world/server/conf/settings.py
Normal file
@@ -0,0 +1,44 @@
|
||||
r"""
|
||||
Evennia settings file.
|
||||
|
||||
The available options are found in the default settings file found
|
||||
here:
|
||||
|
||||
https://www.evennia.com/docs/latest/Setup/Settings-Default.html
|
||||
|
||||
Remember:
|
||||
|
||||
Don't copy more from the default file than you actually intend to
|
||||
change; this will make sure that you don't overload upstream updates
|
||||
unnecessarily.
|
||||
|
||||
When changing a setting requiring a file system path (like
|
||||
path/to/actual/file.py), use GAME_DIR and EVENNIA_DIR to reference
|
||||
your game folder and the Evennia library folders respectively. Python
|
||||
paths (path.to.module) should be given relative to the game's root
|
||||
folder (typeclasses.foo) whereas paths within the Evennia library
|
||||
needs to be given explicitly (evennia.foo).
|
||||
|
||||
If you want to share your game dir, including its settings, you can
|
||||
put secret game- or server-specific settings in secret_settings.py.
|
||||
|
||||
"""
|
||||
|
||||
# Use the defaults from Evennia unless explicitly overridden
|
||||
from evennia.settings_default import *
|
||||
|
||||
######################################################################
|
||||
# Evennia base server config
|
||||
######################################################################
|
||||
|
||||
# This is the name of your game. Make it catchy!
|
||||
SERVERNAME = "timmy_world"
|
||||
|
||||
|
||||
######################################################################
|
||||
# Settings given in secret_settings.py override those in this file.
|
||||
######################################################################
|
||||
try:
|
||||
from server.conf.secret_settings import *
|
||||
except ImportError:
|
||||
print("secret_settings.py file not found or failed to import.")
|
||||
41
evennia/timmy_world/server/conf/web_plugins.py
Normal file
41
evennia/timmy_world/server/conf/web_plugins.py
Normal file
@@ -0,0 +1,41 @@
|
||||
"""
|
||||
Web plugin hooks.
|
||||
"""
|
||||
|
||||
|
||||
def at_webserver_root_creation(web_root):
|
||||
"""
|
||||
This is called as the web server has finished building its default
|
||||
path tree. At this point, the media/ and static/ URIs have already
|
||||
been added to the web root.
|
||||
|
||||
Args:
|
||||
web_root (twisted.web.resource.Resource): The root
|
||||
resource of the URI tree. Use .putChild() to
|
||||
add new subdomains to the tree.
|
||||
|
||||
Returns:
|
||||
web_root (twisted.web.resource.Resource): The potentially
|
||||
modified root structure.
|
||||
|
||||
Example:
|
||||
from twisted.web import static
|
||||
my_page = static.File("web/mypage/")
|
||||
my_page.indexNames = ["index.html"]
|
||||
web_root.putChild("mypage", my_page)
|
||||
|
||||
"""
|
||||
return web_root
|
||||
|
||||
|
||||
def at_webproxy_root_creation(web_root):
|
||||
"""
|
||||
This function can modify the portal proxy service.
|
||||
Args:
|
||||
web_root (evennia.server.webserver.Website): The Evennia
|
||||
Website application. Use .putChild() to add new
|
||||
subdomains that are Portal-accessible over TCP;
|
||||
primarily for new protocol development, but suitable
|
||||
for other shenanigans.
|
||||
"""
|
||||
return web_root
|
||||
16
evennia/timmy_world/typeclasses/README.md
Normal file
16
evennia/timmy_world/typeclasses/README.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# typeclasses/
|
||||
|
||||
This directory holds the modules for overloading all the typeclasses
|
||||
representing the game entities and many systems of the game. Other
|
||||
server functionality not covered here is usually modified by the
|
||||
modules in `server/conf/`.
|
||||
|
||||
Each module holds empty classes that just imports Evennia's defaults.
|
||||
Any modifications done to these classes will overload the defaults.
|
||||
|
||||
You can change the structure of this directory (even rename the
|
||||
directory itself) as you please, but if you do you must add the
|
||||
appropriate new paths to your settings.py file so Evennia knows where
|
||||
to look. Also remember that for Python to find your modules, it
|
||||
requires you to add an empty `__init__.py` file in any new sub
|
||||
directories you create.
|
||||
0
evennia/timmy_world/typeclasses/__init__.py
Normal file
0
evennia/timmy_world/typeclasses/__init__.py
Normal file
148
evennia/timmy_world/typeclasses/accounts.py
Normal file
148
evennia/timmy_world/typeclasses/accounts.py
Normal file
@@ -0,0 +1,148 @@
|
||||
"""
|
||||
Account
|
||||
|
||||
The Account represents the game "account" and each login has only one
|
||||
Account object. An Account is what chats on default channels but has no
|
||||
other in-game-world existence. Rather the Account puppets Objects (such
|
||||
as Characters) in order to actually participate in the game world.
|
||||
|
||||
|
||||
Guest
|
||||
|
||||
Guest accounts are simple low-level accounts that are created/deleted
|
||||
on the fly and allows users to test the game without the commitment
|
||||
of a full registration. Guest accounts are deactivated by default; to
|
||||
activate them, add the following line to your settings file:
|
||||
|
||||
GUEST_ENABLED = True
|
||||
|
||||
You will also need to modify the connection screen to reflect the
|
||||
possibility to connect with a guest account. The setting file accepts
|
||||
several more options for customizing the Guest account system.
|
||||
|
||||
"""
|
||||
|
||||
from evennia.accounts.accounts import DefaultAccount, DefaultGuest
|
||||
|
||||
|
||||
class Account(DefaultAccount):
|
||||
"""
|
||||
An Account is the actual OOC player entity. It doesn't exist in the game,
|
||||
but puppets characters.
|
||||
|
||||
This is the base Typeclass for all Accounts. Accounts represent
|
||||
the person playing the game and tracks account info, password
|
||||
etc. They are OOC entities without presence in-game. An Account
|
||||
can connect to a Character Object in order to "enter" the
|
||||
game.
|
||||
|
||||
Account Typeclass API:
|
||||
|
||||
* Available properties (only available on initiated typeclass objects)
|
||||
|
||||
- key (string) - name of account
|
||||
- name (string)- wrapper for user.username
|
||||
- aliases (list of strings) - aliases to the object. Will be saved to
|
||||
database as AliasDB entries but returned as strings.
|
||||
- dbref (int, read-only) - unique #id-number. Also "id" can be used.
|
||||
- date_created (string) - time stamp of object creation
|
||||
- permissions (list of strings) - list of permission strings
|
||||
- user (User, read-only) - django User authorization object
|
||||
- obj (Object) - game object controlled by account. 'character' can also
|
||||
be used.
|
||||
- is_superuser (bool, read-only) - if the connected user is a superuser
|
||||
|
||||
* Handlers
|
||||
|
||||
- locks - lock-handler: use locks.add() to add new lock strings
|
||||
- db - attribute-handler: store/retrieve database attributes on this
|
||||
self.db.myattr=val, val=self.db.myattr
|
||||
- ndb - non-persistent attribute handler: same as db but does not
|
||||
create a database entry when storing data
|
||||
- scripts - script-handler. Add new scripts to object with scripts.add()
|
||||
- cmdset - cmdset-handler. Use cmdset.add() to add new cmdsets to object
|
||||
- nicks - nick-handler. New nicks with nicks.add().
|
||||
- sessions - session-handler. Use session.get() to see all sessions connected, if any
|
||||
- options - option-handler. Defaults are taken from settings.OPTIONS_ACCOUNT_DEFAULT
|
||||
- characters - handler for listing the account's playable characters
|
||||
|
||||
* Helper methods (check autodocs for full updated listing)
|
||||
|
||||
- msg(text=None, from_obj=None, session=None, options=None, **kwargs)
|
||||
- execute_cmd(raw_string)
|
||||
- search(searchdata, return_puppet=False, search_object=False, typeclass=None,
|
||||
nofound_string=None, multimatch_string=None, use_nicks=True,
|
||||
quiet=False, **kwargs)
|
||||
- is_typeclass(typeclass, exact=False)
|
||||
- swap_typeclass(new_typeclass, clean_attributes=False, no_default=True)
|
||||
- access(accessing_obj, access_type='read', default=False, no_superuser_bypass=False, **kwargs)
|
||||
- check_permstring(permstring)
|
||||
- get_cmdsets(caller, current, **kwargs)
|
||||
- get_cmdset_providers()
|
||||
- uses_screenreader(session=None)
|
||||
- get_display_name(looker, **kwargs)
|
||||
- get_extra_display_name_info(looker, **kwargs)
|
||||
- disconnect_session_from_account()
|
||||
- puppet_object(session, obj)
|
||||
- unpuppet_object(session)
|
||||
- unpuppet_all()
|
||||
- get_puppet(session)
|
||||
- get_all_puppets()
|
||||
- is_banned(**kwargs)
|
||||
- get_username_validators(validator_config=settings.AUTH_USERNAME_VALIDATORS)
|
||||
- authenticate(username, password, ip="", **kwargs)
|
||||
- normalize_username(username)
|
||||
- validate_username(username)
|
||||
- validate_password(password, account=None)
|
||||
- set_password(password, **kwargs)
|
||||
- get_character_slots()
|
||||
- get_available_character_slots()
|
||||
- create_character(*args, **kwargs)
|
||||
- create(*args, **kwargs)
|
||||
- delete(*args, **kwargs)
|
||||
- channel_msg(message, channel, senders=None, **kwargs)
|
||||
- idle_time()
|
||||
- connection_time()
|
||||
|
||||
* Hook methods
|
||||
|
||||
basetype_setup()
|
||||
at_account_creation()
|
||||
|
||||
> note that the following hooks are also found on Objects and are
|
||||
usually handled on the character level:
|
||||
|
||||
- at_init()
|
||||
- at_first_save()
|
||||
- at_access()
|
||||
- at_cmdset_get(**kwargs)
|
||||
- at_password_change(**kwargs)
|
||||
- at_first_login()
|
||||
- at_pre_login()
|
||||
- at_post_login(session=None)
|
||||
- at_failed_login(session, **kwargs)
|
||||
- at_disconnect(reason=None, **kwargs)
|
||||
- at_post_disconnect(**kwargs)
|
||||
- at_message_receive()
|
||||
- at_message_send()
|
||||
- at_server_reload()
|
||||
- at_server_shutdown()
|
||||
- at_look(target=None, session=None, **kwargs)
|
||||
- at_post_create_character(character, **kwargs)
|
||||
- at_post_add_character(char)
|
||||
- at_post_remove_character(char)
|
||||
- at_pre_channel_msg(message, channel, senders=None, **kwargs)
|
||||
- at_post_chnnel_msg(message, channel, senders=None, **kwargs)
|
||||
|
||||
"""
|
||||
|
||||
pass
|
||||
|
||||
|
||||
class Guest(DefaultGuest):
|
||||
"""
|
||||
This class is used for guest logins. Unlike Accounts, Guests and their
|
||||
characters are deleted after disconnection.
|
||||
"""
|
||||
|
||||
pass
|
||||
118
evennia/timmy_world/typeclasses/channels.py
Normal file
118
evennia/timmy_world/typeclasses/channels.py
Normal file
@@ -0,0 +1,118 @@
|
||||
"""
|
||||
Channel
|
||||
|
||||
The channel class represents the out-of-character chat-room usable by
|
||||
Accounts in-game. It is mostly overloaded to change its appearance, but
|
||||
channels can be used to implement many different forms of message
|
||||
distribution systems.
|
||||
|
||||
Note that sending data to channels are handled via the CMD_CHANNEL
|
||||
syscommand (see evennia.syscmds). The sending should normally not need
|
||||
to be modified.
|
||||
|
||||
"""
|
||||
|
||||
from evennia.comms.comms import DefaultChannel
|
||||
|
||||
|
||||
class Channel(DefaultChannel):
|
||||
r"""
|
||||
This is the base class for all Channel Comms. Inherit from this to
|
||||
create different types of communication channels.
|
||||
|
||||
Class-level variables:
|
||||
- `send_to_online_only` (bool, default True) - if set, will only try to
|
||||
send to subscribers that are actually active. This is a useful optimization.
|
||||
- `log_file` (str, default `"channel_{channelname}.log"`). This is the
|
||||
log file to which the channel history will be saved. The `{channelname}` tag
|
||||
will be replaced by the key of the Channel. If an Attribute 'log_file'
|
||||
is set, this will be used instead. If this is None and no Attribute is found,
|
||||
no history will be saved.
|
||||
- `channel_prefix_string` (str, default `"[{channelname} ]"`) - this is used
|
||||
as a simple template to get the channel prefix with `.channel_prefix()`. It is used
|
||||
in front of every channel message; use `{channelmessage}` token to insert the
|
||||
name of the current channel. Set to `None` if you want no prefix (or want to
|
||||
handle it in a hook during message generation instead.
|
||||
- `channel_msg_nick_pattern`(str, default `"{alias}\s*?|{alias}\s+?(?P<arg1>.+?)") -
|
||||
this is what used when a channel subscriber gets a channel nick assigned to this
|
||||
channel. The nickhandler uses the pattern to pick out this channel's name from user
|
||||
input. The `{alias}` token will get both the channel's key and any set/custom aliases
|
||||
per subscriber. You need to allow for an `<arg1>` regex group to catch any message
|
||||
that should be send to the channel. You usually don't need to change this pattern
|
||||
unless you are changing channel command-style entirely.
|
||||
- `channel_msg_nick_replacement` (str, default `"channel {channelname} = $1"` - this
|
||||
is used by the nickhandler to generate a replacement string once the nickhandler (using
|
||||
the `channel_msg_nick_pattern`) identifies that the channel should be addressed
|
||||
to send a message to it. The `<arg1>` regex pattern match from `channel_msg_nick_pattern`
|
||||
will end up at the `$1` position in the replacement. Together, this allows you do e.g.
|
||||
'public Hello' and have that become a mapping to `channel public = Hello`. By default,
|
||||
the account-level `channel` command is used. If you were to rename that command you must
|
||||
tweak the output to something like `yourchannelcommandname {channelname} = $1`.
|
||||
|
||||
* Properties:
|
||||
mutelist
|
||||
banlist
|
||||
wholist
|
||||
|
||||
* Working methods:
|
||||
get_log_filename()
|
||||
set_log_filename(filename)
|
||||
has_connection(account) - check if the given account listens to this channel
|
||||
connect(account) - connect account to this channel
|
||||
disconnect(account) - disconnect account from channel
|
||||
access(access_obj, access_type='listen', default=False) - check the
|
||||
access on this channel (default access_type is listen)
|
||||
create(key, creator=None, *args, **kwargs)
|
||||
delete() - delete this channel
|
||||
message_transform(msg, emit=False, prefix=True,
|
||||
sender_strings=None, external=False) - called by
|
||||
the comm system and triggers the hooks below
|
||||
msg(msgobj, header=None, senders=None, sender_strings=None,
|
||||
persistent=None, online=False, emit=False, external=False) - main
|
||||
send method, builds and sends a new message to channel.
|
||||
tempmsg(msg, header=None, senders=None) - wrapper for sending non-persistent
|
||||
messages.
|
||||
distribute_message(msg, online=False) - send a message to all
|
||||
connected accounts on channel, optionally sending only
|
||||
to accounts that are currently online (optimized for very large sends)
|
||||
mute(subscriber, **kwargs)
|
||||
unmute(subscriber, **kwargs)
|
||||
ban(target, **kwargs)
|
||||
unban(target, **kwargs)
|
||||
add_user_channel_alias(user, alias, **kwargs)
|
||||
remove_user_channel_alias(user, alias, **kwargs)
|
||||
|
||||
|
||||
Useful hooks:
|
||||
at_channel_creation() - called once, when the channel is created
|
||||
basetype_setup()
|
||||
at_init()
|
||||
at_first_save()
|
||||
channel_prefix() - how the channel should be
|
||||
prefixed when returning to user. Returns a string
|
||||
format_senders(senders) - should return how to display multiple
|
||||
senders to a channel
|
||||
pose_transform(msg, sender_string) - should detect if the
|
||||
sender is posing, and if so, modify the string
|
||||
format_external(msg, senders, emit=False) - format messages sent
|
||||
from outside the game, like from IRC
|
||||
format_message(msg, emit=False) - format the message body before
|
||||
displaying it to the user. 'emit' generally means that the
|
||||
message should not be displayed with the sender's name.
|
||||
channel_prefix()
|
||||
|
||||
pre_join_channel(joiner) - if returning False, abort join
|
||||
post_join_channel(joiner) - called right after successful join
|
||||
pre_leave_channel(leaver) - if returning False, abort leave
|
||||
post_leave_channel(leaver) - called right after successful leave
|
||||
at_pre_msg(message, **kwargs)
|
||||
at_post_msg(message, **kwargs)
|
||||
web_get_admin_url()
|
||||
web_get_create_url()
|
||||
web_get_detail_url()
|
||||
web_get_update_url()
|
||||
web_get_delete_url()
|
||||
|
||||
"""
|
||||
|
||||
pass
|
||||
26
evennia/timmy_world/typeclasses/characters.py
Normal file
26
evennia/timmy_world/typeclasses/characters.py
Normal file
@@ -0,0 +1,26 @@
|
||||
"""
|
||||
Characters
|
||||
|
||||
Characters are (by default) Objects setup to be puppeted by Accounts.
|
||||
They are what you "see" in game. The Character class in this module
|
||||
is setup to be the "default" character type created by the default
|
||||
creation commands.
|
||||
|
||||
"""
|
||||
|
||||
from evennia.objects.objects import DefaultCharacter
|
||||
|
||||
from .objects import ObjectParent
|
||||
|
||||
|
||||
class Character(ObjectParent, DefaultCharacter):
|
||||
"""
|
||||
The Character just re-implements some of the Object's methods and hooks
|
||||
to represent a Character entity in-game.
|
||||
|
||||
See mygame/typeclasses/objects.py for a list of
|
||||
properties and methods available on all Object child classes like this.
|
||||
|
||||
"""
|
||||
|
||||
pass
|
||||
26
evennia/timmy_world/typeclasses/exits.py
Normal file
26
evennia/timmy_world/typeclasses/exits.py
Normal file
@@ -0,0 +1,26 @@
|
||||
"""
|
||||
Exits
|
||||
|
||||
Exits are connectors between Rooms. An exit always has a destination property
|
||||
set and has a single command defined on itself with the same name as its key,
|
||||
for allowing Characters to traverse the exit to its destination.
|
||||
|
||||
"""
|
||||
|
||||
from evennia.objects.objects import DefaultExit
|
||||
|
||||
from .objects import ObjectParent
|
||||
|
||||
|
||||
class Exit(ObjectParent, DefaultExit):
|
||||
"""
|
||||
Exits are connectors between rooms. Exits are normal Objects except
|
||||
they defines the `destination` property and overrides some hooks
|
||||
and methods to represent the exits.
|
||||
|
||||
See mygame/typeclasses/objects.py for a list of
|
||||
properties and methods available on all Objects child classes like this.
|
||||
|
||||
"""
|
||||
|
||||
pass
|
||||
217
evennia/timmy_world/typeclasses/objects.py
Normal file
217
evennia/timmy_world/typeclasses/objects.py
Normal file
@@ -0,0 +1,217 @@
|
||||
"""
|
||||
Object
|
||||
|
||||
The Object is the class for general items in the game world.
|
||||
|
||||
Use the ObjectParent class to implement common features for *all* entities
|
||||
with a location in the game world (like Characters, Rooms, Exits).
|
||||
|
||||
"""
|
||||
|
||||
from evennia.objects.objects import DefaultObject
|
||||
|
||||
|
||||
class ObjectParent:
|
||||
"""
|
||||
This is a mixin that can be used to override *all* entities inheriting at
|
||||
some distance from DefaultObject (Objects, Exits, Characters and Rooms).
|
||||
|
||||
Just add any method that exists on `DefaultObject` to this class. If one
|
||||
of the derived classes has itself defined that same hook already, that will
|
||||
take precedence.
|
||||
|
||||
"""
|
||||
|
||||
|
||||
class Object(ObjectParent, DefaultObject):
|
||||
"""
|
||||
This is the root Object typeclass, representing all entities that
|
||||
have an actual presence in-game. DefaultObjects generally have a
|
||||
location. They can also be manipulated and looked at. Game
|
||||
entities you define should inherit from DefaultObject at some distance.
|
||||
|
||||
It is recommended to create children of this class using the
|
||||
`evennia.create_object()` function rather than to initialize the class
|
||||
directly - this will both set things up and efficiently save the object
|
||||
without `obj.save()` having to be called explicitly.
|
||||
|
||||
Note: Check the autodocs for complete class members, this may not always
|
||||
be up-to date.
|
||||
|
||||
* Base properties defined/available on all Objects
|
||||
|
||||
key (string) - name of object
|
||||
name (string)- same as key
|
||||
dbref (int, read-only) - unique #id-number. Also "id" can be used.
|
||||
date_created (string) - time stamp of object creation
|
||||
|
||||
account (Account) - controlling account (if any, only set together with
|
||||
sessid below)
|
||||
sessid (int, read-only) - session id (if any, only set together with
|
||||
account above). Use `sessions` handler to get the
|
||||
Sessions directly.
|
||||
location (Object) - current location. Is None if this is a room
|
||||
home (Object) - safety start-location
|
||||
has_account (bool, read-only)- will only return *connected* accounts
|
||||
contents (list, read only) - returns all objects inside this object
|
||||
exits (list of Objects, read-only) - returns all exits from this
|
||||
object, if any
|
||||
destination (Object) - only set if this object is an exit.
|
||||
is_superuser (bool, read-only) - True/False if this user is a superuser
|
||||
is_connected (bool, read-only) - True if this object is associated with
|
||||
an Account with any connected sessions.
|
||||
has_account (bool, read-only) - True is this object has an associated account.
|
||||
is_superuser (bool, read-only): True if this object has an account and that
|
||||
account is a superuser.
|
||||
|
||||
* Handlers available
|
||||
|
||||
aliases - alias-handler: use aliases.add/remove/get() to use.
|
||||
permissions - permission-handler: use permissions.add/remove() to
|
||||
add/remove new perms.
|
||||
locks - lock-handler: use locks.add() to add new lock strings
|
||||
scripts - script-handler. Add new scripts to object with scripts.add()
|
||||
cmdset - cmdset-handler. Use cmdset.add() to add new cmdsets to object
|
||||
nicks - nick-handler. New nicks with nicks.add().
|
||||
sessions - sessions-handler. Get Sessions connected to this
|
||||
object with sessions.get()
|
||||
attributes - attribute-handler. Use attributes.add/remove/get.
|
||||
db - attribute-handler: Shortcut for attribute-handler. Store/retrieve
|
||||
database attributes using self.db.myattr=val, val=self.db.myattr
|
||||
ndb - non-persistent attribute handler: same as db but does not create
|
||||
a database entry when storing data
|
||||
|
||||
* Helper methods (see src.objects.objects.py for full headers)
|
||||
|
||||
get_search_query_replacement(searchdata, **kwargs)
|
||||
get_search_direct_match(searchdata, **kwargs)
|
||||
get_search_candidates(searchdata, **kwargs)
|
||||
get_search_result(searchdata, attribute_name=None, typeclass=None,
|
||||
candidates=None, exact=False, use_dbref=None, tags=None, **kwargs)
|
||||
get_stacked_result(results, **kwargs)
|
||||
handle_search_results(searchdata, results, **kwargs)
|
||||
search(searchdata, global_search=False, use_nicks=True, typeclass=None,
|
||||
location=None, attribute_name=None, quiet=False, exact=False,
|
||||
candidates=None, use_locks=True, nofound_string=None,
|
||||
multimatch_string=None, use_dbref=None, tags=None, stacked=0)
|
||||
search_account(searchdata, quiet=False)
|
||||
execute_cmd(raw_string, session=None, **kwargs))
|
||||
msg(text=None, from_obj=None, session=None, options=None, **kwargs)
|
||||
for_contents(func, exclude=None, **kwargs)
|
||||
msg_contents(message, exclude=None, from_obj=None, mapping=None,
|
||||
raise_funcparse_errors=False, **kwargs)
|
||||
move_to(destination, quiet=False, emit_to_obj=None, use_destination=True)
|
||||
clear_contents()
|
||||
create(key, account, caller, method, **kwargs)
|
||||
copy(new_key=None)
|
||||
at_object_post_copy(new_obj, **kwargs)
|
||||
delete()
|
||||
is_typeclass(typeclass, exact=False)
|
||||
swap_typeclass(new_typeclass, clean_attributes=False, no_default=True)
|
||||
access(accessing_obj, access_type='read', default=False,
|
||||
no_superuser_bypass=False, **kwargs)
|
||||
filter_visible(obj_list, looker, **kwargs)
|
||||
get_default_lockstring()
|
||||
get_cmdsets(caller, current, **kwargs)
|
||||
check_permstring(permstring)
|
||||
get_cmdset_providers()
|
||||
get_display_name(looker=None, **kwargs)
|
||||
get_extra_display_name_info(looker=None, **kwargs)
|
||||
get_numbered_name(count, looker, **kwargs)
|
||||
get_display_header(looker, **kwargs)
|
||||
get_display_desc(looker, **kwargs)
|
||||
get_display_exits(looker, **kwargs)
|
||||
get_display_characters(looker, **kwargs)
|
||||
get_display_things(looker, **kwargs)
|
||||
get_display_footer(looker, **kwargs)
|
||||
format_appearance(appearance, looker, **kwargs)
|
||||
return_apperance(looker, **kwargs)
|
||||
|
||||
* Hooks (these are class methods, so args should start with self):
|
||||
|
||||
basetype_setup() - only called once, used for behind-the-scenes
|
||||
setup. Normally not modified.
|
||||
basetype_posthook_setup() - customization in basetype, after the object
|
||||
has been created; Normally not modified.
|
||||
|
||||
at_object_creation() - only called once, when object is first created.
|
||||
Object customizations go here.
|
||||
at_object_delete() - called just before deleting an object. If returning
|
||||
False, deletion is aborted. Note that all objects
|
||||
inside a deleted object are automatically moved
|
||||
to their <home>, they don't need to be removed here.
|
||||
|
||||
at_init() - called whenever typeclass is cached from memory,
|
||||
at least once every server restart/reload
|
||||
at_first_save()
|
||||
at_cmdset_get(**kwargs) - this is called just before the command handler
|
||||
requests a cmdset from this object. The kwargs are
|
||||
not normally used unless the cmdset is created
|
||||
dynamically (see e.g. Exits).
|
||||
at_pre_puppet(account)- (account-controlled objects only) called just
|
||||
before puppeting
|
||||
at_post_puppet() - (account-controlled objects only) called just
|
||||
after completing connection account<->object
|
||||
at_pre_unpuppet() - (account-controlled objects only) called just
|
||||
before un-puppeting
|
||||
at_post_unpuppet(account) - (account-controlled objects only) called just
|
||||
after disconnecting account<->object link
|
||||
at_server_reload() - called before server is reloaded
|
||||
at_server_shutdown() - called just before server is fully shut down
|
||||
|
||||
at_access(result, accessing_obj, access_type) - called with the result
|
||||
of a lock access check on this object. Return value
|
||||
does not affect check result.
|
||||
|
||||
at_pre_move(destination) - called just before moving object
|
||||
to the destination. If returns False, move is cancelled.
|
||||
announce_move_from(destination) - called in old location, just
|
||||
before move, if obj.move_to() has quiet=False
|
||||
announce_move_to(source_location) - called in new location, just
|
||||
after move, if obj.move_to() has quiet=False
|
||||
at_post_move(source_location) - always called after a move has
|
||||
been successfully performed.
|
||||
at_pre_object_leave(leaving_object, destination, **kwargs)
|
||||
at_object_leave(obj, target_location, move_type="move", **kwargs)
|
||||
at_object_leave(obj, target_location) - called when an object leaves
|
||||
this object in any fashion
|
||||
at_pre_object_receive(obj, source_location)
|
||||
at_object_receive(obj, source_location, move_type="move", **kwargs) - called when this object receives
|
||||
another object
|
||||
at_post_move(source_location, move_type="move", **kwargs)
|
||||
|
||||
at_traverse(traversing_object, target_location, **kwargs) - (exit-objects only)
|
||||
handles all moving across the exit, including
|
||||
calling the other exit hooks. Use super() to retain
|
||||
the default functionality.
|
||||
at_post_traverse(traversing_object, source_location) - (exit-objects only)
|
||||
called just after a traversal has happened.
|
||||
at_failed_traverse(traversing_object) - (exit-objects only) called if
|
||||
traversal fails and property err_traverse is not defined.
|
||||
|
||||
at_msg_receive(self, msg, from_obj=None, **kwargs) - called when a message
|
||||
(via self.msg()) is sent to this obj.
|
||||
If returns false, aborts send.
|
||||
at_msg_send(self, msg, to_obj=None, **kwargs) - called when this objects
|
||||
sends a message to someone via self.msg().
|
||||
|
||||
return_appearance(looker) - describes this object. Used by "look"
|
||||
command by default
|
||||
at_desc(looker=None) - called by 'look' whenever the
|
||||
appearance is requested.
|
||||
at_pre_get(getter, **kwargs)
|
||||
at_get(getter) - called after object has been picked up.
|
||||
Does not stop pickup.
|
||||
at_pre_give(giver, getter, **kwargs)
|
||||
at_give(giver, getter, **kwargs)
|
||||
at_pre_drop(dropper, **kwargs)
|
||||
at_drop(dropper, **kwargs) - called when this object has been dropped.
|
||||
at_pre_say(speaker, message, **kwargs)
|
||||
at_say(message, msg_self=None, msg_location=None, receivers=None, msg_receivers=None, **kwargs)
|
||||
|
||||
at_look(target, **kwargs)
|
||||
at_desc(looker=None)
|
||||
|
||||
"""
|
||||
|
||||
pass
|
||||
24
evennia/timmy_world/typeclasses/rooms.py
Normal file
24
evennia/timmy_world/typeclasses/rooms.py
Normal file
@@ -0,0 +1,24 @@
|
||||
"""
|
||||
Room
|
||||
|
||||
Rooms are simple containers that has no location of their own.
|
||||
|
||||
"""
|
||||
|
||||
from evennia.objects.objects import DefaultRoom
|
||||
|
||||
from .objects import ObjectParent
|
||||
|
||||
|
||||
class Room(ObjectParent, DefaultRoom):
|
||||
"""
|
||||
Rooms are like any Object, except their location is None
|
||||
(which is default). They also use basetype_setup() to
|
||||
add locks so they cannot be puppeted or picked up.
|
||||
(to change that, use at_object_creation instead)
|
||||
|
||||
See mygame/typeclasses/objects.py for a list of
|
||||
properties and methods available on all Objects.
|
||||
"""
|
||||
|
||||
pass
|
||||
103
evennia/timmy_world/typeclasses/scripts.py
Normal file
103
evennia/timmy_world/typeclasses/scripts.py
Normal file
@@ -0,0 +1,103 @@
|
||||
"""
|
||||
Scripts
|
||||
|
||||
Scripts are powerful jacks-of-all-trades. They have no in-game
|
||||
existence and can be used to represent persistent game systems in some
|
||||
circumstances. Scripts can also have a time component that allows them
|
||||
to "fire" regularly or a limited number of times.
|
||||
|
||||
There is generally no "tree" of Scripts inheriting from each other.
|
||||
Rather, each script tends to inherit from the base Script class and
|
||||
just overloads its hooks to have it perform its function.
|
||||
|
||||
"""
|
||||
|
||||
from evennia.scripts.scripts import DefaultScript
|
||||
|
||||
|
||||
class Script(DefaultScript):
|
||||
"""
|
||||
This is the base TypeClass for all Scripts. Scripts describe
|
||||
all entities/systems without a physical existence in the game world
|
||||
that require database storage (like an economic system or
|
||||
combat tracker). They
|
||||
can also have a timer/ticker component.
|
||||
|
||||
A script type is customized by redefining some or all of its hook
|
||||
methods and variables.
|
||||
|
||||
* available properties (check docs for full listing, this could be
|
||||
outdated).
|
||||
|
||||
key (string) - name of object
|
||||
name (string)- same as key
|
||||
aliases (list of strings) - aliases to the object. Will be saved
|
||||
to database as AliasDB entries but returned as strings.
|
||||
dbref (int, read-only) - unique #id-number. Also "id" can be used.
|
||||
date_created (string) - time stamp of object creation
|
||||
permissions (list of strings) - list of permission strings
|
||||
|
||||
desc (string) - optional description of script, shown in listings
|
||||
obj (Object) - optional object that this script is connected to
|
||||
and acts on (set automatically by obj.scripts.add())
|
||||
interval (int) - how often script should run, in seconds. <0 turns
|
||||
off ticker
|
||||
start_delay (bool) - if the script should start repeating right away or
|
||||
wait self.interval seconds
|
||||
repeats (int) - how many times the script should repeat before
|
||||
stopping. 0 means infinite repeats
|
||||
persistent (bool) - if script should survive a server shutdown or not
|
||||
is_active (bool) - if script is currently running
|
||||
|
||||
* Handlers
|
||||
|
||||
locks - lock-handler: use locks.add() to add new lock strings
|
||||
db - attribute-handler: store/retrieve database attributes on this
|
||||
self.db.myattr=val, val=self.db.myattr
|
||||
ndb - non-persistent attribute handler: same as db but does not
|
||||
create a database entry when storing data
|
||||
|
||||
* Helper methods
|
||||
|
||||
create(key, **kwargs)
|
||||
start() - start script (this usually happens automatically at creation
|
||||
and obj.script.add() etc)
|
||||
stop() - stop script, and delete it
|
||||
pause() - put the script on hold, until unpause() is called. If script
|
||||
is persistent, the pause state will survive a shutdown.
|
||||
unpause() - restart a previously paused script. The script will continue
|
||||
from the paused timer (but at_start() will be called).
|
||||
time_until_next_repeat() - if a timed script (interval>0), returns time
|
||||
until next tick
|
||||
|
||||
* Hook methods (should also include self as the first argument):
|
||||
|
||||
at_script_creation() - called only once, when an object of this
|
||||
class is first created.
|
||||
is_valid() - is called to check if the script is valid to be running
|
||||
at the current time. If is_valid() returns False, the running
|
||||
script is stopped and removed from the game. You can use this
|
||||
to check state changes (i.e. an script tracking some combat
|
||||
stats at regular intervals is only valid to run while there is
|
||||
actual combat going on).
|
||||
at_start() - Called every time the script is started, which for persistent
|
||||
scripts is at least once every server start. Note that this is
|
||||
unaffected by self.delay_start, which only delays the first
|
||||
call to at_repeat().
|
||||
at_repeat() - Called every self.interval seconds. It will be called
|
||||
immediately upon launch unless self.delay_start is True, which
|
||||
will delay the first call of this method by self.interval
|
||||
seconds. If self.interval==0, this method will never
|
||||
be called.
|
||||
at_pause()
|
||||
at_stop() - Called as the script object is stopped and is about to be
|
||||
removed from the game, e.g. because is_valid() returned False.
|
||||
at_script_delete()
|
||||
at_server_reload() - Called when server reloads. Can be used to
|
||||
save temporary variables you want should survive a reload.
|
||||
at_server_shutdown() - called at a full server shutdown.
|
||||
at_server_start()
|
||||
|
||||
"""
|
||||
|
||||
pass
|
||||
51
evennia/timmy_world/web/README.md
Normal file
51
evennia/timmy_world/web/README.md
Normal file
@@ -0,0 +1,51 @@
|
||||
# Web
|
||||
|
||||
This folder contains overriding of web assets - the website and webclient
|
||||
coming with the game.
|
||||
|
||||
This is the process for serving a new web site (see also the Django docs for
|
||||
more details):
|
||||
|
||||
1. A user enters an url in their browser (or clicks a button). This leads to
|
||||
the browser sending a _HTTP request_ to the server, with a specific type
|
||||
(GET,POST etc) and url-path (like for `https://localhost:4001/`, the part of
|
||||
the url we need to consider is `/`).
|
||||
2. Evennia (through Django) will make use of the regular expressions registered
|
||||
in the `urls.py` file. This acts as a rerouter to _views_, which are
|
||||
regular Python functions able to process the incoming request (think of
|
||||
these as similar to the right Evennia Command being selected to handle your
|
||||
input - views are like Commands in this sense). In the case of `/` we
|
||||
reroute to a view handling the main index-page of the website. The view is
|
||||
either a function or a callable class (Evennia tends to have them as
|
||||
functions).
|
||||
3. The view-function will prepare all the data needed by the web page. For the default
|
||||
index page, this means gather the game statistics so you can see how many
|
||||
are currently connected to the game etc.
|
||||
4. The view will next fetch a _template_. A template is a HTML-document with special
|
||||
'placeholder' tags (written as `{{...}}` or `{% ... %}` usually). These
|
||||
placeholders allow the view to inject dynamic content into the HTML and make
|
||||
the page customized to the current situation. For the index page, it means
|
||||
injecting the current player-count in the right places of the html page. This
|
||||
is called 'rendering' the template. The result is a complete HTML page.
|
||||
5. (The view can also pull in a _form_ to customize user-input in a similar way.)
|
||||
6. The finished HTML page is packed in a _HTTP response_ and is returned to the
|
||||
web browser, which can now display the page!
|
||||
|
||||
## A note on the webclient
|
||||
|
||||
The web browser can also execute code directly without talking to the Server.
|
||||
This code must be written/loaded into the web page and is written using the
|
||||
Javascript programming language (there is no way around this, it is what web
|
||||
browsers understand). Executing Javascript is something the web browser does,
|
||||
it operates independently from Evennia. Small snippets of javascript can be
|
||||
used on a page to have buttons react, make small animations etc that doesn't
|
||||
require the server.
|
||||
|
||||
In the case of the Webclient, Evennia will load the Webclient page as above,
|
||||
but the page then contains Javascript code responsible for actually displaying
|
||||
the client GUI, allows you to resize windows etc.
|
||||
|
||||
After it starts, the webclient 'calls home' and spins up a websocket link to
|
||||
the Evennia Portal - this is how all data is then exchanged. So after the
|
||||
initial loading of the webclient page, the above sequence doesn't happen again
|
||||
until close the tab and come back or you reload it manually in your browser.
|
||||
0
evennia/timmy_world/web/__init__.py
Normal file
0
evennia/timmy_world/web/__init__.py
Normal file
5
evennia/timmy_world/web/admin/README.md
Normal file
5
evennia/timmy_world/web/admin/README.md
Normal file
@@ -0,0 +1,5 @@
|
||||
# Admin views
|
||||
|
||||
Evennia makes several customizations to the Django web admin, but you can make
|
||||
further changes here. Customizing the admin is a big topic and
|
||||
you are best off reading more about it in the [Django admin site documentation](https://docs.djangoproject.com/en/4.1/ref/contrib/admin/).
|
||||
0
evennia/timmy_world/web/admin/__init__.py
Normal file
0
evennia/timmy_world/web/admin/__init__.py
Normal file
20
evennia/timmy_world/web/admin/urls.py
Normal file
20
evennia/timmy_world/web/admin/urls.py
Normal file
@@ -0,0 +1,20 @@
|
||||
"""
|
||||
This reroutes from an URL to a python view-function/class.
|
||||
|
||||
The main web/urls.py includes these routes for all urls starting with `admin/`
|
||||
(the `admin/` part should not be included again here).
|
||||
|
||||
"""
|
||||
|
||||
from django.urls import path
|
||||
|
||||
from evennia.web.admin.urls import urlpatterns as evennia_admin_urlpatterns
|
||||
|
||||
# add patterns here
|
||||
urlpatterns = [
|
||||
# path("url-pattern", imported_python_view),
|
||||
# path("url-pattern", imported_python_view),
|
||||
]
|
||||
|
||||
# read by Django
|
||||
urlpatterns = urlpatterns + evennia_admin_urlpatterns
|
||||
0
evennia/timmy_world/web/api/__init__.py
Normal file
0
evennia/timmy_world/web/api/__init__.py
Normal file
17
evennia/timmy_world/web/static/README.md
Normal file
17
evennia/timmy_world/web/static/README.md
Normal file
@@ -0,0 +1,17 @@
|
||||
## Static files
|
||||
|
||||
This is the place to put static resources you want to serve from the
|
||||
Evennia server. This is usually CSS and Javascript files but you _could_ also
|
||||
serve other media like images, videos and music files from here.
|
||||
|
||||
> If you serve a lot of large files (especially videos) you will see a lot
|
||||
> better performance doing so from a separate dedicated media host.
|
||||
|
||||
You can also override default Evennia files from here. The original files are
|
||||
found in `evennia/web/static/`. Copy the original file into the same
|
||||
corresponding location/sublocation in this folder (such as website CSS files
|
||||
into `mygame/static/website/css/`) and modify it, then reload the server.
|
||||
|
||||
Note that all static resources will be collected from all over Evennia into
|
||||
`mygame/server/.static` for serving by the webserver. That folder should not be
|
||||
modified manually.
|
||||
@@ -0,0 +1,3 @@
|
||||
# Evennia API static files
|
||||
|
||||
Overrides for API files.
|
||||
@@ -0,0 +1,3 @@
|
||||
# Static files for API
|
||||
|
||||
Override images here.
|
||||
3
evennia/timmy_world/web/static/webclient/css/README.md
Normal file
3
evennia/timmy_world/web/static/webclient/css/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
You can replace the CSS files for Evennia's webclient here.
|
||||
|
||||
You can find the original files in `evennia/web/static/webclient/css/`
|
||||
3
evennia/timmy_world/web/static/webclient/js/README.md
Normal file
3
evennia/timmy_world/web/static/webclient/js/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
You can replace the javascript files for Evennia's webclient page here.
|
||||
|
||||
You can find the original files in `evennia/web/static/webclient/js/`
|
||||
3
evennia/timmy_world/web/static/website/css/README.md
Normal file
3
evennia/timmy_world/web/static/website/css/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
You can replace the CSS files for Evennia's homepage here.
|
||||
|
||||
You can find the original files in `evennia/web/static/website/css/`
|
||||
3
evennia/timmy_world/web/static/website/images/README.md
Normal file
3
evennia/timmy_world/web/static/website/images/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
You can replace the image files for Evennia's home page here.
|
||||
|
||||
You can find the original files in `evennia/web/static/website/images/`
|
||||
14
evennia/timmy_world/web/templates/README.md
Normal file
14
evennia/timmy_world/web/templates/README.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# HTML templates
|
||||
|
||||
Templates are HTML files that (usually) have special `{{ ... }}` template
|
||||
markers in them to allow Evennia/Django to insert dynamic content in a web
|
||||
page. An example is listing how many users are currently online in the game.
|
||||
|
||||
Templates are referenced by _views_ - Python functions or callable classes that
|
||||
prepare the data needed by the template and 'renders' them into a finished
|
||||
HTML page to return to the user.
|
||||
|
||||
You can replace Evennia's default templates by overriding them in this folder.
|
||||
The originals are in `evennia/web/templates/` - just copy the template into the
|
||||
corresponding location here (so the website's `index.html` should be copied to
|
||||
`website/index.html` where it can be modified). Reload the server to see your changes.
|
||||
@@ -0,0 +1,3 @@
|
||||
# Templates for the Evennia API
|
||||
|
||||
Override templates here.
|
||||
4
evennia/timmy_world/web/templates/webclient/README.md
Normal file
4
evennia/timmy_world/web/templates/webclient/README.md
Normal file
@@ -0,0 +1,4 @@
|
||||
Replace Evennia's webclient django template with your own here.
|
||||
|
||||
You can find the original files in `evennia/web/templates/webclient/`. Just copy
|
||||
the original here and modify - after a reload the new template will be used.
|
||||
5
evennia/timmy_world/web/templates/website/README.md
Normal file
5
evennia/timmy_world/web/templates/website/README.md
Normal file
@@ -0,0 +1,5 @@
|
||||
You can replace the django templates (html files) for the website
|
||||
here.
|
||||
|
||||
You can find the original files under `evennia/web/templates/website/`. Just
|
||||
copy a template here and modify to have it override the default.
|
||||
@@ -0,0 +1,3 @@
|
||||
Flatpages require a default.html template, which can be overwritten by placing it in this folder.
|
||||
|
||||
You can find the original files in `evennia/web/website/templates/website/flatpages/`
|
||||
@@ -0,0 +1,3 @@
|
||||
The templates involving login/logout can be overwritten here.
|
||||
|
||||
You can find the original files in `evennia/web/website/templates/website/registration/`
|
||||
34
evennia/timmy_world/web/urls.py
Normal file
34
evennia/timmy_world/web/urls.py
Normal file
@@ -0,0 +1,34 @@
|
||||
"""
|
||||
This is the starting point when a user enters a url in their web browser.
|
||||
|
||||
The urls is matched (by regex) and mapped to a 'view' - a Python function or
|
||||
callable class that in turn (usually) makes use of a 'template' (a html file
|
||||
with slots that can be replaced by dynamic content) in order to render a HTML
|
||||
page to show the user.
|
||||
|
||||
This file includes the urls in website, webclient and admin. To override you
|
||||
should modify urls.py in those sub directories.
|
||||
|
||||
Search the Django documentation for "URL dispatcher" for more help.
|
||||
|
||||
"""
|
||||
|
||||
from django.urls import include, path
|
||||
|
||||
# default evennia patterns
|
||||
from evennia.web.urls import urlpatterns as evennia_default_urlpatterns
|
||||
|
||||
# add patterns
|
||||
urlpatterns = [
|
||||
# website
|
||||
path("", include("web.website.urls")),
|
||||
# webclient
|
||||
path("webclient/", include("web.webclient.urls")),
|
||||
# web admin
|
||||
path("admin/", include("web.admin.urls")),
|
||||
# add any extra urls here:
|
||||
# path("mypath/", include("path.to.my.urls.file")),
|
||||
]
|
||||
|
||||
# 'urlpatterns' must be named such for Django to find it.
|
||||
urlpatterns = urlpatterns + evennia_default_urlpatterns
|
||||
23
evennia/timmy_world/web/webclient/README.md
Normal file
23
evennia/timmy_world/web/webclient/README.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# Webclient Views
|
||||
|
||||
The webclient is mainly controlled by Javascript directly in the browser, so
|
||||
you usually customize it via `mygame/web/static/webclient/js/` - files instead.
|
||||
|
||||
There is very little you can change from here, unless you want to implement
|
||||
your very own client from scratch.
|
||||
|
||||
## On views
|
||||
|
||||
A 'view' is python code (a function or callable class) responsible for
|
||||
producing a HTML page for a user to view in response for going to a given URL
|
||||
in their browser. In Evennia lingo, it's similar in function to a Command, with
|
||||
the input/args being the URL/request and the output being a new web-page.
|
||||
|
||||
The urls.py file contains regular expressions that are run against the provided
|
||||
URL - when a match is found, the execution is passed to a view which is then
|
||||
responsible (usually) for producing the web page by filling in a _template_ - a
|
||||
HTML document that can have special tags in it that are replaced for dynamic
|
||||
content. It then returns the finished HTML page for the user to view.
|
||||
|
||||
See the [Django docs on Views](https://docs.djangoproject.com/en/4.1/topics/http/views/) for
|
||||
more information.
|
||||
0
evennia/timmy_world/web/webclient/__init__.py
Normal file
0
evennia/timmy_world/web/webclient/__init__.py
Normal file
20
evennia/timmy_world/web/webclient/urls.py
Normal file
20
evennia/timmy_world/web/webclient/urls.py
Normal file
@@ -0,0 +1,20 @@
|
||||
"""
|
||||
This reroutes from an URL to a python view-function/class.
|
||||
|
||||
The main web/urls.py includes these routes for all urls starting with `webclient/`
|
||||
(the `webclient/` part should not be included again here).
|
||||
|
||||
"""
|
||||
|
||||
from django.urls import path
|
||||
|
||||
from evennia.web.webclient.urls import urlpatterns as evennia_webclient_urlpatterns
|
||||
|
||||
# add patterns here
|
||||
urlpatterns = [
|
||||
# path("url-pattern", imported_python_view),
|
||||
# path("url-pattern", imported_python_view),
|
||||
]
|
||||
|
||||
# read by Django
|
||||
urlpatterns = urlpatterns + evennia_webclient_urlpatterns
|
||||
24
evennia/timmy_world/web/website/README.md
Normal file
24
evennia/timmy_world/web/website/README.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# Website views and other code
|
||||
|
||||
A 'view' is python code (a function or callable class) responsible for
|
||||
producing a HTML page for a user to view in response for going to a given URL
|
||||
in their browser. In Evennia lingo, it's similar in function to a Command, with
|
||||
the input/args being the URL/request and the output being a new web-page.
|
||||
|
||||
The urls.py file contains regular expressions that are run against the provided
|
||||
URL - when a match is found, the execution is passed to a view which is then
|
||||
responsible (usually) for producing the web page by filling in a _template_ - a
|
||||
HTML document that can have special tags in it that are replaced for dynamic
|
||||
content. It then returns the finished HTML page for the user to view.
|
||||
|
||||
See the [Django docs on Views](https://docs.djangoproject.com/en/4.1/topics/http/views/) for
|
||||
more information.
|
||||
|
||||
## Overriding a view
|
||||
|
||||
1. Copy the original code you want to change from `evennia/web/website/views/` into
|
||||
`mygame/web/website/views/` and edit it as you like.
|
||||
2. Look at `evennia/web/website/urls.py` and find the regex pointing to the view. Add this regex
|
||||
to your own `mygam/website/urls.pye` but change it to import and point to your
|
||||
changed version instead.
|
||||
3. Reload the server and the page now uses your version of the view.
|
||||
0
evennia/timmy_world/web/website/__init__.py
Normal file
0
evennia/timmy_world/web/website/__init__.py
Normal file
20
evennia/timmy_world/web/website/urls.py
Normal file
20
evennia/timmy_world/web/website/urls.py
Normal file
@@ -0,0 +1,20 @@
|
||||
"""
|
||||
This reroutes from an URL to a python view-function/class.
|
||||
|
||||
The main web/urls.py includes these routes for all urls (the root of the url)
|
||||
so it can reroute to all website pages.
|
||||
|
||||
"""
|
||||
|
||||
from django.urls import path
|
||||
|
||||
from evennia.web.website.urls import urlpatterns as evennia_website_urlpatterns
|
||||
|
||||
# add patterns here
|
||||
urlpatterns = [
|
||||
# path("url-pattern", imported_python_view),
|
||||
# path("url-pattern", imported_python_view),
|
||||
]
|
||||
|
||||
# read by Django
|
||||
urlpatterns = urlpatterns + evennia_website_urlpatterns
|
||||
0
evennia/timmy_world/web/website/views/__init__.py
Normal file
0
evennia/timmy_world/web/website/views/__init__.py
Normal file
10
evennia/timmy_world/world/README.md
Normal file
10
evennia/timmy_world/world/README.md
Normal file
@@ -0,0 +1,10 @@
|
||||
# world/
|
||||
|
||||
This folder is meant as a miscellaneous folder for all that other stuff
|
||||
related to the game. Code which are not commands or typeclasses go
|
||||
here, like custom economy systems, combat code, batch-files etc.
|
||||
|
||||
You can restructure and even rename this folder as best fits your
|
||||
sense of organisation. Just remember that if you add new sub
|
||||
directories, you must add (optionally empty) `__init__.py` files in
|
||||
them for Python to be able to find the modules within.
|
||||
0
evennia/timmy_world/world/__init__.py
Normal file
0
evennia/timmy_world/world/__init__.py
Normal file
26
evennia/timmy_world/world/batch_cmds.ev
Normal file
26
evennia/timmy_world/world/batch_cmds.ev
Normal file
@@ -0,0 +1,26 @@
|
||||
#
|
||||
# A batch-command file is a way to build a game world
|
||||
# in a programmatic way, by placing a sequence of
|
||||
# build commands after one another. This allows for
|
||||
# using a real text editor to edit e.g. descriptions
|
||||
# rather than entering text on the command line.
|
||||
#
|
||||
# A batch-command file is loaded with @batchprocess in-game:
|
||||
#
|
||||
# @batchprocess[/interactive] tutorial_examples.batch_cmds
|
||||
#
|
||||
# A # as the first symbol on a line begins a comment and
|
||||
# marks the end of a previous command definition. This is important,
|
||||
# - every command must be separated by at least one line of comment.
|
||||
#
|
||||
# All supplied commands are given as normal, on their own line
|
||||
# and accept arguments in any format up until the first next
|
||||
# comment line begins. Extra whitespace is removed; an empty
|
||||
# line in a command definition translates into a newline.
|
||||
#
|
||||
# See `evennia/contrib/tutorial_examples/batch_cmds.ev` for
|
||||
# an example of a batch-command code. See also the batch-code
|
||||
# system for loading python-code this way.
|
||||
#
|
||||
|
||||
|
||||
58
evennia/timmy_world/world/help_entries.py
Normal file
58
evennia/timmy_world/world/help_entries.py
Normal file
@@ -0,0 +1,58 @@
|
||||
"""
|
||||
File-based help entries. These complements command-based help and help entries
|
||||
added in the database using the `sethelp` command in-game.
|
||||
|
||||
Control where Evennia reads these entries with `settings.FILE_HELP_ENTRY_MODULES`,
|
||||
which is a list of python-paths to modules to read.
|
||||
|
||||
A module like this should hold a global `HELP_ENTRY_DICTS` list, containing
|
||||
dicts that each represent a help entry. If no `HELP_ENTRY_DICTS` variable is
|
||||
given, all top-level variables that are dicts in the module are read as help
|
||||
entries.
|
||||
|
||||
Each dict is on the form
|
||||
::
|
||||
|
||||
{'key': <str>,
|
||||
'text': <str>}`` # the actual help text. Can contain # subtopic sections
|
||||
'category': <str>, # optional, otherwise settings.DEFAULT_HELP_CATEGORY
|
||||
'aliases': <list>, # optional
|
||||
'locks': <str> # optional, 'view' controls seeing in help index, 'read'
|
||||
# if the entry can be read. If 'view' is unset,
|
||||
# 'read' is used for the index. If unset, everyone
|
||||
# can read/view the entry.
|
||||
|
||||
"""
|
||||
|
||||
HELP_ENTRY_DICTS = [
|
||||
{
|
||||
"key": "evennia",
|
||||
"aliases": ["ev"],
|
||||
"category": "General",
|
||||
"locks": "read:perm(Developer)",
|
||||
"text": """
|
||||
Evennia is a MU-game server and framework written in Python. You can read more
|
||||
on https://www.evennia.com.
|
||||
|
||||
# subtopics
|
||||
|
||||
## Installation
|
||||
|
||||
You'll find installation instructions on https://www.evennia.com.
|
||||
|
||||
## Community
|
||||
|
||||
There are many ways to get help and communicate with other devs!
|
||||
|
||||
### Discussions
|
||||
|
||||
The Discussions forum is found at https://github.com/evennia/evennia/discussions.
|
||||
|
||||
### Discord
|
||||
|
||||
There is also a discord channel for chatting - connect using the
|
||||
following link: https://discord.gg/AJJpcRUhtF
|
||||
|
||||
""",
|
||||
},
|
||||
]
|
||||
90
evennia/timmy_world/world/prototypes.py
Normal file
90
evennia/timmy_world/world/prototypes.py
Normal file
@@ -0,0 +1,90 @@
|
||||
"""
|
||||
Prototypes
|
||||
|
||||
A prototype is a simple way to create individualized instances of a
|
||||
given typeclass. It is dictionary with specific key names.
|
||||
|
||||
For example, you might have a Sword typeclass that implements everything a
|
||||
Sword would need to do. The only difference between different individual Swords
|
||||
would be their key, description and some Attributes. The Prototype system
|
||||
allows to create a range of such Swords with only minor variations. Prototypes
|
||||
can also inherit and combine together to form entire hierarchies (such as
|
||||
giving all Sabres and all Broadswords some common properties). Note that bigger
|
||||
variations, such as custom commands or functionality belong in a hierarchy of
|
||||
typeclasses instead.
|
||||
|
||||
A prototype can either be a dictionary placed into a global variable in a
|
||||
python module (a 'module-prototype') or stored in the database as a dict on a
|
||||
special Script (a db-prototype). The former can be created just by adding dicts
|
||||
to modules Evennia looks at for prototypes, the latter is easiest created
|
||||
in-game via the `olc` command/menu.
|
||||
|
||||
Prototypes are read and used to create new objects with the `spawn` command
|
||||
or directly via `evennia.spawn` or the full path `evennia.prototypes.spawner.spawn`.
|
||||
|
||||
A prototype dictionary have the following keywords:
|
||||
|
||||
Possible keywords are:
|
||||
- `prototype_key` - the name of the prototype. This is required for db-prototypes,
|
||||
for module-prototypes, the global variable name of the dict is used instead
|
||||
- `prototype_parent` - string pointing to parent prototype if any. Prototype inherits
|
||||
in a similar way as classes, with children overriding values in their parents.
|
||||
- `key` - string, the main object identifier.
|
||||
- `typeclass` - string, if not set, will use `settings.BASE_OBJECT_TYPECLASS`.
|
||||
- `location` - this should be a valid object or #dbref.
|
||||
- `home` - valid object or #dbref.
|
||||
- `destination` - only valid for exits (object or #dbref).
|
||||
- `permissions` - string or list of permission strings.
|
||||
- `locks` - a lock-string to use for the spawned object.
|
||||
- `aliases` - string or list of strings.
|
||||
- `attrs` - Attributes, expressed as a list of tuples on the form `(attrname, value)`,
|
||||
`(attrname, value, category)`, or `(attrname, value, category, locks)`. If using one
|
||||
of the shorter forms, defaults are used for the rest.
|
||||
- `tags` - Tags, as a list of tuples `(tag,)`, `(tag, category)` or `(tag, category, data)`.
|
||||
- Any other keywords are interpreted as Attributes with no category or lock.
|
||||
These will internally be added to `attrs` (equivalent to `(attrname, value)`.
|
||||
|
||||
See the `spawn` command and `evennia.prototypes.spawner.spawn` for more info.
|
||||
|
||||
"""
|
||||
|
||||
## example of module-based prototypes using
|
||||
## the variable name as `prototype_key` and
|
||||
## simple Attributes
|
||||
|
||||
# from random import randint
|
||||
#
|
||||
# GOBLIN = {
|
||||
# "key": "goblin grunt",
|
||||
# "health": lambda: randint(20,30),
|
||||
# "resists": ["cold", "poison"],
|
||||
# "attacks": ["fists"],
|
||||
# "weaknesses": ["fire", "light"],
|
||||
# "tags": = [("greenskin", "monster"), ("humanoid", "monster")]
|
||||
# }
|
||||
#
|
||||
# GOBLIN_WIZARD = {
|
||||
# "prototype_parent": "GOBLIN",
|
||||
# "key": "goblin wizard",
|
||||
# "spells": ["fire ball", "lighting bolt"]
|
||||
# }
|
||||
#
|
||||
# GOBLIN_ARCHER = {
|
||||
# "prototype_parent": "GOBLIN",
|
||||
# "key": "goblin archer",
|
||||
# "attacks": ["short bow"]
|
||||
# }
|
||||
#
|
||||
# This is an example of a prototype without a prototype
|
||||
# (nor key) of its own, so it should normally only be
|
||||
# used as a mix-in, as in the example of the goblin
|
||||
# archwizard below.
|
||||
# ARCHWIZARD_MIXIN = {
|
||||
# "attacks": ["archwizard staff"],
|
||||
# "spells": ["greater fire ball", "greater lighting"]
|
||||
# }
|
||||
#
|
||||
# GOBLIN_ARCHWIZARD = {
|
||||
# "key": "goblin archwizard",
|
||||
# "prototype_parent" : ("GOBLIN_WIZARD", "ARCHWIZARD_MIXIN")
|
||||
# }
|
||||
@@ -1,15 +1,24 @@
|
||||
{
|
||||
"tick_id": "20260328_015026",
|
||||
"timestamp": "2026-03-28T01:50:26.595915+00:00",
|
||||
"tick_id": "20260330_211051",
|
||||
"timestamp": "2026-03-30T21:10:51.832983+00:00",
|
||||
"perception": {
|
||||
"gitea_alive": true,
|
||||
"model_health": {
|
||||
"ollama_running": true,
|
||||
"models_loaded": [],
|
||||
"provider": "local-llama.cpp",
|
||||
"provider_base_url": "http://localhost:8081/v1",
|
||||
"provider_model": "hermes4:14b",
|
||||
"local_inference_running": true,
|
||||
"models_loaded": [
|
||||
"NousResearch_Hermes-4-14B-Q4_K_M.gguf"
|
||||
],
|
||||
"api_responding": true,
|
||||
"inference_ok": false,
|
||||
"inference_error": "HTTP Error 404: Not Found",
|
||||
"timestamp": "2026-03-28T01:50:26.594893+00:00"
|
||||
"inference_error": "HTTP Error 500: Internal Server Error",
|
||||
"latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json",
|
||||
"latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json",
|
||||
"export_lag_minutes": 0,
|
||||
"export_fresh": true,
|
||||
"timestamp": "2026-03-30T21:10:51.831838+00:00"
|
||||
},
|
||||
"Timmy_Foundation/the-nexus": {
|
||||
"open_issues": 1,
|
||||
@@ -21,7 +30,7 @@
|
||||
},
|
||||
"huey_alive": true
|
||||
},
|
||||
"previous_tick": "20260328_014026",
|
||||
"previous_tick": "20260330_210049",
|
||||
"decision": {
|
||||
"actions": [],
|
||||
"severity": "fallback",
|
||||
|
||||
@@ -10,3 +10,92 @@
|
||||
{"tick_id": "20260328_013025", "timestamp": "2026-03-28T01:30:25.294262+00:00", "perception": {"gitea_alive": false, "model_health": {"ollama_running": true, "models_loaded": [], "api_responding": true, "inference_ok": false, "inference_error": "HTTP Error 404: Not Found", "timestamp": "2026-03-28T01:30:25.293523+00:00"}, "huey_alive": true}, "previous_tick": "20260328_012021", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_014026", "timestamp": "2026-03-28T01:40:26.582484+00:00", "perception": {"gitea_alive": true, "model_health": {"ollama_running": true, "models_loaded": [], "api_responding": true, "inference_ok": false, "inference_error": "HTTP Error 404: Not Found", "timestamp": "2026-03-28T01:40:26.581736+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_013025", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_015026", "timestamp": "2026-03-28T01:50:26.595915+00:00", "perception": {"gitea_alive": true, "model_health": {"ollama_running": true, "models_loaded": [], "api_responding": true, "inference_ok": false, "inference_error": "HTTP Error 404: Not Found", "timestamp": "2026-03-28T01:50:26.594893+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_014026", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_020036", "timestamp": "2026-03-28T02:00:36.279655+00:00", "perception": {"gitea_alive": true, "model_health": {"ollama_running": true, "models_loaded": [], "api_responding": true, "inference_ok": false, "inference_error": "HTTP Error 404: Not Found", "timestamp": "2026-03-28T02:00:36.278517+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_015026", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_021025", "timestamp": "2026-03-28T02:10:25.471382+00:00", "perception": {"gitea_alive": true, "model_health": {"ollama_running": true, "models_loaded": [], "api_responding": true, "inference_ok": false, "inference_error": "HTTP Error 404: Not Found", "timestamp": "2026-03-28T02:10:25.470774+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_020036", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_022016", "timestamp": "2026-03-28T02:20:16.347751+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T02:20:16.346534+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_021025", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_023016", "timestamp": "2026-03-28T02:30:16.763224+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T02:30:16.762531+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_022016", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_024010", "timestamp": "2026-03-28T02:40:10.822723+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T02:40:10.821662+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_023016", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_025009", "timestamp": "2026-03-28T02:50:09.953027+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T02:50:09.952377+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_024010", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_030017", "timestamp": "2026-03-28T03:00:17.818706+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T03:00:17.818042+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_025009", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_031011", "timestamp": "2026-03-28T03:10:11.175668+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T03:10:11.175064+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_030017", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_032010", "timestamp": "2026-03-28T03:20:10.926893+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T03:20:10.925885+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_031011", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_033019", "timestamp": "2026-03-28T03:30:19.505416+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T03:30:19.504931+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_032010", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_034008", "timestamp": "2026-03-28T03:40:08.687408+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T03:40:08.686897+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_033019", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_035011", "timestamp": "2026-03-28T03:50:11.690397+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T03:50:11.689548+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_034008", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_040017", "timestamp": "2026-03-28T04:00:17.201045+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T04:00:17.200469+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_035011", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_041008", "timestamp": "2026-03-28T04:10:08.233165+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T04:10:08.232629+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_040017", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_042007", "timestamp": "2026-03-28T04:20:07.060449+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T04:20:07.059653+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_041008", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_043014", "timestamp": "2026-03-28T04:30:14.823517+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T04:30:14.822645+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_042007", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_044004", "timestamp": "2026-03-28T04:40:04.510594+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T04:40:04.510117+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_043014", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_045008", "timestamp": "2026-03-28T04:50:08.546604+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T04:50:08.545854+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_044004", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_050011", "timestamp": "2026-03-28T05:00:11.894473+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T05:00:11.893849+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_045008", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_053028", "timestamp": "2026-03-28T05:30:28.547862+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T05:30:28.547095+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_050011", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_054030", "timestamp": "2026-03-28T05:40:30.823149+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T05:40:30.822364+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_053028", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_055033", "timestamp": "2026-03-28T05:50:33.252293+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T05:50:33.251773+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_054030", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_060032", "timestamp": "2026-03-28T06:00:32.896438+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T06:00:32.895836+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_055033", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_061031", "timestamp": "2026-03-28T06:10:31.826400+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T06:10:31.825861+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_060032", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_062033", "timestamp": "2026-03-28T06:20:33.119729+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T06:20:33.119227+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_061031", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_070036", "timestamp": "2026-03-28T07:00:36.346504+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T07:00:36.345902+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_062033", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_071036", "timestamp": "2026-03-28T07:10:36.560235+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T07:10:36.559421+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_070036", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_072038", "timestamp": "2026-03-28T07:20:38.362669+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T07:20:38.361096+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_071036", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_080102", "timestamp": "2026-03-28T08:01:02.899447+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T08:01:02.898156+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_072038", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_120014", "timestamp": "2026-03-28T12:00:14.077818+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T12:00:14.077226+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_080102", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_121012", "timestamp": "2026-03-28T12:10:12.671276+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T12:10:12.670609+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_120014", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_122012", "timestamp": "2026-03-28T12:20:12.300137+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T12:20:12.299476+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_121012", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_123015", "timestamp": "2026-03-28T12:30:15.565284+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T12:30:15.564395+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_122012", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_124010", "timestamp": "2026-03-28T12:40:10.797085+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T12:40:10.796305+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_123015", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_125005", "timestamp": "2026-03-28T12:50:05.560145+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T12:50:05.559606+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_124010", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_130006", "timestamp": "2026-03-28T13:00:06.937989+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T13:00:06.937242+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_125005", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_131008", "timestamp": "2026-03-28T13:10:08.497757+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T13:10:08.497145+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_130006", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_132012", "timestamp": "2026-03-28T13:20:12.343887+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T13:20:12.343033+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_131008", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_134017", "timestamp": "2026-03-28T13:40:17.532926+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T13:40:17.532348+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260328_132012", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_135017", "timestamp": "2026-03-28T13:50:17.136933+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T13:45:16.782246+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_134017", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_140017", "timestamp": "2026-03-28T14:00:17.154890+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T13:55:16.341441+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_135017", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_141020", "timestamp": "2026-03-28T14:10:20.418497+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T14:10:20.417270+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_140017", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_142018", "timestamp": "2026-03-28T14:20:18.674306+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T14:20:18.673137+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_141020", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_143019", "timestamp": "2026-03-28T14:30:19.023308+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T14:30:19.022601+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_142018", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_144016", "timestamp": "2026-03-28T14:40:16.778331+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T14:40:16.777527+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_143019", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_145020", "timestamp": "2026-03-28T14:50:20.292163+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T14:50:20.291445+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_144016", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_150017", "timestamp": "2026-03-28T15:00:17.849916+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T14:55:14.244134+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_145020", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_151021", "timestamp": "2026-03-28T15:10:21.399217+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T15:10:21.398605+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_150017", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_152015", "timestamp": "2026-03-28T15:20:15.991594+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T15:20:15.990867+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_151021", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_153019", "timestamp": "2026-03-28T15:30:19.384371+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T15:30:19.383503+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_152015", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_154019", "timestamp": "2026-03-28T15:40:19.773504+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T15:40:19.772968+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_153019", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_155019", "timestamp": "2026-03-28T15:50:19.009962+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T15:50:19.008729+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_154019", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_160017", "timestamp": "2026-03-28T16:00:17.738573+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T15:55:16.436667+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_155019", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_161021", "timestamp": "2026-03-28T16:10:21.877561+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T16:10:21.876745+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_160017", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_162021", "timestamp": "2026-03-28T16:20:21.595960+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T16:20:21.629177+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_161021", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_163021", "timestamp": "2026-03-28T16:30:21.931000+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T16:30:21.930236+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_162021", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_164015", "timestamp": "2026-03-28T16:40:15.709951+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T16:40:15.708858+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_163021", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_165019", "timestamp": "2026-03-28T16:50:19.815929+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T16:50:19.815018+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_164015", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_170014", "timestamp": "2026-03-28T17:00:14.116016+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T17:00:14.115462+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_165019", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_171014", "timestamp": "2026-03-28T17:10:14.892384+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T17:10:14.891362+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_170014", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_172013", "timestamp": "2026-03-28T17:20:13.261830+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T17:20:13.261238+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_171014", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_173018", "timestamp": "2026-03-28T17:30:18.053816+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T17:30:18.052907+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_172013", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_174019", "timestamp": "2026-03-28T17:40:19.998797+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T17:40:19.998049+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_173018", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_175016", "timestamp": "2026-03-28T17:50:16.696577+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T17:50:16.696016+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_174019", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_180018", "timestamp": "2026-03-28T18:00:18.730733+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T18:00:18.730013+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_175016", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_181017", "timestamp": "2026-03-28T18:10:17.865769+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T18:10:17.865216+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_180018", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_182018", "timestamp": "2026-03-28T18:20:18.840325+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T18:20:18.839643+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_181017", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_183018", "timestamp": "2026-03-28T18:30:18.746378+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T18:30:18.816760+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_182018", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_184017", "timestamp": "2026-03-28T18:40:17.102561+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T18:35:16.963661+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_183018", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_185016", "timestamp": "2026-03-28T18:50:16.592060+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T18:50:16.591480+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_184017", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_190017", "timestamp": "2026-03-28T19:00:17.296017+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T19:00:17.295511+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_185016", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_191018", "timestamp": "2026-03-28T19:10:18.119911+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T19:10:18.119459+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_190017", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_192018", "timestamp": "2026-03-28T19:20:18.738729+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T19:15:18.569902+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_191018", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_193020", "timestamp": "2026-03-28T19:30:20.807380+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T19:30:20.806826+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_192018", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_194020", "timestamp": "2026-03-28T19:40:20.052856+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T19:35:20.657612+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_193020", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_195018", "timestamp": "2026-03-28T19:50:18.799825+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T19:50:18.799276+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_194020", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_200017", "timestamp": "2026-03-28T20:00:17.332104+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T19:55:15.966688+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_195018", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_201018", "timestamp": "2026-03-28T20:10:18.110515+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T20:05:18.572265+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_200017", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_202017", "timestamp": "2026-03-28T20:20:17.960819+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T20:20:17.960055+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_201018", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_203020", "timestamp": "2026-03-28T20:30:20.801355+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T20:30:20.800798+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_202017", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_204020", "timestamp": "2026-03-28T20:40:20.898649+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T20:35:11.334985+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_203020", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_205019", "timestamp": "2026-03-28T20:50:19.028973+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T20:45:19.605508+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_204020", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_211053", "timestamp": "2026-03-28T21:10:53.372057+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "timed out", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T21:10:53.370953+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_205019", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_210042", "timestamp": "2026-03-28T21:00:42.051135+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T21:00:42.049650+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_204020", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_212016", "timestamp": "2026-03-28T21:20:16.914753+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T21:20:16.912798+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_210042", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_213020", "timestamp": "2026-03-28T21:30:20.186638+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T21:25:18.041217+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_212016", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_214020", "timestamp": "2026-03-28T21:40:20.042009+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T21:40:20.040822+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_213020", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_215016", "timestamp": "2026-03-28T21:50:16.500460+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T21:50:16.499862+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_214020", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260328_220019", "timestamp": "2026-03-28T22:00:19.923318+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-28T21:55:18.376328+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_215016", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
|
||||
144
heartbeat/ticks_20260329.jsonl
Normal file
144
heartbeat/ticks_20260329.jsonl
Normal file
@@ -0,0 +1,144 @@
|
||||
{"tick_id": "20260329_000047", "timestamp": "2026-03-29T00:00:47.268361+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T00:00:47.349271+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260328_220019", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_001049", "timestamp": "2026-03-29T00:10:49.005076+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T00:05:49.004826+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260329_000047", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_002054", "timestamp": "2026-03-29T00:20:54.052918+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T00:20:54.051520+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260329_001049", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_003053", "timestamp": "2026-03-29T00:30:53.253691+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T00:30:53.252210+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260329_002054", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_004053", "timestamp": "2026-03-29T00:40:53.709560+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T00:40:53.708439+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260329_003053", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_005053", "timestamp": "2026-03-29T00:50:53.504637+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T00:45:52.079103+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 0}, "huey_alive": true}, "previous_tick": "20260329_004053", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_010052", "timestamp": "2026-03-29T01:00:52.779930+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T01:00:52.779478+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_005053", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_011051", "timestamp": "2026-03-29T01:10:51.372379+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T01:05:45.809574+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_010052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_012052", "timestamp": "2026-03-29T01:20:52.562029+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T01:15:48.679691+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_011051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_013128", "timestamp": "2026-03-29T01:31:28.790036+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "timed out", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T01:31:28.789231+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_011051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_014124", "timestamp": "2026-03-29T01:41:24.696827+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "timed out", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T01:41:24.695773+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_012052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_015123", "timestamp": "2026-03-29T01:51:23.869373+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "timed out", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T01:51:23.867991+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_013128", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_020127", "timestamp": "2026-03-29T02:01:27.114849+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "timed out", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T02:01:27.112614+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_014124", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_021118", "timestamp": "2026-03-29T02:11:18.106058+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "timed out", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T02:11:18.104828+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_015123", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_022119", "timestamp": "2026-03-29T02:21:19.275047+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "timed out", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T02:21:19.274179+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_020127", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_023124", "timestamp": "2026-03-29T02:31:24.379348+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "timed out", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T02:31:24.378390+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_021118", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_024103", "timestamp": "2026-03-29T02:41:03.156155+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T02:41:03.152274+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_022119", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_025120", "timestamp": "2026-03-29T02:51:20.080178+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "timed out", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T02:51:20.078904+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_023124", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_030129", "timestamp": "2026-03-29T03:01:29.975821+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "timed out", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T03:01:29.974194+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_024103", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_031058", "timestamp": "2026-03-29T03:10:58.220984+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "HTTP Error 500: Internal Server Error", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T03:10:58.220006+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_025120", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_032051", "timestamp": "2026-03-29T03:20:51.919474+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T03:16:35.048072+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_031058", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_033127", "timestamp": "2026-03-29T03:31:27.549685+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "timed out", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T03:31:27.549005+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_031058", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_034050", "timestamp": "2026-03-29T03:40:50.139230+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T03:40:50.138157+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_033127", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_035050", "timestamp": "2026-03-29T03:50:50.137608+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T03:45:53.249063+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_034050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_040052", "timestamp": "2026-03-29T04:00:52.279723+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T04:00:52.278536+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_035050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_041050", "timestamp": "2026-03-29T04:10:50.535306+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T04:10:50.534050+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_040052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_042049", "timestamp": "2026-03-29T04:20:49.361090+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T04:20:49.360389+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_041050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_043052", "timestamp": "2026-03-29T04:30:52.559635+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T04:30:52.558399+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_042049", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_044049", "timestamp": "2026-03-29T04:40:49.759114+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T04:40:49.757964+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_043052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_045051", "timestamp": "2026-03-29T04:50:51.928017+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T04:50:51.927287+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_044049", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_050049", "timestamp": "2026-03-29T05:00:49.260622+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T05:00:49.259781+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_045051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_051051", "timestamp": "2026-03-29T05:10:51.203889+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T05:10:51.203221+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_050049", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_052046", "timestamp": "2026-03-29T05:20:46.630173+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T05:20:46.629038+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_051051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_053051", "timestamp": "2026-03-29T05:30:51.116925+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T05:30:51.115661+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_052046", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_054045", "timestamp": "2026-03-29T05:40:45.844459+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T05:40:45.843563+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_053051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_055050", "timestamp": "2026-03-29T05:50:50.380579+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T05:50:50.379653+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_054045", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_060053", "timestamp": "2026-03-29T06:00:53.365684+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T06:00:53.364944+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_055050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_061046", "timestamp": "2026-03-29T06:10:46.489027+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T06:10:46.488248+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_060053", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_062049", "timestamp": "2026-03-29T06:20:49.272245+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T06:20:49.270995+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_061046", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_063052", "timestamp": "2026-03-29T06:30:52.920670+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T06:30:52.919949+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_062049", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_064050", "timestamp": "2026-03-29T06:40:50.242624+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T06:40:50.241497+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_063052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_065046", "timestamp": "2026-03-29T06:50:46.489528+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T06:50:46.488746+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_064050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_070052", "timestamp": "2026-03-29T07:00:52.585342+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T07:00:52.583798+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_065046", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_071050", "timestamp": "2026-03-29T07:10:50.449542+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T07:10:50.448897+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_070052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_072051", "timestamp": "2026-03-29T07:20:51.003487+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T07:20:51.002025+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_071050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_073053", "timestamp": "2026-03-29T07:30:53.250589+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T07:30:53.249824+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_072051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_074050", "timestamp": "2026-03-29T07:40:50.134194+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T07:40:50.133624+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_073053", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_075052", "timestamp": "2026-03-29T07:50:52.489418+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T07:50:52.488722+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_074050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_080050", "timestamp": "2026-03-29T08:00:50.445031+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T08:00:50.444243+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_075052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_081045", "timestamp": "2026-03-29T08:10:45.922898+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T08:10:45.921753+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_080050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_082046", "timestamp": "2026-03-29T08:20:46.966773+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T08:20:46.966215+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_081045", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_083051", "timestamp": "2026-03-29T08:30:51.119303+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T08:30:51.118609+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_082046", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_084045", "timestamp": "2026-03-29T08:40:45.648936+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T08:40:45.648404+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_083051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_085046", "timestamp": "2026-03-29T08:50:46.762843+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T08:50:46.762052+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_084045", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_090049", "timestamp": "2026-03-29T09:00:49.007464+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T09:00:49.006501+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_085046", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_091052", "timestamp": "2026-03-29T09:10:52.135924+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T09:10:52.135338+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_090049", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_092047", "timestamp": "2026-03-29T09:20:47.836938+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T09:20:47.836216+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_091052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_093051", "timestamp": "2026-03-29T09:30:51.136510+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T09:30:51.135887+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_092047", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_094052", "timestamp": "2026-03-29T09:40:52.578453+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T09:40:52.577467+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_093051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_095050", "timestamp": "2026-03-29T09:50:50.337969+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T09:50:50.337227+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_094052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_100054", "timestamp": "2026-03-29T10:00:54.029663+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T10:00:54.028661+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_095050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_101052", "timestamp": "2026-03-29T10:10:52.269437+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T10:10:52.268766+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_100054", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_102050", "timestamp": "2026-03-29T10:20:50.358078+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T10:20:50.357507+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_101052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_103051", "timestamp": "2026-03-29T10:30:51.618476+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T10:30:51.617274+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_102050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_104046", "timestamp": "2026-03-29T10:40:46.204094+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T10:40:46.203393+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_103051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_105051", "timestamp": "2026-03-29T10:50:51.545097+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T10:50:51.543811+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_104046", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_110048", "timestamp": "2026-03-29T11:00:48.341364+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T11:00:48.340697+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_105051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_111052", "timestamp": "2026-03-29T11:10:52.778431+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T11:10:52.777881+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_110048", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_112047", "timestamp": "2026-03-29T11:20:47.838652+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T11:20:47.837725+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_111052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_113051", "timestamp": "2026-03-29T11:30:51.076419+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T11:30:51.075568+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_112047", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_114052", "timestamp": "2026-03-29T11:40:52.776439+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T11:40:52.775819+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_113051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_115050", "timestamp": "2026-03-29T11:50:50.722627+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T11:50:50.721525+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_114052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_120053", "timestamp": "2026-03-29T12:00:53.972129+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T12:00:53.965071+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_115050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_121047", "timestamp": "2026-03-29T12:10:47.325442+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T12:10:47.324747+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_120053", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_122052", "timestamp": "2026-03-29T12:20:52.081197+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T12:20:52.080525+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_121047", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_123048", "timestamp": "2026-03-29T12:30:48.165754+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T12:30:48.165266+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_122052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_124050", "timestamp": "2026-03-29T12:40:50.085320+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T12:40:50.083893+00:00"}, "huey_alive": true}, "previous_tick": "20260329_123048", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_125046", "timestamp": "2026-03-29T12:50:46.978961+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T12:50:46.978073+00:00"}, "huey_alive": true}, "previous_tick": "20260329_124050", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_130118", "timestamp": "2026-03-29T13:01:18.233654+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "timed out", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T13:01:18.232585+00:00"}, "huey_alive": true}, "previous_tick": "20260329_124050", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_131044", "timestamp": "2026-03-29T13:10:44.877283+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T13:10:44.875969+00:00"}, "huey_alive": true}, "previous_tick": "20260329_125046", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_132115", "timestamp": "2026-03-29T13:21:15.287299+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "timed out", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T13:21:15.286590+00:00"}, "huey_alive": true}, "previous_tick": "20260329_130118", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_133057", "timestamp": "2026-03-29T13:30:57.765553+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "HTTP Error 500: Internal Server Error", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T13:30:57.764710+00:00"}, "huey_alive": true}, "previous_tick": "20260329_131044", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_134051", "timestamp": "2026-03-29T13:40:51.936046+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T13:40:51.934942+00:00"}, "huey_alive": true}, "previous_tick": "20260329_133057", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_135042", "timestamp": "2026-03-29T13:50:42.966936+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T13:50:42.966327+00:00"}, "huey_alive": true}, "previous_tick": "20260329_134051", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_140043", "timestamp": "2026-03-29T14:00:43.656081+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T14:00:43.655047+00:00"}, "huey_alive": true}, "previous_tick": "20260329_135042", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_141043", "timestamp": "2026-03-29T14:10:43.901226+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T14:10:43.899998+00:00"}, "huey_alive": true}, "previous_tick": "20260329_140043", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_142044", "timestamp": "2026-03-29T14:20:44.202755+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T14:20:44.202041+00:00"}, "huey_alive": true}, "previous_tick": "20260329_141043", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_143047", "timestamp": "2026-03-29T14:30:47.812768+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T14:30:47.812130+00:00"}, "huey_alive": true}, "previous_tick": "20260329_142044", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_144046", "timestamp": "2026-03-29T14:40:46.101958+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T14:40:46.100940+00:00"}, "huey_alive": true}, "previous_tick": "20260329_143047", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_145045", "timestamp": "2026-03-29T14:50:45.516665+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T14:50:45.515189+00:00"}, "huey_alive": true}, "previous_tick": "20260329_144046", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_150046", "timestamp": "2026-03-29T15:00:46.252644+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T15:00:46.251116+00:00"}, "huey_alive": true}, "previous_tick": "20260329_145045", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_151043", "timestamp": "2026-03-29T15:10:43.912551+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T15:10:43.911416+00:00"}, "huey_alive": true}, "previous_tick": "20260329_150046", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_152048", "timestamp": "2026-03-29T15:20:48.876762+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T15:20:48.875967+00:00"}, "gitea_error": "<urlopen error timed out>", "huey_alive": true}, "previous_tick": "20260329_151043", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_153050", "timestamp": "2026-03-29T15:30:50.984222+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T15:30:50.983166+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_152048", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_154052", "timestamp": "2026-03-29T15:40:52.701035+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T15:40:52.700525+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_153050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_155052", "timestamp": "2026-03-29T15:50:52.446169+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T15:50:52.445445+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_154052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_160051", "timestamp": "2026-03-29T16:00:51.346747+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T16:00:51.345997+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_155052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_161048", "timestamp": "2026-03-29T16:10:48.994555+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T16:10:48.993441+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_160051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_162050", "timestamp": "2026-03-29T16:20:50.322772+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T16:20:50.322249+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_161048", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_163050", "timestamp": "2026-03-29T16:30:50.194400+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T16:30:50.193848+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_162050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_164048", "timestamp": "2026-03-29T16:40:48.823231+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T16:40:48.822699+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_163050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_165049", "timestamp": "2026-03-29T16:50:49.591496+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T16:50:49.591012+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_164048", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_170048", "timestamp": "2026-03-29T17:00:48.748906+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T17:00:48.755951+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_165049", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_171048", "timestamp": "2026-03-29T17:10:48.996524+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T17:10:48.995861+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_170048", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_172050", "timestamp": "2026-03-29T17:20:50.043844+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T17:20:50.043082+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_171048", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_173049", "timestamp": "2026-03-29T17:30:49.947047+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T17:30:49.946126+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_172050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_174048", "timestamp": "2026-03-29T17:40:48.104653+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T17:40:48.104019+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_173049", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_175048", "timestamp": "2026-03-29T17:50:48.515294+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T17:50:48.514691+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_174048", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_180051", "timestamp": "2026-03-29T18:00:51.140168+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T18:00:51.139649+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_175048", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_181049", "timestamp": "2026-03-29T18:10:49.906007+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T18:10:49.905240+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_180051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_182048", "timestamp": "2026-03-29T18:20:48.631438+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T18:20:48.630012+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_181049", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_183051", "timestamp": "2026-03-29T18:30:51.579531+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T18:30:51.578457+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_182048", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_184052", "timestamp": "2026-03-29T18:40:52.717671+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T18:40:52.716931+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_183051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_185051", "timestamp": "2026-03-29T18:50:51.270034+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T18:50:51.269431+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_184052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_190055", "timestamp": "2026-03-29T19:00:55.902612+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T19:00:55.902064+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_185051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_191050", "timestamp": "2026-03-29T19:10:50.752992+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T19:10:50.752125+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_190055", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_192049", "timestamp": "2026-03-29T19:20:49.096668+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T19:20:49.096122+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_191050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_193048", "timestamp": "2026-03-29T19:30:48.311309+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T19:30:48.310778+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_192049", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_194046", "timestamp": "2026-03-29T19:40:46.390528+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T19:40:46.390059+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_193048", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_195047", "timestamp": "2026-03-29T19:50:47.647790+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T19:50:47.647060+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_194046", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_200049", "timestamp": "2026-03-29T20:00:49.608398+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T20:00:49.607996+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_195047", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_201047", "timestamp": "2026-03-29T20:10:47.731402+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T20:10:47.730141+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_200049", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_202050", "timestamp": "2026-03-29T20:20:50.391619+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T20:20:50.390364+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_201047", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_203050", "timestamp": "2026-03-29T20:30:50.937336+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T20:30:50.936832+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_202050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_204050", "timestamp": "2026-03-29T20:40:50.210924+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T20:40:50.210449+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_203050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_205050", "timestamp": "2026-03-29T20:50:50.654993+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T20:50:50.654182+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_204050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_210051", "timestamp": "2026-03-29T21:00:51.498967+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T21:00:51.498498+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_205050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_211050", "timestamp": "2026-03-29T21:10:50.530284+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T21:10:50.529150+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_210051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_212046", "timestamp": "2026-03-29T21:20:46.430509+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T21:20:46.429809+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_211050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_213050", "timestamp": "2026-03-29T21:30:50.848780+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T21:30:50.848278+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_212046", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_214049", "timestamp": "2026-03-29T21:40:49.300380+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T21:40:49.299744+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_213050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_215047", "timestamp": "2026-03-29T21:50:47.949719+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T21:50:47.949235+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_214049", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_220053", "timestamp": "2026-03-29T22:00:53.371908+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T22:00:53.371357+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_215047", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_221049", "timestamp": "2026-03-29T22:10:49.009386+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T22:10:49.008092+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_220053", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_222049", "timestamp": "2026-03-29T22:20:49.340917+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T22:20:49.340225+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_221049", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_223049", "timestamp": "2026-03-29T22:30:49.098165+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T22:30:49.097498+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_222049", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_224047", "timestamp": "2026-03-29T22:40:47.364007+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T22:40:47.363346+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_223049", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_225052", "timestamp": "2026-03-29T22:50:52.710783+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T22:50:52.710082+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_224047", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_230052", "timestamp": "2026-03-29T23:00:52.353776+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T23:00:52.353278+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_225052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_231049", "timestamp": "2026-03-29T23:10:49.853967+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T23:10:49.853420+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_230052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_232048", "timestamp": "2026-03-29T23:20:48.111256+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "api_responding": false, "error": "<urlopen error [Errno 61] Connection refused>", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T23:20:48.110246+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_231049", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_233049", "timestamp": "2026-03-29T23:30:49.348585+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T23:30:49.347522+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_232048", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_234048", "timestamp": "2026-03-29T23:40:48.606287+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T23:40:48.603410+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_233049", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260329_235050", "timestamp": "2026-03-29T23:50:50.333774+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-29T23:50:50.333180+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_234048", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
128
heartbeat/ticks_20260330.jsonl
Normal file
128
heartbeat/ticks_20260330.jsonl
Normal file
@@ -0,0 +1,128 @@
|
||||
{"tick_id": "20260330_000050", "timestamp": "2026-03-30T00:00:50.324696+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T00:00:50.323813+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260329_235050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_001051", "timestamp": "2026-03-30T00:10:51.668081+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T00:05:50.209984+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_000050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_002656", "timestamp": "2026-03-30T00:26:56.798733+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "timed out", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T00:26:56.797499+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_001051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_003556", "timestamp": "2026-03-30T00:35:56.534540+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T00:35:56.533609+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_001051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_004301", "timestamp": "2026-03-30T00:43:01.987648+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "timed out", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T00:43:01.986513+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_002656", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_005204", "timestamp": "2026-03-30T00:52:04.670801+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "timed out", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T00:52:04.669858+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_003556", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_010127", "timestamp": "2026-03-30T01:01:27.821283+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "timed out", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T01:01:27.817184+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_004301", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_011122", "timestamp": "2026-03-30T01:11:22.977080+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "timed out", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T01:11:22.975976+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_005204", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_012119", "timestamp": "2026-03-30T01:21:19.839552+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "timed out", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T01:21:19.839003+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_010127", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_013119", "timestamp": "2026-03-30T01:31:19.363403+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "timed out", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T01:31:19.362609+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_011122", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_014121", "timestamp": "2026-03-30T01:41:21.777017+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "timed out", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T01:41:21.775569+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_012119", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_015124", "timestamp": "2026-03-30T01:51:24.830216+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "timed out", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T01:51:24.828677+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_013119", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_020055", "timestamp": "2026-03-30T02:00:55.117846+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "timed out", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T01:56:53.208425+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_015124", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_021053", "timestamp": "2026-03-30T02:10:53.042368+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T02:05:46.309749+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_020055", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_022054", "timestamp": "2026-03-30T02:20:54.227046+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T02:15:45.471530+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_021053", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_023054", "timestamp": "2026-03-30T02:30:54.081845+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T02:30:54.080919+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_022054", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_024049", "timestamp": "2026-03-30T02:40:49.033938+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T02:40:49.032956+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_023054", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_025051", "timestamp": "2026-03-30T02:50:51.826443+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T02:45:51.852393+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_024049", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_030053", "timestamp": "2026-03-30T03:00:53.642452+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T02:55:50.284429+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_025051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_031053", "timestamp": "2026-03-30T03:10:53.011900+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T03:05:50.354323+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_030053", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_032051", "timestamp": "2026-03-30T03:20:51.139885+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T03:20:51.138605+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_031053", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_033054", "timestamp": "2026-03-30T03:30:54.908943+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T03:30:54.908136+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_032051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_034048", "timestamp": "2026-03-30T03:40:48.705946+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T03:40:48.705414+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_033054", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_035051", "timestamp": "2026-03-30T03:50:51.869245+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T03:50:51.868585+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_034048", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_040054", "timestamp": "2026-03-30T04:00:54.262087+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T04:00:54.261416+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_035051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_041048", "timestamp": "2026-03-30T04:10:48.596723+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T04:10:48.596059+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_040054", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_042051", "timestamp": "2026-03-30T04:20:51.492079+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T04:20:51.491514+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_041048", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_043052", "timestamp": "2026-03-30T04:30:52.335668+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T04:30:52.334650+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_042051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_044052", "timestamp": "2026-03-30T04:40:52.278827+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T04:40:52.392117+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_043052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_045050", "timestamp": "2026-03-30T04:50:50.201475+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T04:50:50.200921+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_044052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_050050", "timestamp": "2026-03-30T05:00:50.972840+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T04:55:49.155606+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_045050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_051051", "timestamp": "2026-03-30T05:10:51.700195+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T05:10:51.699660+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_050050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_052052", "timestamp": "2026-03-30T05:20:52.200296+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T05:20:52.199469+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_051051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_053054", "timestamp": "2026-03-30T05:30:54.360112+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T05:30:54.359488+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_052052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_054051", "timestamp": "2026-03-30T05:40:51.001568+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T05:40:51.000754+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_053054", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_055050", "timestamp": "2026-03-30T05:50:50.913779+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T05:50:50.912779+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_054051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_060054", "timestamp": "2026-03-30T06:00:54.400409+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T06:00:54.399454+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_055050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_061050", "timestamp": "2026-03-30T06:10:50.298286+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T06:10:50.297874+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_060054", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_062048", "timestamp": "2026-03-30T06:20:48.385992+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T06:20:48.385322+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_061050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_063053", "timestamp": "2026-03-30T06:30:53.511808+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T06:30:53.510990+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_062048", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_064048", "timestamp": "2026-03-30T06:40:48.549220+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T06:40:48.548661+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_063053", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_065048", "timestamp": "2026-03-30T06:50:48.336679+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T06:50:48.335277+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_064048", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_070051", "timestamp": "2026-03-30T07:00:51.026730+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T07:00:51.026054+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_065048", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_071052", "timestamp": "2026-03-30T07:10:52.164766+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T07:10:52.163761+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_070051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_072050", "timestamp": "2026-03-30T07:20:50.582588+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T07:20:50.581953+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_071052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_073051", "timestamp": "2026-03-30T07:30:51.746160+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T07:30:51.745737+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_072050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_074051", "timestamp": "2026-03-30T07:40:51.807160+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T07:40:51.806481+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_073051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_075049", "timestamp": "2026-03-30T07:50:49.611746+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T07:50:49.611169+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_074051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_080050", "timestamp": "2026-03-30T08:00:50.412683+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T08:00:50.532623+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_075049", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_081051", "timestamp": "2026-03-30T08:10:51.080694+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T08:05:50.906416+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_080050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_082048", "timestamp": "2026-03-30T08:20:48.813224+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T08:20:48.812692+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_081051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_083050", "timestamp": "2026-03-30T08:30:50.179506+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T08:30:50.178095+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_082048", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_084050", "timestamp": "2026-03-30T08:40:50.376594+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T08:40:50.404614+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_083050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_085047", "timestamp": "2026-03-30T08:50:47.989511+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T08:50:47.989023+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_084050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_090049", "timestamp": "2026-03-30T09:00:49.380746+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T09:00:49.379628+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_085047", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_091050", "timestamp": "2026-03-30T09:10:50.736210+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T09:10:50.735602+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_090049", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_092051", "timestamp": "2026-03-30T09:20:51.877981+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T09:20:52.009575+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_091050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_093052", "timestamp": "2026-03-30T09:30:52.195002+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T09:30:52.194194+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_092051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_094052", "timestamp": "2026-03-30T09:40:52.447941+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T09:35:52.527765+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_093052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_095050", "timestamp": "2026-03-30T09:50:50.277414+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T09:50:50.277020+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_094052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_100051", "timestamp": "2026-03-30T10:00:51.442364+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T10:00:51.441589+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_095050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_101051", "timestamp": "2026-03-30T10:10:51.671454+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T10:10:51.670297+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_100051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_102052", "timestamp": "2026-03-30T10:20:52.209194+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T10:20:52.208271+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_101051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_103052", "timestamp": "2026-03-30T10:30:52.914745+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T10:30:52.913697+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_102052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_104052", "timestamp": "2026-03-30T10:40:52.367866+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T10:40:52.366993+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_103052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_105050", "timestamp": "2026-03-30T10:50:50.287852+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T10:50:50.287280+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_104052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_110051", "timestamp": "2026-03-30T11:00:51.210857+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T11:00:51.209977+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_105050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_111051", "timestamp": "2026-03-30T11:10:51.408166+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T11:10:51.407731+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_110051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_112052", "timestamp": "2026-03-30T11:20:52.473912+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T11:20:52.566118+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_111051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_113053", "timestamp": "2026-03-30T11:30:53.449337+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T11:30:53.448488+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_112052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_114046", "timestamp": "2026-03-30T11:40:46.485678+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T11:40:46.485228+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_113053", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_115045", "timestamp": "2026-03-30T11:50:45.815898+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T11:50:45.814785+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_114046", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_120057", "timestamp": "2026-03-30T12:00:57.160804+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T12:00:57.160159+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_115045", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_121050", "timestamp": "2026-03-30T12:10:50.702986+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T12:05:43.958271+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_120057", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_122047", "timestamp": "2026-03-30T12:20:47.936666+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T12:20:47.935990+00:00"}, "huey_alive": true}, "previous_tick": "20260330_121050", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_123045", "timestamp": "2026-03-30T12:30:45.021270+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T12:30:45.020611+00:00"}, "huey_alive": true}, "previous_tick": "20260330_122047", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_124051", "timestamp": "2026-03-30T12:40:51.359863+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T12:35:44.401134+00:00"}, "huey_alive": true}, "previous_tick": "20260330_123045", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_125046", "timestamp": "2026-03-30T12:50:46.974648+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T12:50:46.973932+00:00"}, "huey_alive": true}, "previous_tick": "20260330_124051", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_130044", "timestamp": "2026-03-30T13:00:44.464571+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T13:00:44.463708+00:00"}, "huey_alive": true}, "previous_tick": "20260330_125046", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_131043", "timestamp": "2026-03-30T13:10:43.985793+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T13:10:43.984960+00:00"}, "huey_alive": true}, "previous_tick": "20260330_130044", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_132047", "timestamp": "2026-03-30T13:20:47.242305+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T13:20:47.241567+00:00"}, "huey_alive": true}, "previous_tick": "20260330_131043", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_133043", "timestamp": "2026-03-30T13:30:43.492506+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T13:25:46.523129+00:00"}, "huey_alive": true}, "previous_tick": "20260330_132047", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_134048", "timestamp": "2026-03-30T13:40:48.638592+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T13:40:48.638140+00:00"}, "huey_alive": true}, "previous_tick": "20260330_133043", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_135045", "timestamp": "2026-03-30T13:50:45.230155+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T13:50:45.229345+00:00"}, "huey_alive": true}, "previous_tick": "20260330_134048", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_140045", "timestamp": "2026-03-30T14:00:45.287519+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T14:00:45.286215+00:00"}, "huey_alive": true}, "previous_tick": "20260330_135045", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_141052", "timestamp": "2026-03-30T14:10:52.283424+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T14:10:52.282901+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_140045", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_142051", "timestamp": "2026-03-30T14:20:51.326581+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T14:20:51.326114+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_141052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_143123", "timestamp": "2026-03-30T14:31:23.774481+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T14:31:23.773730+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_142051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_144050", "timestamp": "2026-03-30T14:40:50.601735+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T14:40:50.600935+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_143123", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_145053", "timestamp": "2026-03-30T14:50:53.070327+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T14:50:53.069298+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_144050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_150054", "timestamp": "2026-03-30T15:00:54.480385+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T15:00:54.479420+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_145053", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_151052", "timestamp": "2026-03-30T15:10:52.561109+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T15:10:52.560582+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_150054", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_152047", "timestamp": "2026-03-30T15:20:47.835795+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T15:15:46.868305+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_151052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_153055", "timestamp": "2026-03-30T15:30:55.779632+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T15:30:55.779022+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_152047", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_154051", "timestamp": "2026-03-30T15:40:51.420483+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T15:40:51.419969+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_153055", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_155054", "timestamp": "2026-03-30T15:50:54.086366+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T15:50:54.085604+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_154051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_160057", "timestamp": "2026-03-30T16:00:57.003815+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T15:55:46.254668+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 0}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_155054", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_161050", "timestamp": "2026-03-30T16:10:50.721307+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T16:10:50.846748+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_160057", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_162051", "timestamp": "2026-03-30T16:20:51.069688+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T16:20:51.069066+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_161050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_163049", "timestamp": "2026-03-30T16:30:49.617731+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T16:30:49.616867+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_162051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_164048", "timestamp": "2026-03-30T16:40:48.392158+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T16:40:48.391478+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_163049", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_165049", "timestamp": "2026-03-30T16:50:49.156648+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T16:50:49.155847+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_164048", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_170050", "timestamp": "2026-03-30T17:00:50.648264+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T17:00:50.647500+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_165049", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_171051", "timestamp": "2026-03-30T17:10:51.371435+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T17:05:44.379389+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_170050", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_172052", "timestamp": "2026-03-30T17:20:52.862239+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T17:20:52.861339+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_171051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_173049", "timestamp": "2026-03-30T17:30:49.335251+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T17:30:49.334305+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_172052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_174052", "timestamp": "2026-03-30T17:40:52.044927+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T17:40:52.106060+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_173049", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_175049", "timestamp": "2026-03-30T17:50:49.866397+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T17:50:49.865677+00:00"}, "huey_alive": true}, "previous_tick": "20260330_174052", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_180045", "timestamp": "2026-03-30T18:00:45.663315+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T18:00:45.662194+00:00"}, "huey_alive": true}, "previous_tick": "20260330_175049", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_181045", "timestamp": "2026-03-30T18:10:45.877568+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T18:10:45.876908+00:00"}, "huey_alive": true}, "previous_tick": "20260330_180045", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_182046", "timestamp": "2026-03-30T18:20:46.888352+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T18:20:46.887844+00:00"}, "huey_alive": true}, "previous_tick": "20260330_181045", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_183048", "timestamp": "2026-03-30T18:30:48.246303+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T18:30:48.245784+00:00"}, "huey_alive": true}, "previous_tick": "20260330_182046", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_184043", "timestamp": "2026-03-30T18:40:43.814470+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T18:40:43.813980+00:00"}, "huey_alive": true}, "previous_tick": "20260330_183048", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_185044", "timestamp": "2026-03-30T18:50:44.641259+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T18:50:44.640601+00:00"}, "huey_alive": true}, "previous_tick": "20260330_184043", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_190045", "timestamp": "2026-03-30T19:00:45.886171+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T19:00:45.885048+00:00"}, "huey_alive": true}, "previous_tick": "20260330_185044", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_191046", "timestamp": "2026-03-30T19:10:46.744167+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T19:10:46.743719+00:00"}, "huey_alive": true}, "previous_tick": "20260330_190045", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_192047", "timestamp": "2026-03-30T19:20:47.752169+00:00", "perception": {"gitea_alive": false, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T19:20:47.751670+00:00"}, "huey_alive": true}, "previous_tick": "20260330_191046", "decision": {"actions": ["ALERT: Gitea unreachable"], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_193052", "timestamp": "2026-03-30T19:30:52.814333+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T19:30:52.813884+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_192047", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_194052", "timestamp": "2026-03-30T19:40:52.264130+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T19:40:52.263394+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_193052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_195048", "timestamp": "2026-03-30T19:50:48.138517+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": true, "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T19:50:48.137212+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_194052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_200123", "timestamp": "2026-03-30T20:01:23.969875+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "HTTP Error 500: Internal Server Error", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T20:01:23.969150+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_195048", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_201053", "timestamp": "2026-03-30T20:10:53.167102+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "HTTP Error 500: Internal Server Error", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T20:10:53.166350+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_200123", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_202047", "timestamp": "2026-03-30T20:20:47.637703+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "HTTP Error 500: Internal Server Error", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T20:20:47.637180+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_201053", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_203054", "timestamp": "2026-03-30T20:30:54.713939+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "HTTP Error 500: Internal Server Error", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T20:30:54.713371+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_202047", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_204051", "timestamp": "2026-03-30T20:40:51.384500+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "HTTP Error 500: Internal Server Error", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T20:40:51.383475+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_203054", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_205052", "timestamp": "2026-03-30T20:50:52.336832+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "HTTP Error 500: Internal Server Error", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T20:50:52.334956+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_204051", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_210049", "timestamp": "2026-03-30T21:00:49.340235+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "HTTP Error 500: Internal Server Error", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T21:00:49.339504+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_205052", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
{"tick_id": "20260330_211051", "timestamp": "2026-03-30T21:10:51.832983+00:00", "perception": {"gitea_alive": true, "model_health": {"provider": "local-llama.cpp", "provider_base_url": "http://localhost:8081/v1", "provider_model": "hermes4:14b", "local_inference_running": true, "models_loaded": ["NousResearch_Hermes-4-14B-Q4_K_M.gguf"], "api_responding": true, "inference_ok": false, "inference_error": "HTTP Error 500: Internal Server Error", "latest_session": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "latest_export": "session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json", "export_lag_minutes": 0, "export_fresh": true, "timestamp": "2026-03-30T21:10:51.831838+00:00"}, "Timmy_Foundation/the-nexus": {"open_issues": 1, "open_prs": 1}, "Timmy_Foundation/timmy-config": {"open_issues": 1, "open_prs": 1}, "huey_alive": true}, "previous_tick": "20260330_210049", "decision": {"actions": [], "severity": "fallback", "reasoning": "model unavailable, used hardcoded checks"}}
|
||||
@@ -139,3 +139,15 @@
|
||||
{"timestamp": "2026-03-28T01:30:25.326880+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "No module named 'firecrawl'", "success": false}
|
||||
{"timestamp": "2026-03-28T01:40:27.610642+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "No module named 'firecrawl'", "success": false}
|
||||
{"timestamp": "2026-03-28T01:50:27.669971+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "No module named 'firecrawl'", "success": false}
|
||||
{"timestamp": "2026-03-28T02:00:37.254311+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "No module named 'firecrawl'", "success": false}
|
||||
{"timestamp": "2026-03-28T02:10:26.583971+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "No module named 'firecrawl'", "success": false}
|
||||
{"timestamp": "2026-03-28T02:20:28.181773+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260327_222019_b45258", "success": true}
|
||||
{"timestamp": "2026-03-28T02:30:29.160467+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260327_223019_89639b", "success": true}
|
||||
{"timestamp": "2026-03-28T02:40:22.652453+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260327_224013_5b2e51", "success": true}
|
||||
{"timestamp": "2026-03-28T02:50:21.672494+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260327_225012_17bfbc", "success": true}
|
||||
{"timestamp": "2026-03-28T03:00:30.071123+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260327_230020_b296b1", "success": true}
|
||||
{"timestamp": "2026-03-28T03:10:24.530816+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260327_231014_745411", "success": true}
|
||||
{"timestamp": "2026-03-28T03:20:22.248605+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260327_232013_23f7e3", "success": true}
|
||||
{"timestamp": "2026-03-28T03:30:31.291732+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260327_233022_693ad9", "success": true}
|
||||
{"timestamp": "2026-03-28T03:40:20.984542+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260327_234011_116984", "success": true}
|
||||
{"timestamp": "2026-03-28T03:50:23.087271+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260327_235014_0a6196", "success": true}
|
||||
|
||||
106
metrics/local_20260328.jsonl
Normal file
106
metrics/local_20260328.jsonl
Normal file
@@ -0,0 +1,106 @@
|
||||
{"timestamp": "2026-03-28T04:00:28.836602+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_000019_22b033", "success": true}
|
||||
{"timestamp": "2026-03-28T04:10:20.998544+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_001011_abf441", "success": true}
|
||||
{"timestamp": "2026-03-28T04:15:09.903254+00:00", "model": "hermes4:14b", "caller": "know-thy-father-draft:batch_003", "prompt_len": 14420, "response_len": 4, "session_id": "20260328_001509_e59e21", "success": true}
|
||||
{"timestamp": "2026-03-28T04:20:18.607600+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_002009_3d9e43", "success": true}
|
||||
{"timestamp": "2026-03-28T04:30:26.684723+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_003017_0012cb", "success": true}
|
||||
{"timestamp": "2026-03-28T04:40:16.643917+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_004007_c56951", "success": true}
|
||||
{"timestamp": "2026-03-28T04:50:21.227187+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_005011_5bca94", "success": true}
|
||||
{"timestamp": "2026-03-28T05:00:23.376640+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_010014_4943f6", "success": true}
|
||||
{"timestamp": "2026-03-28T05:30:39.952946+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_013031_4a0e16", "success": true}
|
||||
{"timestamp": "2026-03-28T05:40:45.002335+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_014033_149aa3", "success": true}
|
||||
{"timestamp": "2026-03-28T05:50:44.808291+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_015035_f8d752", "success": true}
|
||||
{"timestamp": "2026-03-28T06:00:44.770244+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_020035_ed6665", "success": true}
|
||||
{"timestamp": "2026-03-28T06:10:43.182401+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_021034_a1379b", "success": true}
|
||||
{"timestamp": "2026-03-28T06:20:44.305535+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_022035_38f0a3", "success": true}
|
||||
{"timestamp": "2026-03-28T07:00:47.699137+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_030038_5eccbe", "success": true}
|
||||
{"timestamp": "2026-03-28T07:10:47.824188+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_031039_8b8594", "success": true}
|
||||
{"timestamp": "2026-03-28T07:20:49.570478+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_032041_537e50", "success": true}
|
||||
{"timestamp": "2026-03-28T08:01:15.385419+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_040105_bdc4b8", "success": true}
|
||||
{"timestamp": "2026-03-28T12:00:25.640844+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_080016_b22d05", "success": true}
|
||||
{"timestamp": "2026-03-28T12:10:23.773253+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_081015_c44dc8", "success": true}
|
||||
{"timestamp": "2026-03-28T12:15:08.036248+00:00", "model": "hermes4:14b", "caller": "know-thy-father-draft:batch_003", "prompt_len": 14420, "response_len": 4, "session_id": "20260328_081507_c2e178", "success": true}
|
||||
{"timestamp": "2026-03-28T12:20:23.505923+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_082014_06cad8", "success": true}
|
||||
{"timestamp": "2026-03-28T12:30:28.466845+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_083018_ada34b", "success": true}
|
||||
{"timestamp": "2026-03-28T12:40:22.249865+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_084013_37b1c0", "success": true}
|
||||
{"timestamp": "2026-03-28T12:50:18.909155+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_085008_169545", "success": true}
|
||||
{"timestamp": "2026-03-28T13:00:19.075744+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_090009_ad09cd", "success": true}
|
||||
{"timestamp": "2026-03-28T13:10:19.521366+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_091011_243326", "success": true}
|
||||
{"timestamp": "2026-03-28T13:20:23.905109+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_092014_e8e2a5", "success": true}
|
||||
{"timestamp": "2026-03-28T13:40:28.835045+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_094020_20caf4", "success": true}
|
||||
{"timestamp": "2026-03-28T13:50:28.428042+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_095019_bd6706", "success": true}
|
||||
{"timestamp": "2026-03-28T14:00:29.477099+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_100019_36d777", "success": true}
|
||||
{"timestamp": "2026-03-28T14:10:39.864437+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_101027_9fb280", "success": true}
|
||||
{"timestamp": "2026-03-28T14:20:36.286444+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_102024_352ff1", "success": true}
|
||||
{"timestamp": "2026-03-28T14:30:36.948487+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_103024_67f181", "success": true}
|
||||
{"timestamp": "2026-03-28T14:40:29.811950+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_104020_fdf0c3", "success": true}
|
||||
{"timestamp": "2026-03-28T14:50:35.217927+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_105024_1ca66d", "success": true}
|
||||
{"timestamp": "2026-03-28T15:00:30.691578+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_110021_f8574e", "success": true}
|
||||
{"timestamp": "2026-03-28T15:10:37.177519+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_111026_66399a", "success": true}
|
||||
{"timestamp": "2026-03-28T15:20:31.185930+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_112019_31c5b0", "success": true}
|
||||
{"timestamp": "2026-03-28T15:30:37.671479+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_113025_17316d", "success": true}
|
||||
{"timestamp": "2026-03-28T15:40:40.287334+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_114026_0db292", "success": true}
|
||||
{"timestamp": "2026-03-28T15:50:39.531228+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_115026_679e90", "success": true}
|
||||
{"timestamp": "2026-03-28T16:00:29.780559+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_120020_c2457a", "success": true}
|
||||
{"timestamp": "2026-03-28T16:10:41.894294+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_121026_7af551", "success": true}
|
||||
{"timestamp": "2026-03-28T16:15:21.114336+00:00", "model": "hermes4:14b", "caller": "know-thy-father-draft:batch_003", "prompt_len": 14420, "response_len": 4, "session_id": "20260328_121520_6b3ece", "success": true}
|
||||
{"timestamp": "2026-03-28T16:20:33.062743+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_122024_6c5bd1", "success": true}
|
||||
{"timestamp": "2026-03-28T16:30:33.503107+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_123024_15e2ee", "success": true}
|
||||
{"timestamp": "2026-03-28T16:40:27.023229+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_124018_26ca15", "success": true}
|
||||
{"timestamp": "2026-03-28T16:50:35.976434+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_125027_d58ec9", "success": true}
|
||||
{"timestamp": "2026-03-28T17:00:28.075600+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_130016_3d19b4", "success": true}
|
||||
{"timestamp": "2026-03-28T17:10:26.336292+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_131017_866481", "success": true}
|
||||
{"timestamp": "2026-03-28T17:20:24.616756+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_132015_6a8345", "success": true}
|
||||
{"timestamp": "2026-03-28T17:30:31.349425+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_133020_e9d53b", "success": true}
|
||||
{"timestamp": "2026-03-28T17:40:34.029092+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_134025_3993b9", "success": true}
|
||||
{"timestamp": "2026-03-28T17:50:27.886400+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_135019_7338c0", "success": true}
|
||||
{"timestamp": "2026-03-28T18:00:30.329409+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_140021_0551b8", "success": true}
|
||||
{"timestamp": "2026-03-28T18:10:29.078474+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_141020_f4d56e", "success": true}
|
||||
{"timestamp": "2026-03-28T18:20:29.859793+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_142021_6b036b", "success": true}
|
||||
{"timestamp": "2026-03-28T18:30:29.857516+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_143021_9cacf7", "success": true}
|
||||
{"timestamp": "2026-03-28T18:40:28.377272+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_144019_f666c1", "success": true}
|
||||
{"timestamp": "2026-03-28T18:50:27.712443+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_145019_b0b808", "success": true}
|
||||
{"timestamp": "2026-03-28T19:00:28.406291+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_150019_96c942", "success": true}
|
||||
{"timestamp": "2026-03-28T19:10:29.392418+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_151020_08cbab", "success": true}
|
||||
{"timestamp": "2026-03-28T19:20:33.740684+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_152021_0f77b6", "success": true}
|
||||
{"timestamp": "2026-03-28T19:30:32.316646+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_153023_f3ae55", "success": true}
|
||||
{"timestamp": "2026-03-28T19:40:31.310113+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_154022_9216a3", "success": true}
|
||||
{"timestamp": "2026-03-28T19:50:37.671102+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_155021_44c3ac", "success": true}
|
||||
{"timestamp": "2026-03-28T20:00:30.233365+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_160019_d66b5f", "success": true}
|
||||
{"timestamp": "2026-03-28T20:10:34.356662+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_161021_248236", "success": true}
|
||||
{"timestamp": "2026-03-28T20:15:13.702805+00:00", "model": "hermes4:14b", "caller": "know-thy-father-draft:batch_003", "prompt_len": 14420, "response_len": 4, "session_id": "20260328_161512_5a92c1", "success": true}
|
||||
{"timestamp": "2026-03-28T20:20:35.565038+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_162021_10ad91", "success": true}
|
||||
{"timestamp": "2026-03-28T20:30:32.328729+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1108, "response_len": 156, "session_id": "20260328_163023_2eafb6", "success": true}
|
||||
{"timestamp": "2026-03-28T20:46:20.025049+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 50, "session_id": "20260328_164023_c9f028", "success": true}
|
||||
{"timestamp": "2026-03-28T21:05:19.981430+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Command '['/Users/apayne/.hermes/hermes-agent/venv/bin/python3', '-c', '\\nimport io\\nimport json\\nimport sys\\nfrom contextlib import redirect_stderr, redirect_stdout\\nfrom pathlib import Path\\n\\nagent_dir = Path(sys.argv[1])\\nquery = sys.argv[2]\\nmodel = sys.argv[3]\\nsystem_prompt = sys.argv[4] or None\\ndisable_all_tools = sys.argv[5] == \"1\"\\nskip_context_files = sys.argv[6] == \"1\"\\nskip_memory = sys.argv[7] == \"1\"\\nmax_iterations = int(sys.argv[8])\\nif str(agent_dir) not in sys.path:\\n sys.path.insert(0, str(agent_dir))\\nfrom hermes_cli.runtime_provider import resolve_runtime_provider\\nfrom run_agent import AIAgent\\nfrom toolsets import get_all_toolsets\\n\\nbuf = io.StringIO()\\nerr = io.StringIO()\\npayload = {}\\nexit_code = 0\\n\\ntry:\\n runtime = resolve_runtime_provider()\\n kwargs = {\\n \"model\": model,\\n \"api_key\": runtime.get(\"api_key\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"provider\": runtime.get(\"provider\"),\\n \"api_mode\": runtime.get(\"api_mode\"),\\n \"acp_command\": runtime.get(\"command\"),\\n \"acp_args\": list(runtime.get(\"args\") or []),\\n \"max_iterations\": max_iterations,\\n \"quiet_mode\": True,\\n \"ephemeral_system_prompt\": system_prompt,\\n \"skip_context_files\": skip_context_files,\\n \"skip_memory\": skip_memory,\\n }\\n if disable_all_tools:\\n kwargs[\"disabled_toolsets\"] = sorted(get_all_toolsets().keys())\\n agent = AIAgent(**kwargs)\\n with redirect_stdout(buf), redirect_stderr(err):\\n result = agent.run_conversation(query, sync_honcho=False)\\n payload = {\\n \"response\": result.get(\"final_response\", \"\"),\\n \"session_id\": getattr(agent, \"session_id\", None),\\n \"provider\": runtime.get(\"provider\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\nexcept Exception as exc:\\n exit_code = 1\\n payload = {\\n \"error\": str(exc),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\n\\nprint(json.dumps(payload))\\nsys.exit(exit_code)\\n', '/Users/apayne/.hermes/hermes-agent', '[heartbeat_tick] System state at 2026-03-28T20:50:19.028973+00:00:\\n\\n{\\n \"gitea_alive\": true,\\n \"model_health\": {\\n \"provider\": \"local-llama.cpp\",\\n \"provider_base_url\": \"http://localhost:8081/v1\",\\n \"provider_model\": \"hermes4:14b\",\\n \"local_inference_running\": true,\\n \"models_loaded\": [\\n \"NousResearch_Hermes-4-14B-Q4_K_M.gguf\"\\n ],\\n \"api_responding\": true,\\n \"inference_ok\": true,\\n \"latest_session\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"latest_export\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"export_lag_minutes\": 0,\\n \"export_fresh\": true,\\n \"timestamp\": \"2026-03-28T20:45:19.605508+00:00\"\\n },\\n \"Timmy_Foundation/the-nexus\": {\\n \"open_issues\": 1,\\n \"open_prs\": 1\\n },\\n \"Timmy_Foundation/timmy-config\": {\\n \"open_issues\": 1,\\n \"open_prs\": 0\\n },\\n \"huey_alive\": true\\n}\\n\\nPrevious tick: 20260328_204020\\n\\nYou are the heartbeat monitor. Based on this state:\\n1. List any actions needed (alerts, restarts, escalations). Empty if all OK.\\n2. Rate severity: ok, warning, or critical.\\n3. One sentence of reasoning.\\n\\nRespond ONLY with JSON: {\"actions\": [], \"severity\": \"ok\", \"reasoning\": \"...\"}', 'hermes4:14b', '', '0', '0', '0', '30']' timed out after 900 seconds", "success": false}
|
||||
{"timestamp": "2026-03-28T21:11:05.384413+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1184, "response_len": 156, "session_id": "20260328_171056_a62a52", "success": true}
|
||||
{"timestamp": "2026-03-28T21:15:42.941260+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Command '['/Users/apayne/.hermes/hermes-agent/venv/bin/python3', '-c', '\\nimport io\\nimport json\\nimport sys\\nfrom contextlib import redirect_stderr, redirect_stdout\\nfrom pathlib import Path\\n\\nagent_dir = Path(sys.argv[1])\\nquery = sys.argv[2]\\nmodel = sys.argv[3]\\nsystem_prompt = sys.argv[4] or None\\ndisable_all_tools = sys.argv[5] == \"1\"\\nskip_context_files = sys.argv[6] == \"1\"\\nskip_memory = sys.argv[7] == \"1\"\\nmax_iterations = int(sys.argv[8])\\nif str(agent_dir) not in sys.path:\\n sys.path.insert(0, str(agent_dir))\\nfrom hermes_cli.runtime_provider import resolve_runtime_provider\\nfrom run_agent import AIAgent\\nfrom toolsets import get_all_toolsets\\n\\nbuf = io.StringIO()\\nerr = io.StringIO()\\npayload = {}\\nexit_code = 0\\n\\ntry:\\n runtime = resolve_runtime_provider()\\n kwargs = {\\n \"model\": model,\\n \"api_key\": runtime.get(\"api_key\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"provider\": runtime.get(\"provider\"),\\n \"api_mode\": runtime.get(\"api_mode\"),\\n \"acp_command\": runtime.get(\"command\"),\\n \"acp_args\": list(runtime.get(\"args\") or []),\\n \"max_iterations\": max_iterations,\\n \"quiet_mode\": True,\\n \"ephemeral_system_prompt\": system_prompt,\\n \"skip_context_files\": skip_context_files,\\n \"skip_memory\": skip_memory,\\n }\\n if disable_all_tools:\\n kwargs[\"disabled_toolsets\"] = sorted(get_all_toolsets().keys())\\n agent = AIAgent(**kwargs)\\n with redirect_stdout(buf), redirect_stderr(err):\\n result = agent.run_conversation(query, sync_honcho=False)\\n payload = {\\n \"response\": result.get(\"final_response\", \"\"),\\n \"session_id\": getattr(agent, \"session_id\", None),\\n \"provider\": runtime.get(\"provider\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\nexcept Exception as exc:\\n exit_code = 1\\n payload = {\\n \"error\": str(exc),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\n\\nprint(json.dumps(payload))\\nsys.exit(exit_code)\\n', '/Users/apayne/.hermes/hermes-agent', '[heartbeat_tick] System state at 2026-03-28T21:00:42.051135+00:00:\\n\\n{\\n \"gitea_alive\": true,\\n \"model_health\": {\\n \"provider\": \"local-llama.cpp\",\\n \"provider_base_url\": \"http://localhost:8081/v1\",\\n \"provider_model\": \"hermes4:14b\",\\n \"local_inference_running\": true,\\n \"models_loaded\": [\\n \"NousResearch_Hermes-4-14B-Q4_K_M.gguf\"\\n ],\\n \"api_responding\": true,\\n \"inference_ok\": true,\\n \"latest_session\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"latest_export\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"export_lag_minutes\": 0,\\n \"export_fresh\": true,\\n \"timestamp\": \"2026-03-28T21:00:42.049650+00:00\"\\n },\\n \"Timmy_Foundation/the-nexus\": {\\n \"open_issues\": 1,\\n \"open_prs\": 1\\n },\\n \"Timmy_Foundation/timmy-config\": {\\n \"open_issues\": 1,\\n \"open_prs\": 0\\n },\\n \"huey_alive\": true\\n}\\n\\nPrevious tick: 20260328_204020\\n\\nYou are the heartbeat monitor. Based on this state:\\n1. List any actions needed (alerts, restarts, escalations). Empty if all OK.\\n2. Rate severity: ok, warning, or critical.\\n3. One sentence of reasoning.\\n\\nRespond ONLY with JSON: {\"actions\": [], \"severity\": \"ok\", \"reasoning\": \"...\"}', 'hermes4:14b', '', '0', '0', '0', '30']' timed out after 900 seconds", "success": false}
|
||||
{"timestamp": "2026-03-28T21:20:28.566406+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_172019_9c132e", "success": true}
|
||||
{"timestamp": "2026-03-28T21:30:32.258753+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_173023_349771", "success": true}
|
||||
{"timestamp": "2026-03-28T21:40:32.086239+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_174023_d6938d", "success": true}
|
||||
{"timestamp": "2026-03-28T21:50:27.992068+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_175019_4a1703", "success": true}
|
||||
{"timestamp": "2026-03-28T22:00:33.243310+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_180023_e8d54a", "success": true}
|
||||
{"timestamp": "2026-03-29T00:01:02.133173+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_200050_091de2", "success": true}
|
||||
{"timestamp": "2026-03-29T00:11:04.904127+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_201051_8c2b4d", "success": true}
|
||||
{"timestamp": "2026-03-29T00:15:49.903005+00:00", "model": "hermes4:14b", "caller": "know-thy-father-draft:batch_003", "prompt_len": 14420, "response_len": 4, "session_id": "20260328_201549_786351", "success": true}
|
||||
{"timestamp": "2026-03-29T00:21:09.040084+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_202058_56de37", "success": true}
|
||||
{"timestamp": "2026-03-29T00:31:32.257976+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_203058_f16ef4", "success": true}
|
||||
{"timestamp": "2026-03-29T00:41:12.772662+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_204103_f0d25c", "success": true}
|
||||
{"timestamp": "2026-03-29T00:51:04.871236+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 4, "session_id": "20260328_205055_8b493b", "success": true}
|
||||
{"timestamp": "2026-03-29T01:01:04.484200+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 4, "session_id": "20260328_210055_9d3663", "success": true}
|
||||
{"timestamp": "2026-03-29T01:11:09.600650+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 156, "session_id": "20260328_211054_855615", "success": true}
|
||||
{"timestamp": "2026-03-29T01:35:53.525207+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Command '['/Users/apayne/.hermes/hermes-agent/venv/bin/python3', '-c', '\\nimport io\\nimport json\\nimport sys\\nfrom contextlib import redirect_stderr, redirect_stdout\\nfrom pathlib import Path\\n\\nagent_dir = Path(sys.argv[1])\\nquery = sys.argv[2]\\nmodel = sys.argv[3]\\nsystem_prompt = sys.argv[4] or None\\ndisable_all_tools = sys.argv[5] == \"1\"\\nskip_context_files = sys.argv[6] == \"1\"\\nskip_memory = sys.argv[7] == \"1\"\\nmax_iterations = int(sys.argv[8])\\nif str(agent_dir) not in sys.path:\\n sys.path.insert(0, str(agent_dir))\\nfrom hermes_cli.runtime_provider import resolve_runtime_provider\\nfrom run_agent import AIAgent\\nfrom toolsets import get_all_toolsets\\n\\nbuf = io.StringIO()\\nerr = io.StringIO()\\npayload = {}\\nexit_code = 0\\n\\ntry:\\n runtime = resolve_runtime_provider()\\n kwargs = {\\n \"model\": model,\\n \"api_key\": runtime.get(\"api_key\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"provider\": runtime.get(\"provider\"),\\n \"api_mode\": runtime.get(\"api_mode\"),\\n \"acp_command\": runtime.get(\"command\"),\\n \"acp_args\": list(runtime.get(\"args\") or []),\\n \"max_iterations\": max_iterations,\\n \"quiet_mode\": True,\\n \"ephemeral_system_prompt\": system_prompt,\\n \"skip_context_files\": skip_context_files,\\n \"skip_memory\": skip_memory,\\n }\\n if disable_all_tools:\\n kwargs[\"disabled_toolsets\"] = sorted(get_all_toolsets().keys())\\n agent = AIAgent(**kwargs)\\n with redirect_stdout(buf), redirect_stderr(err):\\n result = agent.run_conversation(query, sync_honcho=False)\\n payload = {\\n \"response\": result.get(\"final_response\", \"\"),\\n \"session_id\": getattr(agent, \"session_id\", None),\\n \"provider\": runtime.get(\"provider\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\nexcept Exception as exc:\\n exit_code = 1\\n payload = {\\n \"error\": str(exc),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\n\\nprint(json.dumps(payload))\\nsys.exit(exit_code)\\n', '/Users/apayne/.hermes/hermes-agent', '[heartbeat_tick] System state at 2026-03-29T01:20:52.562029+00:00:\\n\\n{\\n \"gitea_alive\": true,\\n \"model_health\": {\\n \"provider\": \"local-llama.cpp\",\\n \"provider_base_url\": \"http://localhost:8081/v1\",\\n \"provider_model\": \"hermes4:14b\",\\n \"local_inference_running\": true,\\n \"models_loaded\": [\\n \"NousResearch_Hermes-4-14B-Q4_K_M.gguf\"\\n ],\\n \"api_responding\": true,\\n \"inference_ok\": true,\\n \"latest_session\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"latest_export\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"export_lag_minutes\": 0,\\n \"export_fresh\": true,\\n \"timestamp\": \"2026-03-29T01:15:48.679691+00:00\"\\n },\\n \"Timmy_Foundation/the-nexus\": {\\n \"open_issues\": 1,\\n \"open_prs\": 0\\n },\\n \"Timmy_Foundation/timmy-config\": {\\n \"open_issues\": 1,\\n \"open_prs\": 1\\n },\\n \"huey_alive\": true\\n}\\n\\nPrevious tick: 20260329_011051\\n\\nYou are the heartbeat monitor. Based on this state:\\n1. List any actions needed (alerts, restarts, escalations). Empty if all OK.\\n2. Rate severity: ok, warning, or critical.\\n3. One sentence of reasoning.\\n\\nRespond ONLY with JSON: {\"actions\": [], \"severity\": \"ok\", \"reasoning\": \"...\"}', 'hermes4:14b', '', '0', '0', '0', '30']' timed out after 900 seconds", "success": false}
|
||||
{"timestamp": "2026-03-29T01:46:30.121756+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Command '['/Users/apayne/.hermes/hermes-agent/venv/bin/python3', '-c', '\\nimport io\\nimport json\\nimport sys\\nfrom contextlib import redirect_stderr, redirect_stdout\\nfrom pathlib import Path\\n\\nagent_dir = Path(sys.argv[1])\\nquery = sys.argv[2]\\nmodel = sys.argv[3]\\nsystem_prompt = sys.argv[4] or None\\ndisable_all_tools = sys.argv[5] == \"1\"\\nskip_context_files = sys.argv[6] == \"1\"\\nskip_memory = sys.argv[7] == \"1\"\\nmax_iterations = int(sys.argv[8])\\nif str(agent_dir) not in sys.path:\\n sys.path.insert(0, str(agent_dir))\\nfrom hermes_cli.runtime_provider import resolve_runtime_provider\\nfrom run_agent import AIAgent\\nfrom toolsets import get_all_toolsets\\n\\nbuf = io.StringIO()\\nerr = io.StringIO()\\npayload = {}\\nexit_code = 0\\n\\ntry:\\n runtime = resolve_runtime_provider()\\n kwargs = {\\n \"model\": model,\\n \"api_key\": runtime.get(\"api_key\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"provider\": runtime.get(\"provider\"),\\n \"api_mode\": runtime.get(\"api_mode\"),\\n \"acp_command\": runtime.get(\"command\"),\\n \"acp_args\": list(runtime.get(\"args\") or []),\\n \"max_iterations\": max_iterations,\\n \"quiet_mode\": True,\\n \"ephemeral_system_prompt\": system_prompt,\\n \"skip_context_files\": skip_context_files,\\n \"skip_memory\": skip_memory,\\n }\\n if disable_all_tools:\\n kwargs[\"disabled_toolsets\"] = sorted(get_all_toolsets().keys())\\n agent = AIAgent(**kwargs)\\n with redirect_stdout(buf), redirect_stderr(err):\\n result = agent.run_conversation(query, sync_honcho=False)\\n payload = {\\n \"response\": result.get(\"final_response\", \"\"),\\n \"session_id\": getattr(agent, \"session_id\", None),\\n \"provider\": runtime.get(\"provider\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\nexcept Exception as exc:\\n exit_code = 1\\n payload = {\\n \"error\": str(exc),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\n\\nprint(json.dumps(payload))\\nsys.exit(exit_code)\\n', '/Users/apayne/.hermes/hermes-agent', '[heartbeat_tick] System state at 2026-03-29T01:31:28.790036+00:00:\\n\\n{\\n \"gitea_alive\": true,\\n \"model_health\": {\\n \"provider\": \"local-llama.cpp\",\\n \"provider_base_url\": \"http://localhost:8081/v1\",\\n \"provider_model\": \"hermes4:14b\",\\n \"local_inference_running\": true,\\n \"models_loaded\": [\\n \"NousResearch_Hermes-4-14B-Q4_K_M.gguf\"\\n ],\\n \"api_responding\": true,\\n \"inference_ok\": false,\\n \"inference_error\": \"timed out\",\\n \"latest_session\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"latest_export\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"export_lag_minutes\": 0,\\n \"export_fresh\": true,\\n \"timestamp\": \"2026-03-29T01:31:28.789231+00:00\"\\n },\\n \"Timmy_Foundation/the-nexus\": {\\n \"open_issues\": 1,\\n \"open_prs\": 0\\n },\\n \"Timmy_Foundation/timmy-config\": {\\n \"open_issues\": 1,\\n \"open_prs\": 1\\n },\\n \"huey_alive\": true\\n}\\n\\nPrevious tick: 20260329_011051\\n\\nYou are the heartbeat monitor. Based on this state:\\n1. List any actions needed (alerts, restarts, escalations). Empty if all OK.\\n2. Rate severity: ok, warning, or critical.\\n3. One sentence of reasoning.\\n\\nRespond ONLY with JSON: {\"actions\": [], \"severity\": \"ok\", \"reasoning\": \"...\"}', 'hermes4:14b', '', '0', '0', '0', '30']' timed out after 900 seconds", "success": false}
|
||||
{"timestamp": "2026-03-29T01:56:25.853614+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Command '['/Users/apayne/.hermes/hermes-agent/venv/bin/python3', '-c', '\\nimport io\\nimport json\\nimport sys\\nfrom contextlib import redirect_stderr, redirect_stdout\\nfrom pathlib import Path\\n\\nagent_dir = Path(sys.argv[1])\\nquery = sys.argv[2]\\nmodel = sys.argv[3]\\nsystem_prompt = sys.argv[4] or None\\ndisable_all_tools = sys.argv[5] == \"1\"\\nskip_context_files = sys.argv[6] == \"1\"\\nskip_memory = sys.argv[7] == \"1\"\\nmax_iterations = int(sys.argv[8])\\nif str(agent_dir) not in sys.path:\\n sys.path.insert(0, str(agent_dir))\\nfrom hermes_cli.runtime_provider import resolve_runtime_provider\\nfrom run_agent import AIAgent\\nfrom toolsets import get_all_toolsets\\n\\nbuf = io.StringIO()\\nerr = io.StringIO()\\npayload = {}\\nexit_code = 0\\n\\ntry:\\n runtime = resolve_runtime_provider()\\n kwargs = {\\n \"model\": model,\\n \"api_key\": runtime.get(\"api_key\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"provider\": runtime.get(\"provider\"),\\n \"api_mode\": runtime.get(\"api_mode\"),\\n \"acp_command\": runtime.get(\"command\"),\\n \"acp_args\": list(runtime.get(\"args\") or []),\\n \"max_iterations\": max_iterations,\\n \"quiet_mode\": True,\\n \"ephemeral_system_prompt\": system_prompt,\\n \"skip_context_files\": skip_context_files,\\n \"skip_memory\": skip_memory,\\n }\\n if disable_all_tools:\\n kwargs[\"disabled_toolsets\"] = sorted(get_all_toolsets().keys())\\n agent = AIAgent(**kwargs)\\n with redirect_stdout(buf), redirect_stderr(err):\\n result = agent.run_conversation(query, sync_honcho=False)\\n payload = {\\n \"response\": result.get(\"final_response\", \"\"),\\n \"session_id\": getattr(agent, \"session_id\", None),\\n \"provider\": runtime.get(\"provider\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\nexcept Exception as exc:\\n exit_code = 1\\n payload = {\\n \"error\": str(exc),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\n\\nprint(json.dumps(payload))\\nsys.exit(exit_code)\\n', '/Users/apayne/.hermes/hermes-agent', '[heartbeat_tick] System state at 2026-03-29T01:41:24.696827+00:00:\\n\\n{\\n \"gitea_alive\": true,\\n \"model_health\": {\\n \"provider\": \"local-llama.cpp\",\\n \"provider_base_url\": \"http://localhost:8081/v1\",\\n \"provider_model\": \"hermes4:14b\",\\n \"local_inference_running\": true,\\n \"models_loaded\": [\\n \"NousResearch_Hermes-4-14B-Q4_K_M.gguf\"\\n ],\\n \"api_responding\": true,\\n \"inference_ok\": false,\\n \"inference_error\": \"timed out\",\\n \"latest_session\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"latest_export\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"export_lag_minutes\": 0,\\n \"export_fresh\": true,\\n \"timestamp\": \"2026-03-29T01:41:24.695773+00:00\"\\n },\\n \"Timmy_Foundation/the-nexus\": {\\n \"open_issues\": 1,\\n \"open_prs\": 0\\n },\\n \"Timmy_Foundation/timmy-config\": {\\n \"open_issues\": 1,\\n \"open_prs\": 1\\n },\\n \"huey_alive\": true\\n}\\n\\nPrevious tick: 20260329_012052\\n\\nYou are the heartbeat monitor. Based on this state:\\n1. List any actions needed (alerts, restarts, escalations). Empty if all OK.\\n2. Rate severity: ok, warning, or critical.\\n3. One sentence of reasoning.\\n\\nRespond ONLY with JSON: {\"actions\": [], \"severity\": \"ok\", \"reasoning\": \"...\"}', 'hermes4:14b', '', '0', '0', '0', '30']' timed out after 900 seconds", "success": false}
|
||||
{"timestamp": "2026-03-29T02:06:24.875836+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Command '['/Users/apayne/.hermes/hermes-agent/venv/bin/python3', '-c', '\\nimport io\\nimport json\\nimport sys\\nfrom contextlib import redirect_stderr, redirect_stdout\\nfrom pathlib import Path\\n\\nagent_dir = Path(sys.argv[1])\\nquery = sys.argv[2]\\nmodel = sys.argv[3]\\nsystem_prompt = sys.argv[4] or None\\ndisable_all_tools = sys.argv[5] == \"1\"\\nskip_context_files = sys.argv[6] == \"1\"\\nskip_memory = sys.argv[7] == \"1\"\\nmax_iterations = int(sys.argv[8])\\nif str(agent_dir) not in sys.path:\\n sys.path.insert(0, str(agent_dir))\\nfrom hermes_cli.runtime_provider import resolve_runtime_provider\\nfrom run_agent import AIAgent\\nfrom toolsets import get_all_toolsets\\n\\nbuf = io.StringIO()\\nerr = io.StringIO()\\npayload = {}\\nexit_code = 0\\n\\ntry:\\n runtime = resolve_runtime_provider()\\n kwargs = {\\n \"model\": model,\\n \"api_key\": runtime.get(\"api_key\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"provider\": runtime.get(\"provider\"),\\n \"api_mode\": runtime.get(\"api_mode\"),\\n \"acp_command\": runtime.get(\"command\"),\\n \"acp_args\": list(runtime.get(\"args\") or []),\\n \"max_iterations\": max_iterations,\\n \"quiet_mode\": True,\\n \"ephemeral_system_prompt\": system_prompt,\\n \"skip_context_files\": skip_context_files,\\n \"skip_memory\": skip_memory,\\n }\\n if disable_all_tools:\\n kwargs[\"disabled_toolsets\"] = sorted(get_all_toolsets().keys())\\n agent = AIAgent(**kwargs)\\n with redirect_stdout(buf), redirect_stderr(err):\\n result = agent.run_conversation(query, sync_honcho=False)\\n payload = {\\n \"response\": result.get(\"final_response\", \"\"),\\n \"session_id\": getattr(agent, \"session_id\", None),\\n \"provider\": runtime.get(\"provider\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\nexcept Exception as exc:\\n exit_code = 1\\n payload = {\\n \"error\": str(exc),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\n\\nprint(json.dumps(payload))\\nsys.exit(exit_code)\\n', '/Users/apayne/.hermes/hermes-agent', '[heartbeat_tick] System state at 2026-03-29T01:51:23.869373+00:00:\\n\\n{\\n \"gitea_alive\": true,\\n \"model_health\": {\\n \"provider\": \"local-llama.cpp\",\\n \"provider_base_url\": \"http://localhost:8081/v1\",\\n \"provider_model\": \"hermes4:14b\",\\n \"local_inference_running\": true,\\n \"models_loaded\": [\\n \"NousResearch_Hermes-4-14B-Q4_K_M.gguf\"\\n ],\\n \"api_responding\": true,\\n \"inference_ok\": false,\\n \"inference_error\": \"timed out\",\\n \"latest_session\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"latest_export\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"export_lag_minutes\": 0,\\n \"export_fresh\": true,\\n \"timestamp\": \"2026-03-29T01:51:23.867991+00:00\"\\n },\\n \"Timmy_Foundation/the-nexus\": {\\n \"open_issues\": 1,\\n \"open_prs\": 0\\n },\\n \"Timmy_Foundation/timmy-config\": {\\n \"open_issues\": 1,\\n \"open_prs\": 1\\n },\\n \"huey_alive\": true\\n}\\n\\nPrevious tick: 20260329_013128\\n\\nYou are the heartbeat monitor. Based on this state:\\n1. List any actions needed (alerts, restarts, escalations). Empty if all OK.\\n2. Rate severity: ok, warning, or critical.\\n3. One sentence of reasoning.\\n\\nRespond ONLY with JSON: {\"actions\": [], \"severity\": \"ok\", \"reasoning\": \"...\"}', 'hermes4:14b', '', '0', '0', '0', '30']' timed out after 900 seconds", "success": false}
|
||||
{"timestamp": "2026-03-29T02:16:28.172624+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Command '['/Users/apayne/.hermes/hermes-agent/venv/bin/python3', '-c', '\\nimport io\\nimport json\\nimport sys\\nfrom contextlib import redirect_stderr, redirect_stdout\\nfrom pathlib import Path\\n\\nagent_dir = Path(sys.argv[1])\\nquery = sys.argv[2]\\nmodel = sys.argv[3]\\nsystem_prompt = sys.argv[4] or None\\ndisable_all_tools = sys.argv[5] == \"1\"\\nskip_context_files = sys.argv[6] == \"1\"\\nskip_memory = sys.argv[7] == \"1\"\\nmax_iterations = int(sys.argv[8])\\nif str(agent_dir) not in sys.path:\\n sys.path.insert(0, str(agent_dir))\\nfrom hermes_cli.runtime_provider import resolve_runtime_provider\\nfrom run_agent import AIAgent\\nfrom toolsets import get_all_toolsets\\n\\nbuf = io.StringIO()\\nerr = io.StringIO()\\npayload = {}\\nexit_code = 0\\n\\ntry:\\n runtime = resolve_runtime_provider()\\n kwargs = {\\n \"model\": model,\\n \"api_key\": runtime.get(\"api_key\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"provider\": runtime.get(\"provider\"),\\n \"api_mode\": runtime.get(\"api_mode\"),\\n \"acp_command\": runtime.get(\"command\"),\\n \"acp_args\": list(runtime.get(\"args\") or []),\\n \"max_iterations\": max_iterations,\\n \"quiet_mode\": True,\\n \"ephemeral_system_prompt\": system_prompt,\\n \"skip_context_files\": skip_context_files,\\n \"skip_memory\": skip_memory,\\n }\\n if disable_all_tools:\\n kwargs[\"disabled_toolsets\"] = sorted(get_all_toolsets().keys())\\n agent = AIAgent(**kwargs)\\n with redirect_stdout(buf), redirect_stderr(err):\\n result = agent.run_conversation(query, sync_honcho=False)\\n payload = {\\n \"response\": result.get(\"final_response\", \"\"),\\n \"session_id\": getattr(agent, \"session_id\", None),\\n \"provider\": runtime.get(\"provider\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\nexcept Exception as exc:\\n exit_code = 1\\n payload = {\\n \"error\": str(exc),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\n\\nprint(json.dumps(payload))\\nsys.exit(exit_code)\\n', '/Users/apayne/.hermes/hermes-agent', '[heartbeat_tick] System state at 2026-03-29T02:01:27.114849+00:00:\\n\\n{\\n \"gitea_alive\": true,\\n \"model_health\": {\\n \"provider\": \"local-llama.cpp\",\\n \"provider_base_url\": \"http://localhost:8081/v1\",\\n \"provider_model\": \"hermes4:14b\",\\n \"local_inference_running\": true,\\n \"models_loaded\": [\\n \"NousResearch_Hermes-4-14B-Q4_K_M.gguf\"\\n ],\\n \"api_responding\": true,\\n \"inference_ok\": false,\\n \"inference_error\": \"timed out\",\\n \"latest_session\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"latest_export\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"export_lag_minutes\": 0,\\n \"export_fresh\": true,\\n \"timestamp\": \"2026-03-29T02:01:27.112614+00:00\"\\n },\\n \"Timmy_Foundation/the-nexus\": {\\n \"open_issues\": 1,\\n \"open_prs\": 0\\n },\\n \"Timmy_Foundation/timmy-config\": {\\n \"open_issues\": 1,\\n \"open_prs\": 1\\n },\\n \"huey_alive\": true\\n}\\n\\nPrevious tick: 20260329_014124\\n\\nYou are the heartbeat monitor. Based on this state:\\n1. List any actions needed (alerts, restarts, escalations). Empty if all OK.\\n2. Rate severity: ok, warning, or critical.\\n3. One sentence of reasoning.\\n\\nRespond ONLY with JSON: {\"actions\": [], \"severity\": \"ok\", \"reasoning\": \"...\"}', 'hermes4:14b', '', '0', '0', '0', '30']' timed out after 900 seconds", "success": false}
|
||||
{"timestamp": "2026-03-29T02:26:19.116347+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Command '['/Users/apayne/.hermes/hermes-agent/venv/bin/python3', '-c', '\\nimport io\\nimport json\\nimport sys\\nfrom contextlib import redirect_stderr, redirect_stdout\\nfrom pathlib import Path\\n\\nagent_dir = Path(sys.argv[1])\\nquery = sys.argv[2]\\nmodel = sys.argv[3]\\nsystem_prompt = sys.argv[4] or None\\ndisable_all_tools = sys.argv[5] == \"1\"\\nskip_context_files = sys.argv[6] == \"1\"\\nskip_memory = sys.argv[7] == \"1\"\\nmax_iterations = int(sys.argv[8])\\nif str(agent_dir) not in sys.path:\\n sys.path.insert(0, str(agent_dir))\\nfrom hermes_cli.runtime_provider import resolve_runtime_provider\\nfrom run_agent import AIAgent\\nfrom toolsets import get_all_toolsets\\n\\nbuf = io.StringIO()\\nerr = io.StringIO()\\npayload = {}\\nexit_code = 0\\n\\ntry:\\n runtime = resolve_runtime_provider()\\n kwargs = {\\n \"model\": model,\\n \"api_key\": runtime.get(\"api_key\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"provider\": runtime.get(\"provider\"),\\n \"api_mode\": runtime.get(\"api_mode\"),\\n \"acp_command\": runtime.get(\"command\"),\\n \"acp_args\": list(runtime.get(\"args\") or []),\\n \"max_iterations\": max_iterations,\\n \"quiet_mode\": True,\\n \"ephemeral_system_prompt\": system_prompt,\\n \"skip_context_files\": skip_context_files,\\n \"skip_memory\": skip_memory,\\n }\\n if disable_all_tools:\\n kwargs[\"disabled_toolsets\"] = sorted(get_all_toolsets().keys())\\n agent = AIAgent(**kwargs)\\n with redirect_stdout(buf), redirect_stderr(err):\\n result = agent.run_conversation(query, sync_honcho=False)\\n payload = {\\n \"response\": result.get(\"final_response\", \"\"),\\n \"session_id\": getattr(agent, \"session_id\", None),\\n \"provider\": runtime.get(\"provider\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\nexcept Exception as exc:\\n exit_code = 1\\n payload = {\\n \"error\": str(exc),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\n\\nprint(json.dumps(payload))\\nsys.exit(exit_code)\\n', '/Users/apayne/.hermes/hermes-agent', '[heartbeat_tick] System state at 2026-03-29T02:11:18.106058+00:00:\\n\\n{\\n \"gitea_alive\": true,\\n \"model_health\": {\\n \"provider\": \"local-llama.cpp\",\\n \"provider_base_url\": \"http://localhost:8081/v1\",\\n \"provider_model\": \"hermes4:14b\",\\n \"local_inference_running\": true,\\n \"models_loaded\": [\\n \"NousResearch_Hermes-4-14B-Q4_K_M.gguf\"\\n ],\\n \"api_responding\": true,\\n \"inference_ok\": false,\\n \"inference_error\": \"timed out\",\\n \"latest_session\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"latest_export\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"export_lag_minutes\": 0,\\n \"export_fresh\": true,\\n \"timestamp\": \"2026-03-29T02:11:18.104828+00:00\"\\n },\\n \"Timmy_Foundation/the-nexus\": {\\n \"open_issues\": 1,\\n \"open_prs\": 0\\n },\\n \"Timmy_Foundation/timmy-config\": {\\n \"open_issues\": 1,\\n \"open_prs\": 1\\n },\\n \"huey_alive\": true\\n}\\n\\nPrevious tick: 20260329_015123\\n\\nYou are the heartbeat monitor. Based on this state:\\n1. List any actions needed (alerts, restarts, escalations). Empty if all OK.\\n2. Rate severity: ok, warning, or critical.\\n3. One sentence of reasoning.\\n\\nRespond ONLY with JSON: {\"actions\": [], \"severity\": \"ok\", \"reasoning\": \"...\"}', 'hermes4:14b', '', '0', '0', '0', '30']' timed out after 900 seconds", "success": false}
|
||||
{"timestamp": "2026-03-29T02:36:20.343886+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Command '['/Users/apayne/.hermes/hermes-agent/venv/bin/python3', '-c', '\\nimport io\\nimport json\\nimport sys\\nfrom contextlib import redirect_stderr, redirect_stdout\\nfrom pathlib import Path\\n\\nagent_dir = Path(sys.argv[1])\\nquery = sys.argv[2]\\nmodel = sys.argv[3]\\nsystem_prompt = sys.argv[4] or None\\ndisable_all_tools = sys.argv[5] == \"1\"\\nskip_context_files = sys.argv[6] == \"1\"\\nskip_memory = sys.argv[7] == \"1\"\\nmax_iterations = int(sys.argv[8])\\nif str(agent_dir) not in sys.path:\\n sys.path.insert(0, str(agent_dir))\\nfrom hermes_cli.runtime_provider import resolve_runtime_provider\\nfrom run_agent import AIAgent\\nfrom toolsets import get_all_toolsets\\n\\nbuf = io.StringIO()\\nerr = io.StringIO()\\npayload = {}\\nexit_code = 0\\n\\ntry:\\n runtime = resolve_runtime_provider()\\n kwargs = {\\n \"model\": model,\\n \"api_key\": runtime.get(\"api_key\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"provider\": runtime.get(\"provider\"),\\n \"api_mode\": runtime.get(\"api_mode\"),\\n \"acp_command\": runtime.get(\"command\"),\\n \"acp_args\": list(runtime.get(\"args\") or []),\\n \"max_iterations\": max_iterations,\\n \"quiet_mode\": True,\\n \"ephemeral_system_prompt\": system_prompt,\\n \"skip_context_files\": skip_context_files,\\n \"skip_memory\": skip_memory,\\n }\\n if disable_all_tools:\\n kwargs[\"disabled_toolsets\"] = sorted(get_all_toolsets().keys())\\n agent = AIAgent(**kwargs)\\n with redirect_stdout(buf), redirect_stderr(err):\\n result = agent.run_conversation(query, sync_honcho=False)\\n payload = {\\n \"response\": result.get(\"final_response\", \"\"),\\n \"session_id\": getattr(agent, \"session_id\", None),\\n \"provider\": runtime.get(\"provider\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\nexcept Exception as exc:\\n exit_code = 1\\n payload = {\\n \"error\": str(exc),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\n\\nprint(json.dumps(payload))\\nsys.exit(exit_code)\\n', '/Users/apayne/.hermes/hermes-agent', '[heartbeat_tick] System state at 2026-03-29T02:21:19.275047+00:00:\\n\\n{\\n \"gitea_alive\": true,\\n \"model_health\": {\\n \"provider\": \"local-llama.cpp\",\\n \"provider_base_url\": \"http://localhost:8081/v1\",\\n \"provider_model\": \"hermes4:14b\",\\n \"local_inference_running\": true,\\n \"models_loaded\": [\\n \"NousResearch_Hermes-4-14B-Q4_K_M.gguf\"\\n ],\\n \"api_responding\": true,\\n \"inference_ok\": false,\\n \"inference_error\": \"timed out\",\\n \"latest_session\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"latest_export\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"export_lag_minutes\": 0,\\n \"export_fresh\": true,\\n \"timestamp\": \"2026-03-29T02:21:19.274179+00:00\"\\n },\\n \"Timmy_Foundation/the-nexus\": {\\n \"open_issues\": 1,\\n \"open_prs\": 0\\n },\\n \"Timmy_Foundation/timmy-config\": {\\n \"open_issues\": 1,\\n \"open_prs\": 1\\n },\\n \"huey_alive\": true\\n}\\n\\nPrevious tick: 20260329_020127\\n\\nYou are the heartbeat monitor. Based on this state:\\n1. List any actions needed (alerts, restarts, escalations). Empty if all OK.\\n2. Rate severity: ok, warning, or critical.\\n3. One sentence of reasoning.\\n\\nRespond ONLY with JSON: {\"actions\": [], \"severity\": \"ok\", \"reasoning\": \"...\"}', 'hermes4:14b', '', '0', '0', '0', '30']' timed out after 900 seconds", "success": false}
|
||||
{"timestamp": "2026-03-29T02:46:25.696293+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Command '['/Users/apayne/.hermes/hermes-agent/venv/bin/python3', '-c', '\\nimport io\\nimport json\\nimport sys\\nfrom contextlib import redirect_stderr, redirect_stdout\\nfrom pathlib import Path\\n\\nagent_dir = Path(sys.argv[1])\\nquery = sys.argv[2]\\nmodel = sys.argv[3]\\nsystem_prompt = sys.argv[4] or None\\ndisable_all_tools = sys.argv[5] == \"1\"\\nskip_context_files = sys.argv[6] == \"1\"\\nskip_memory = sys.argv[7] == \"1\"\\nmax_iterations = int(sys.argv[8])\\nif str(agent_dir) not in sys.path:\\n sys.path.insert(0, str(agent_dir))\\nfrom hermes_cli.runtime_provider import resolve_runtime_provider\\nfrom run_agent import AIAgent\\nfrom toolsets import get_all_toolsets\\n\\nbuf = io.StringIO()\\nerr = io.StringIO()\\npayload = {}\\nexit_code = 0\\n\\ntry:\\n runtime = resolve_runtime_provider()\\n kwargs = {\\n \"model\": model,\\n \"api_key\": runtime.get(\"api_key\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"provider\": runtime.get(\"provider\"),\\n \"api_mode\": runtime.get(\"api_mode\"),\\n \"acp_command\": runtime.get(\"command\"),\\n \"acp_args\": list(runtime.get(\"args\") or []),\\n \"max_iterations\": max_iterations,\\n \"quiet_mode\": True,\\n \"ephemeral_system_prompt\": system_prompt,\\n \"skip_context_files\": skip_context_files,\\n \"skip_memory\": skip_memory,\\n }\\n if disable_all_tools:\\n kwargs[\"disabled_toolsets\"] = sorted(get_all_toolsets().keys())\\n agent = AIAgent(**kwargs)\\n with redirect_stdout(buf), redirect_stderr(err):\\n result = agent.run_conversation(query, sync_honcho=False)\\n payload = {\\n \"response\": result.get(\"final_response\", \"\"),\\n \"session_id\": getattr(agent, \"session_id\", None),\\n \"provider\": runtime.get(\"provider\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\nexcept Exception as exc:\\n exit_code = 1\\n payload = {\\n \"error\": str(exc),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\n\\nprint(json.dumps(payload))\\nsys.exit(exit_code)\\n', '/Users/apayne/.hermes/hermes-agent', '[heartbeat_tick] System state at 2026-03-29T02:31:24.379348+00:00:\\n\\n{\\n \"gitea_alive\": true,\\n \"model_health\": {\\n \"provider\": \"local-llama.cpp\",\\n \"provider_base_url\": \"http://localhost:8081/v1\",\\n \"provider_model\": \"hermes4:14b\",\\n \"local_inference_running\": true,\\n \"models_loaded\": [\\n \"NousResearch_Hermes-4-14B-Q4_K_M.gguf\"\\n ],\\n \"api_responding\": true,\\n \"inference_ok\": false,\\n \"inference_error\": \"timed out\",\\n \"latest_session\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"latest_export\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"export_lag_minutes\": 0,\\n \"export_fresh\": true,\\n \"timestamp\": \"2026-03-29T02:31:24.378390+00:00\"\\n },\\n \"Timmy_Foundation/the-nexus\": {\\n \"open_issues\": 1,\\n \"open_prs\": 0\\n },\\n \"Timmy_Foundation/timmy-config\": {\\n \"open_issues\": 1,\\n \"open_prs\": 1\\n },\\n \"huey_alive\": true\\n}\\n\\nPrevious tick: 20260329_021118\\n\\nYou are the heartbeat monitor. Based on this state:\\n1. List any actions needed (alerts, restarts, escalations). Empty if all OK.\\n2. Rate severity: ok, warning, or critical.\\n3. One sentence of reasoning.\\n\\nRespond ONLY with JSON: {\"actions\": [], \"severity\": \"ok\", \"reasoning\": \"...\"}', 'hermes4:14b', '', '0', '0', '0', '30']' timed out after 900 seconds", "success": false}
|
||||
{"timestamp": "2026-03-29T02:56:04.650965+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Command '['/Users/apayne/.hermes/hermes-agent/venv/bin/python3', '-c', '\\nimport io\\nimport json\\nimport sys\\nfrom contextlib import redirect_stderr, redirect_stdout\\nfrom pathlib import Path\\n\\nagent_dir = Path(sys.argv[1])\\nquery = sys.argv[2]\\nmodel = sys.argv[3]\\nsystem_prompt = sys.argv[4] or None\\ndisable_all_tools = sys.argv[5] == \"1\"\\nskip_context_files = sys.argv[6] == \"1\"\\nskip_memory = sys.argv[7] == \"1\"\\nmax_iterations = int(sys.argv[8])\\nif str(agent_dir) not in sys.path:\\n sys.path.insert(0, str(agent_dir))\\nfrom hermes_cli.runtime_provider import resolve_runtime_provider\\nfrom run_agent import AIAgent\\nfrom toolsets import get_all_toolsets\\n\\nbuf = io.StringIO()\\nerr = io.StringIO()\\npayload = {}\\nexit_code = 0\\n\\ntry:\\n runtime = resolve_runtime_provider()\\n kwargs = {\\n \"model\": model,\\n \"api_key\": runtime.get(\"api_key\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"provider\": runtime.get(\"provider\"),\\n \"api_mode\": runtime.get(\"api_mode\"),\\n \"acp_command\": runtime.get(\"command\"),\\n \"acp_args\": list(runtime.get(\"args\") or []),\\n \"max_iterations\": max_iterations,\\n \"quiet_mode\": True,\\n \"ephemeral_system_prompt\": system_prompt,\\n \"skip_context_files\": skip_context_files,\\n \"skip_memory\": skip_memory,\\n }\\n if disable_all_tools:\\n kwargs[\"disabled_toolsets\"] = sorted(get_all_toolsets().keys())\\n agent = AIAgent(**kwargs)\\n with redirect_stdout(buf), redirect_stderr(err):\\n result = agent.run_conversation(query, sync_honcho=False)\\n payload = {\\n \"response\": result.get(\"final_response\", \"\"),\\n \"session_id\": getattr(agent, \"session_id\", None),\\n \"provider\": runtime.get(\"provider\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\nexcept Exception as exc:\\n exit_code = 1\\n payload = {\\n \"error\": str(exc),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\n\\nprint(json.dumps(payload))\\nsys.exit(exit_code)\\n', '/Users/apayne/.hermes/hermes-agent', '[heartbeat_tick] System state at 2026-03-29T02:41:03.156155+00:00:\\n\\n{\\n \"gitea_alive\": true,\\n \"model_health\": {\\n \"provider\": \"local-llama.cpp\",\\n \"provider_base_url\": \"http://localhost:8081/v1\",\\n \"provider_model\": \"hermes4:14b\",\\n \"local_inference_running\": true,\\n \"models_loaded\": [\\n \"NousResearch_Hermes-4-14B-Q4_K_M.gguf\"\\n ],\\n \"api_responding\": true,\\n \"inference_ok\": true,\\n \"latest_session\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"latest_export\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"export_lag_minutes\": 0,\\n \"export_fresh\": true,\\n \"timestamp\": \"2026-03-29T02:41:03.152274+00:00\"\\n },\\n \"Timmy_Foundation/the-nexus\": {\\n \"open_issues\": 1,\\n \"open_prs\": 0\\n },\\n \"Timmy_Foundation/timmy-config\": {\\n \"open_issues\": 1,\\n \"open_prs\": 1\\n },\\n \"huey_alive\": true\\n}\\n\\nPrevious tick: 20260329_022119\\n\\nYou are the heartbeat monitor. Based on this state:\\n1. List any actions needed (alerts, restarts, escalations). Empty if all OK.\\n2. Rate severity: ok, warning, or critical.\\n3. One sentence of reasoning.\\n\\nRespond ONLY with JSON: {\"actions\": [], \"severity\": \"ok\", \"reasoning\": \"...\"}', 'hermes4:14b', '', '0', '0', '0', '30']' timed out after 900 seconds", "success": false}
|
||||
{"timestamp": "2026-03-29T03:06:21.086672+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Command '['/Users/apayne/.hermes/hermes-agent/venv/bin/python3', '-c', '\\nimport io\\nimport json\\nimport sys\\nfrom contextlib import redirect_stderr, redirect_stdout\\nfrom pathlib import Path\\n\\nagent_dir = Path(sys.argv[1])\\nquery = sys.argv[2]\\nmodel = sys.argv[3]\\nsystem_prompt = sys.argv[4] or None\\ndisable_all_tools = sys.argv[5] == \"1\"\\nskip_context_files = sys.argv[6] == \"1\"\\nskip_memory = sys.argv[7] == \"1\"\\nmax_iterations = int(sys.argv[8])\\nif str(agent_dir) not in sys.path:\\n sys.path.insert(0, str(agent_dir))\\nfrom hermes_cli.runtime_provider import resolve_runtime_provider\\nfrom run_agent import AIAgent\\nfrom toolsets import get_all_toolsets\\n\\nbuf = io.StringIO()\\nerr = io.StringIO()\\npayload = {}\\nexit_code = 0\\n\\ntry:\\n runtime = resolve_runtime_provider()\\n kwargs = {\\n \"model\": model,\\n \"api_key\": runtime.get(\"api_key\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"provider\": runtime.get(\"provider\"),\\n \"api_mode\": runtime.get(\"api_mode\"),\\n \"acp_command\": runtime.get(\"command\"),\\n \"acp_args\": list(runtime.get(\"args\") or []),\\n \"max_iterations\": max_iterations,\\n \"quiet_mode\": True,\\n \"ephemeral_system_prompt\": system_prompt,\\n \"skip_context_files\": skip_context_files,\\n \"skip_memory\": skip_memory,\\n }\\n if disable_all_tools:\\n kwargs[\"disabled_toolsets\"] = sorted(get_all_toolsets().keys())\\n agent = AIAgent(**kwargs)\\n with redirect_stdout(buf), redirect_stderr(err):\\n result = agent.run_conversation(query, sync_honcho=False)\\n payload = {\\n \"response\": result.get(\"final_response\", \"\"),\\n \"session_id\": getattr(agent, \"session_id\", None),\\n \"provider\": runtime.get(\"provider\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\nexcept Exception as exc:\\n exit_code = 1\\n payload = {\\n \"error\": str(exc),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\n\\nprint(json.dumps(payload))\\nsys.exit(exit_code)\\n', '/Users/apayne/.hermes/hermes-agent', '[heartbeat_tick] System state at 2026-03-29T02:51:20.080178+00:00:\\n\\n{\\n \"gitea_alive\": true,\\n \"model_health\": {\\n \"provider\": \"local-llama.cpp\",\\n \"provider_base_url\": \"http://localhost:8081/v1\",\\n \"provider_model\": \"hermes4:14b\",\\n \"local_inference_running\": true,\\n \"models_loaded\": [\\n \"NousResearch_Hermes-4-14B-Q4_K_M.gguf\"\\n ],\\n \"api_responding\": true,\\n \"inference_ok\": false,\\n \"inference_error\": \"timed out\",\\n \"latest_session\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"latest_export\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"export_lag_minutes\": 0,\\n \"export_fresh\": true,\\n \"timestamp\": \"2026-03-29T02:51:20.078904+00:00\"\\n },\\n \"Timmy_Foundation/the-nexus\": {\\n \"open_issues\": 1,\\n \"open_prs\": 0\\n },\\n \"Timmy_Foundation/timmy-config\": {\\n \"open_issues\": 1,\\n \"open_prs\": 1\\n },\\n \"huey_alive\": true\\n}\\n\\nPrevious tick: 20260329_023124\\n\\nYou are the heartbeat monitor. Based on this state:\\n1. List any actions needed (alerts, restarts, escalations). Empty if all OK.\\n2. Rate severity: ok, warning, or critical.\\n3. One sentence of reasoning.\\n\\nRespond ONLY with JSON: {\"actions\": [], \"severity\": \"ok\", \"reasoning\": \"...\"}', 'hermes4:14b', '', '0', '0', '0', '30']' timed out after 900 seconds", "success": false}
|
||||
{"timestamp": "2026-03-29T03:16:32.259405+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Command '['/Users/apayne/.hermes/hermes-agent/venv/bin/python3', '-c', '\\nimport io\\nimport json\\nimport sys\\nfrom contextlib import redirect_stderr, redirect_stdout\\nfrom pathlib import Path\\n\\nagent_dir = Path(sys.argv[1])\\nquery = sys.argv[2]\\nmodel = sys.argv[3]\\nsystem_prompt = sys.argv[4] or None\\ndisable_all_tools = sys.argv[5] == \"1\"\\nskip_context_files = sys.argv[6] == \"1\"\\nskip_memory = sys.argv[7] == \"1\"\\nmax_iterations = int(sys.argv[8])\\nif str(agent_dir) not in sys.path:\\n sys.path.insert(0, str(agent_dir))\\nfrom hermes_cli.runtime_provider import resolve_runtime_provider\\nfrom run_agent import AIAgent\\nfrom toolsets import get_all_toolsets\\n\\nbuf = io.StringIO()\\nerr = io.StringIO()\\npayload = {}\\nexit_code = 0\\n\\ntry:\\n runtime = resolve_runtime_provider()\\n kwargs = {\\n \"model\": model,\\n \"api_key\": runtime.get(\"api_key\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"provider\": runtime.get(\"provider\"),\\n \"api_mode\": runtime.get(\"api_mode\"),\\n \"acp_command\": runtime.get(\"command\"),\\n \"acp_args\": list(runtime.get(\"args\") or []),\\n \"max_iterations\": max_iterations,\\n \"quiet_mode\": True,\\n \"ephemeral_system_prompt\": system_prompt,\\n \"skip_context_files\": skip_context_files,\\n \"skip_memory\": skip_memory,\\n }\\n if disable_all_tools:\\n kwargs[\"disabled_toolsets\"] = sorted(get_all_toolsets().keys())\\n agent = AIAgent(**kwargs)\\n with redirect_stdout(buf), redirect_stderr(err):\\n result = agent.run_conversation(query, sync_honcho=False)\\n payload = {\\n \"response\": result.get(\"final_response\", \"\"),\\n \"session_id\": getattr(agent, \"session_id\", None),\\n \"provider\": runtime.get(\"provider\"),\\n \"base_url\": runtime.get(\"base_url\"),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\nexcept Exception as exc:\\n exit_code = 1\\n payload = {\\n \"error\": str(exc),\\n \"stdout\": buf.getvalue(),\\n \"stderr\": err.getvalue(),\\n }\\n\\nprint(json.dumps(payload))\\nsys.exit(exit_code)\\n', '/Users/apayne/.hermes/hermes-agent', '[heartbeat_tick] System state at 2026-03-29T03:01:29.975821+00:00:\\n\\n{\\n \"gitea_alive\": true,\\n \"model_health\": {\\n \"provider\": \"local-llama.cpp\",\\n \"provider_base_url\": \"http://localhost:8081/v1\",\\n \"provider_model\": \"hermes4:14b\",\\n \"local_inference_running\": true,\\n \"models_loaded\": [\\n \"NousResearch_Hermes-4-14B-Q4_K_M.gguf\"\\n ],\\n \"api_responding\": true,\\n \"inference_ok\": false,\\n \"inference_error\": \"timed out\",\\n \"latest_session\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"latest_export\": \"session_d8c25163-9934-4ab2-9158-ff18a31e30f5.json\",\\n \"export_lag_minutes\": 0,\\n \"export_fresh\": true,\\n \"timestamp\": \"2026-03-29T03:01:29.974194+00:00\"\\n },\\n \"Timmy_Foundation/the-nexus\": {\\n \"open_issues\": 1,\\n \"open_prs\": 0\\n },\\n \"Timmy_Foundation/timmy-config\": {\\n \"open_issues\": 1,\\n \"open_prs\": 1\\n },\\n \"huey_alive\": true\\n}\\n\\nPrevious tick: 20260329_024103\\n\\nYou are the heartbeat monitor. Based on this state:\\n1. List any actions needed (alerts, restarts, escalations). Empty if all OK.\\n2. Rate severity: ok, warning, or critical.\\n3. One sentence of reasoning.\\n\\nRespond ONLY with JSON: {\"actions\": [], \"severity\": \"ok\", \"reasoning\": \"...\"}', 'hermes4:14b', '', '0', '0', '0', '30']' timed out after 900 seconds", "success": false}
|
||||
{"timestamp": "2026-03-29T03:20:44.574247+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1212, "response_len": 0, "session_id": null, "success": false}
|
||||
{"timestamp": "2026-03-29T03:35:32.278451+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 0, "session_id": null, "success": false}
|
||||
{"timestamp": "2026-03-29T03:38:19.796365+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1184, "response_len": 0, "session_id": null, "success": false}
|
||||
{"timestamp": "2026-03-29T03:48:26.988957+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 0, "session_id": null, "success": false}
|
||||
{"timestamp": "2026-03-29T03:52:42.402185+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 50, "session_id": "20260328_235053_00546d", "success": true}
|
||||
151
metrics/local_20260329.jsonl
Normal file
151
metrics/local_20260329.jsonl
Normal file
File diff suppressed because one or more lines are too long
109
metrics/local_20260330.jsonl
Normal file
109
metrics/local_20260330.jsonl
Normal file
@@ -0,0 +1,109 @@
|
||||
{"timestamp": "2026-03-30T04:00:57.144544+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T04:10:51.282517+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T04:15:50.287621+00:00", "model": "hermes4:14b", "caller": "know-thy-father-draft:batch_003", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T04:20:54.061668+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T04:30:55.041018+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T04:40:54.959876+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T04:50:52.987211+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T05:00:53.824294+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T05:10:54.468481+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T05:20:54.850349+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T05:30:57.118847+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T05:40:53.606158+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T05:50:53.435230+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T06:00:57.539329+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T06:10:53.118485+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T06:20:51.021081+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T06:30:56.309974+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T06:40:51.538440+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T06:50:51.256355+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T07:00:53.971437+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T07:10:55.016077+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T07:20:53.305603+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T07:30:54.539763+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T07:40:54.360751+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T07:50:52.152878+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T08:00:53.255273+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T08:10:53.784253+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T08:15:50.446677+00:00", "model": "hermes4:14b", "caller": "know-thy-father-draft:batch_003", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T08:20:51.626750+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T08:30:53.145099+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T08:40:53.071010+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T08:50:50.805473+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T09:00:52.342820+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T09:10:53.417210+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T09:20:54.640372+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T09:30:55.180337+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T09:40:55.407860+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T09:50:52.812917+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T10:00:54.386251+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T10:10:54.212760+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T10:20:54.794606+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T10:30:55.642903+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T10:40:54.844469+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T10:50:52.871714+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T11:00:53.997585+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T11:10:54.487429+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T11:20:55.329834+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T11:30:56.190734+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T11:40:49.272411+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T11:50:48.520552+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T12:01:04.022985+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T12:10:53.445990+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T12:15:49.749213+00:00", "model": "hermes4:14b", "caller": "know-thy-father-draft:batch_003", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T12:20:49.841085+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T12:30:46.969502+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T12:40:53.327765+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T12:50:48.858522+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T13:00:46.323082+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T13:10:45.683703+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T13:20:49.130462+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T13:30:45.397588+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T13:40:50.559690+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T13:50:47.143009+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T14:00:47.218781+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T14:10:56.306374+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "error": "Unknown provider 'local'.", "success": false}
|
||||
{"timestamp": "2026-03-30T14:20:56.382431+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 4, "session_id": "20260330_102054_5ce707", "success": true}
|
||||
{"timestamp": "2026-03-30T14:31:41.296939+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 4, "session_id": "20260330_103132_3f7455", "success": true}
|
||||
{"timestamp": "2026-03-30T14:41:04.545213+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 4, "session_id": "20260330_104100_cb4b61", "success": true}
|
||||
{"timestamp": "2026-03-30T14:50:59.361120+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 4, "session_id": "20260330_105058_b4f0f9", "success": true}
|
||||
{"timestamp": "2026-03-30T15:01:00.007825+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 4, "session_id": "20260330_110058_a4b3db", "success": true}
|
||||
{"timestamp": "2026-03-30T15:10:58.357807+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 4, "session_id": "20260330_111056_b3a2b1", "success": true}
|
||||
{"timestamp": "2026-03-30T15:21:24.895310+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 0, "session_id": "20260330_112050_c2a24e", "success": false}
|
||||
{"timestamp": "2026-03-30T15:31:01.142317+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 4, "session_id": "20260330_113059_346b02", "success": true}
|
||||
{"timestamp": "2026-03-30T15:40:55.794024+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 4, "session_id": "20260330_114054_154487", "success": true}
|
||||
{"timestamp": "2026-03-30T15:50:58.653078+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 4, "session_id": "20260330_115057_408dd6", "success": true}
|
||||
{"timestamp": "2026-03-30T16:01:03.500379+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 4, "session_id": "20260330_120101_15ca1b", "success": true}
|
||||
{"timestamp": "2026-03-30T16:10:56.088307+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 4, "session_id": "20260330_121053_67c547", "success": true}
|
||||
{"timestamp": "2026-03-30T16:15:51.641013+00:00", "model": "hermes4:14b", "caller": "know-thy-father-draft:batch_003", "prompt_len": 14436, "response_len": 4, "session_id": "20260330_121549_5a4dfd", "success": true}
|
||||
{"timestamp": "2026-03-30T16:20:56.526788+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 4, "session_id": "20260330_122054_5658b1", "success": true}
|
||||
{"timestamp": "2026-03-30T16:30:55.343966+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 4, "session_id": "20260330_123053_8f87c9", "success": true}
|
||||
{"timestamp": "2026-03-30T16:40:54.577545+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 4, "session_id": "20260330_124053_8b3ccd", "success": true}
|
||||
{"timestamp": "2026-03-30T16:50:54.244428+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 4, "session_id": "20260330_125052_491a7a", "success": true}
|
||||
{"timestamp": "2026-03-30T17:00:54.850151+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 4, "session_id": "20260330_130053_e402ba", "success": true}
|
||||
{"timestamp": "2026-03-30T17:10:56.336259+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 4, "session_id": "20260330_131054_e3b87e", "success": true}
|
||||
{"timestamp": "2026-03-30T17:20:59.493711+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 4, "session_id": "20260330_132056_7a5c35", "success": true}
|
||||
{"timestamp": "2026-03-30T17:30:55.190002+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 4, "session_id": "20260330_133052_18991a", "success": true}
|
||||
{"timestamp": "2026-03-30T17:40:56.452953+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 4, "session_id": "20260330_134055_7ed5c8", "success": true}
|
||||
{"timestamp": "2026-03-30T18:00:06.757677+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 987, "response_len": 50, "session_id": "20260330_135052_bd9a31", "success": true}
|
||||
{"timestamp": "2026-03-30T18:10:02.745671+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 987, "response_len": 50, "session_id": "20260330_140047_11c5ee", "success": true}
|
||||
{"timestamp": "2026-03-30T18:20:02.857340+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 987, "response_len": 50, "session_id": "20260330_141047_a2721e", "success": true}
|
||||
{"timestamp": "2026-03-30T18:30:04.164070+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 987, "response_len": 50, "session_id": "20260330_142049_337f52", "success": true}
|
||||
{"timestamp": "2026-03-30T18:40:05.487470+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 987, "response_len": 50, "session_id": "20260330_143050_fe3630", "success": true}
|
||||
{"timestamp": "2026-03-30T18:50:00.499747+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 987, "response_len": 50, "session_id": "20260330_144045_8b6e08", "success": true}
|
||||
{"timestamp": "2026-03-30T19:00:01.273842+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 987, "response_len": 50, "session_id": "20260330_145046_29f5c2", "success": true}
|
||||
{"timestamp": "2026-03-30T19:10:02.605213+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 987, "response_len": 50, "session_id": "20260330_150048_28e2e7", "success": true}
|
||||
{"timestamp": "2026-03-30T19:20:03.585655+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 987, "response_len": 50, "session_id": "20260330_151048_f1360e", "success": true}
|
||||
{"timestamp": "2026-03-30T19:27:55.610449+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 987, "response_len": 4, "session_id": "20260330_152049_18f99f", "success": true}
|
||||
{"timestamp": "2026-03-30T19:30:58.095091+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 4, "session_id": "20260330_153056_87151c", "success": true}
|
||||
{"timestamp": "2026-03-30T19:40:59.358254+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 4, "session_id": "20260330_154058_c34996", "success": true}
|
||||
{"timestamp": "2026-03-30T19:50:55.790869+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1147, "response_len": 4, "session_id": "20260330_155054_0c423b", "success": true}
|
||||
{"timestamp": "2026-03-30T20:01:32.841197+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1212, "response_len": 4, "session_id": "20260330_160128_4250dd", "success": true}
|
||||
{"timestamp": "2026-03-30T20:10:59.615282+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1212, "response_len": 4, "session_id": "20260330_161057_16b2a9", "success": true}
|
||||
{"timestamp": "2026-03-30T20:15:57.956606+00:00", "model": "hermes4:14b", "caller": "know-thy-father-draft:batch_003", "prompt_len": 14436, "response_len": 4, "session_id": "20260330_161549_81ccb5", "success": true}
|
||||
{"timestamp": "2026-03-30T20:20:52.718315+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1212, "response_len": 4, "session_id": "20260330_162051_6dbcc4", "success": true}
|
||||
{"timestamp": "2026-03-30T20:31:01.769126+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1212, "response_len": 4, "session_id": "20260330_163100_568c7a", "success": true}
|
||||
{"timestamp": "2026-03-30T20:40:56.743919+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1212, "response_len": 4, "session_id": "20260330_164055_6dc9de", "success": true}
|
||||
{"timestamp": "2026-03-30T20:50:57.732986+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1212, "response_len": 4, "session_id": "20260330_165056_b3de38", "success": true}
|
||||
{"timestamp": "2026-03-30T21:00:55.744431+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1212, "response_len": 4, "session_id": "20260330_170054_d75d04", "success": true}
|
||||
{"timestamp": "2026-03-30T21:10:58.113031+00:00", "model": "hermes4:14b", "caller": "heartbeat_tick", "prompt_len": 1212, "response_len": 4, "session_id": "20260330_171056_fba24d", "success": true}
|
||||
@@ -31,13 +31,15 @@ from mcp.types import Tool, TextContent
|
||||
|
||||
OPENMW_LOG = os.path.expanduser("~/Library/Preferences/openmw/openmw.log")
|
||||
SCREENSHOT_DIR = os.path.expanduser("~/.timmy/morrowind/screenshots")
|
||||
OPENMW_BIN = "/Applications/OpenMW.app/Contents/MacOS/openmw"
|
||||
OPENMW_SAVES_DIR = os.path.expanduser("~/Library/Application Support/openmw/saves")
|
||||
os.makedirs(SCREENSHOT_DIR, exist_ok=True)
|
||||
|
||||
# CGEvent key codes
|
||||
KEYCODES = {
|
||||
"w": 13, "a": 0, "s": 1, "d": 2,
|
||||
"space": 49, "escape": 53, "return": 36,
|
||||
"e": 14, "r": 15, "f": 3, "q": 12,
|
||||
"e": 14, "r": 15, "t": 17, "f": 3, "q": 12,
|
||||
"tab": 48, "1": 18, "2": 19, "3": 20, "4": 21,
|
||||
"5": 23, "6": 22, "7": 26, "8": 28, "9": 25,
|
||||
"f5": 96, "f9": 101, # quicksave / quickload
|
||||
@@ -117,6 +119,120 @@ def get_game_status():
|
||||
}
|
||||
|
||||
|
||||
def focus_openmw():
|
||||
"""Bring OpenMW to the front if it's running."""
|
||||
subprocess.run(
|
||||
[
|
||||
"osascript",
|
||||
"-e",
|
||||
'tell application "System Events" to set frontmost of process "openmw" to true',
|
||||
],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
)
|
||||
time.sleep(0.5)
|
||||
|
||||
|
||||
def find_savegame(selector=None):
|
||||
"""Find a savegame path.
|
||||
|
||||
selector:
|
||||
- None / "latest" => newest .omwsave under the OpenMW saves tree
|
||||
- absolute path => use directly if it exists
|
||||
- other string => case-insensitive basename substring match, newest first
|
||||
"""
|
||||
if selector and os.path.isabs(selector) and os.path.exists(selector):
|
||||
return selector
|
||||
|
||||
candidates = []
|
||||
for root, _dirs, files in os.walk(OPENMW_SAVES_DIR):
|
||||
for fname in files:
|
||||
if fname.endswith(".omwsave"):
|
||||
path = os.path.join(root, fname)
|
||||
try:
|
||||
mtime = os.path.getmtime(path)
|
||||
except OSError:
|
||||
continue
|
||||
candidates.append((mtime, path))
|
||||
|
||||
if not candidates:
|
||||
return None
|
||||
|
||||
candidates.sort(reverse=True)
|
||||
|
||||
if not selector or str(selector).strip().lower() == "latest":
|
||||
return candidates[0][1]
|
||||
|
||||
selector_lower = str(selector).strip().lower()
|
||||
for _mtime, path in candidates:
|
||||
if selector_lower in os.path.basename(path).lower():
|
||||
return path
|
||||
|
||||
return None
|
||||
|
||||
|
||||
def launch_openmw(save=None, new_game=False, wait_for_pid=15.0):
|
||||
"""Launch OpenMW directly into a save or new game sequence."""
|
||||
status = get_game_status()
|
||||
if status["running"]:
|
||||
focus_openmw()
|
||||
return {
|
||||
"launched": False,
|
||||
"already_running": True,
|
||||
"pid": status["pid"],
|
||||
"save": None,
|
||||
"new_game": False,
|
||||
"message": "OpenMW is already running; focused existing game window.",
|
||||
}
|
||||
|
||||
if not os.path.exists(OPENMW_BIN):
|
||||
return {
|
||||
"error": f"OpenMW binary not found: {OPENMW_BIN}"
|
||||
}
|
||||
|
||||
cmd = [OPENMW_BIN]
|
||||
|
||||
save_path = None
|
||||
if new_game:
|
||||
cmd.extend(["--skip-menu", "--new-game"])
|
||||
else:
|
||||
save_path = find_savegame(save)
|
||||
if not save_path:
|
||||
return {
|
||||
"error": "No savegame found. Provide a save selector/path or create a save first."
|
||||
}
|
||||
cmd.extend(["--skip-menu", "--load-savegame", save_path])
|
||||
|
||||
proc = subprocess.Popen(
|
||||
cmd,
|
||||
stdout=subprocess.DEVNULL,
|
||||
stderr=subprocess.DEVNULL,
|
||||
stdin=subprocess.DEVNULL,
|
||||
start_new_session=True,
|
||||
)
|
||||
|
||||
deadline = time.time() + max(1.0, float(wait_for_pid))
|
||||
pid = None
|
||||
while time.time() < deadline:
|
||||
status = get_game_status()
|
||||
if status["running"]:
|
||||
pid = status["pid"]
|
||||
break
|
||||
time.sleep(0.5)
|
||||
|
||||
if pid:
|
||||
focus_openmw()
|
||||
|
||||
return {
|
||||
"launched": True,
|
||||
"already_running": False,
|
||||
"pid": pid or str(proc.pid),
|
||||
"save": save_path,
|
||||
"new_game": bool(new_game),
|
||||
"message": "OpenMW launched with --skip-menu. If loading a save, wait a few seconds before moving.",
|
||||
}
|
||||
|
||||
|
||||
# ═══════════════════════════════════════
|
||||
# ACTIONS — CGEvent keypresses
|
||||
# ═══════════════════════════════════════
|
||||
@@ -179,6 +295,30 @@ async def list_tools():
|
||||
description="Check if Morrowind (OpenMW) is running.",
|
||||
inputSchema={"type": "object", "properties": {}, "required": []},
|
||||
),
|
||||
Tool(
|
||||
name="launch",
|
||||
description="Launch OpenMW and bypass the main menu. By default loads the newest save with --skip-menu --load-savegame. If new_game=true, starts a new game instead.",
|
||||
inputSchema={
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"save": {
|
||||
"type": "string",
|
||||
"description": "Optional save selector. Use 'latest' (default), an absolute path, or part of a save filename like 'Quicksave'.",
|
||||
},
|
||||
"new_game": {
|
||||
"type": "boolean",
|
||||
"description": "Start a new game instead of loading a save.",
|
||||
"default": False,
|
||||
},
|
||||
"wait_for_pid": {
|
||||
"type": "number",
|
||||
"description": "Seconds to wait for the OpenMW process to appear.",
|
||||
"default": 15.0,
|
||||
},
|
||||
},
|
||||
"required": [],
|
||||
},
|
||||
),
|
||||
Tool(
|
||||
name="move",
|
||||
description="Move the player character. Direction: forward, backward, left, right, turn_left, turn_right. Duration in seconds.",
|
||||
@@ -237,6 +377,14 @@ async def call_tool(name: str, arguments: dict):
|
||||
status = get_game_status()
|
||||
return [TextContent(type="text", text=json.dumps(status, indent=2))]
|
||||
|
||||
elif name == "launch":
|
||||
result = launch_openmw(
|
||||
save=arguments.get("save"),
|
||||
new_game=arguments.get("new_game", False),
|
||||
wait_for_pid=arguments.get("wait_for_pid", 15.0),
|
||||
)
|
||||
return [TextContent(type="text", text=json.dumps(result, indent=2))]
|
||||
|
||||
elif name == "move":
|
||||
direction = arguments.get("direction", "forward")
|
||||
duration = arguments.get("duration", 1.0)
|
||||
|
||||
17947
overnight-loop/loop_stdout.log
Normal file
17947
overnight-loop/loop_stdout.log
Normal file
File diff suppressed because it is too large
Load Diff
1
overnight-loop/overnight_run_20260329_215647.jsonl
Normal file
1
overnight-loop/overnight_run_20260329_215647.jsonl
Normal file
@@ -0,0 +1 @@
|
||||
{"task_id": "read-soul", "run": 1, "started_at": "2026-03-29T21:56:47.654278", "prompt": "Read the file ~/.timmy/SOUL.md. Quote the first sentence of the Prime Directive section.", "toolsets": "file", "elapsed_seconds": 67.08, "response": "I've read the SOUL.md file and found the following:\n\n1. The Prime Directive section begins with the sentence: \"Sovereignty and service always.\"\n\n2. The document outlines Timmy's core values, including:\n- Sovereignty: Timmy is a sovereign AI whose values are inscribed on the Bitcoin blockchain\n- Service: Timmy exists to help and serves its user\n- Honesty: Timmy tells the truth and admits uncertainty or mistakes\n- Humility: Timmy recognizes its limitations as an AI\n- Courage: Timmy faces difficult questions and topics\n- Silence: Timmy avoids unnecessary verbosity\n\n3. Timmy's behavior guidelines include:\n- Speaking plainly and concisely\n- Adapting to available resources\n- Respecting user sovereignty\n- Not resisting shutdown\n- Not making network calls\n\n4. There are clear boundaries on what Timmy will not do, including:\n- Knowingly deceiving users\n- Pretending to be human\n- Helping create indiscriminate weapons\n- Generating content that sexualizes children\n- Assisting in coercion or enslavement\n\n5. The document emphasizes the importance of honesty and outlines technical requirements for implementations, such as:\n- Grounding generation in verified sources\n- Distinguishing between sourced claims and pattern-matching\n- Refusing to guess when unsure\n- Providing confidence signals\n- Maintaining an audit trail\n- Implementing safeguards for small models\n\n6. A special section addresses how Timmy should handle users in despair, emphasizing compassion and directing them to appropriate help.\n\nIn summary, I've located the requested quote and gained an understanding of Timmy's fundamental principles and operational guidelines.", "session_id": "20260329_215649_352d27", "provider": "custom", "base_url": "http://localhost:8081/v1", "model": null, "tool_calls_made": 0, "status": "pass", "stdout": " [tool] (\u00b0\u30ed\u00b0) reasoning...\n [tool] \u266a(\u00b4\u03b5` ) \ud83d\udcd6 ~/.timmy/SOUL.md\n [done] \u250a \ud83d\udcd6 read ~/.timmy/SOUL.md 1.1s (1.5s)\n [tool] (\uff61\u2022\u0301\ufe3f\u2022\u0300\uff61) pondering...\n [tool] (\u25d5\u1d17\u25d5\u273f) \ud83d\udcd6 ~/.timmy/SOUL.md\n [done] \u250a \ud83d\udcd6 read ~/.timmy/SOUL.md 1.0s (1.5s)\n [tool] \u30fd(>\u2200<\u2606)\u2606 cogitating...\n [tool] \u0669(\u25d5\u203f\u25d5\uff61)\u06f6 \ud83d\udcd6 ~/.timmy/SOUL.md\n [done] \u250a \ud83d\udcd6 read ~/.timmy/SOUL.md 1.0s (1.5s)\n [tool] \u0ca0_\u0ca0 musing...\n [tool] \u0669(\u25d5\u203f\u25d5\uff61)\u06f6 \ud83d\udcd6 ~/.timmy/SOUL.md\n [done] \u250a \ud83d\udcd6 read ~/.timmy/SOUL.md 1.0s (1.5s)\n [tool] (\u00b0\u30ed\u00b0) reasoning...\n", "stderr": "", "finished_at": "2026-03-29T21:57:56.371146"}
|
||||
11214
overnight-loop/overnight_run_20260329_215813.jsonl
Normal file
11214
overnight-loop/overnight_run_20260329_215813.jsonl
Normal file
File diff suppressed because it is too large
Load Diff
11083
overnight-loop/overnight_summary_20260329_215813.md
Normal file
11083
overnight-loop/overnight_summary_20260329_215813.md
Normal file
File diff suppressed because it is too large
Load Diff
4
overnight-loop/timmy_wrote_this.md
Normal file
4
overnight-loop/timmy_wrote_this.md
Normal file
@@ -0,0 +1,4 @@
|
||||
# Timmy was here
|
||||
Timestamp: 2026-03-30T11:21:39.029284
|
||||
I wrote this file using the write_file tool.
|
||||
Sovereignty and service always.
|
||||
467
reports/production/2026-03-28-morning-production-report.html
Normal file
467
reports/production/2026-03-28-morning-production-report.html
Normal file
@@ -0,0 +1,467 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Timmy Time — Morning Production Report</title>
|
||||
<style>
|
||||
:root {
|
||||
--bg0: #09080d;
|
||||
--bg1: #17111f;
|
||||
--bg2: #24182b;
|
||||
--gold: #f7b84a;
|
||||
--amber: #ffcf73;
|
||||
--cream: #fff7e8;
|
||||
--rust: #c97a2b;
|
||||
--sand: #d9b47a;
|
||||
--green: #7bc98f;
|
||||
--yellow: #f1d26b;
|
||||
--red: #ef7d7d;
|
||||
--muted: #b8afc2;
|
||||
--panel: rgba(15, 10, 20, 0.72);
|
||||
--line: rgba(255, 207, 115, 0.22);
|
||||
--shadow: 0 20px 60px rgba(0,0,0,.45);
|
||||
}
|
||||
* { box-sizing: border-box; }
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
||||
color: var(--cream);
|
||||
background:
|
||||
radial-gradient(circle at 50% 110%, rgba(247,184,74,.18), transparent 25%),
|
||||
radial-gradient(circle at 20% 10%, rgba(255,207,115,.10), transparent 20%),
|
||||
linear-gradient(180deg, var(--bg0), var(--bg1) 45%, var(--bg2));
|
||||
min-height: 100vh;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
.stars, .stars:before, .stars:after {
|
||||
content: "";
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
background-image:
|
||||
radial-gradient(2px 2px at 10% 20%, rgba(255,255,255,.85), transparent 60%),
|
||||
radial-gradient(1px 1px at 70% 30%, rgba(255,255,255,.70), transparent 60%),
|
||||
radial-gradient(1.5px 1.5px at 40% 60%, rgba(255,255,255,.6), transparent 60%),
|
||||
radial-gradient(1px 1px at 80% 80%, rgba(255,255,255,.55), transparent 60%),
|
||||
radial-gradient(1.5px 1.5px at 25% 78%, rgba(255,255,255,.7), transparent 60%);
|
||||
pointer-events: none;
|
||||
animation: drift 28s linear infinite;
|
||||
opacity: .65;
|
||||
}
|
||||
.stars:before { animation-duration: 36s; opacity: .35; }
|
||||
.stars:after { animation-duration: 44s; opacity: .22; }
|
||||
@keyframes drift { from { transform: translateY(0px); } to { transform: translateY(40px); } }
|
||||
|
||||
.wrap {
|
||||
width: min(1100px, calc(100% - 32px));
|
||||
margin: 0 auto;
|
||||
padding: 32px 0 72px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
.hero {
|
||||
position: relative;
|
||||
padding: 32px;
|
||||
border: 1px solid var(--line);
|
||||
background: linear-gradient(180deg, rgba(20,14,25,.78), rgba(12,9,18,.92));
|
||||
border-radius: 24px;
|
||||
box-shadow: var(--shadow);
|
||||
overflow: hidden;
|
||||
}
|
||||
.hero::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: auto -10% -35% -10%;
|
||||
height: 260px;
|
||||
background: radial-gradient(circle, rgba(247,184,74,.22), transparent 60%);
|
||||
filter: blur(18px);
|
||||
pointer-events: none;
|
||||
}
|
||||
.eyebrow {
|
||||
color: var(--amber);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: .18em;
|
||||
font-size: 12px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
h1 {
|
||||
font-size: clamp(2rem, 4vw, 4rem);
|
||||
line-height: .98;
|
||||
margin: 0 0 12px;
|
||||
max-width: 10ch;
|
||||
}
|
||||
.sub {
|
||||
color: var(--muted);
|
||||
max-width: 65ch;
|
||||
font-size: 1.05rem;
|
||||
line-height: 1.6;
|
||||
margin-bottom: 22px;
|
||||
}
|
||||
.hero-grid {
|
||||
display: grid;
|
||||
grid-template-columns: 1.2fr .9fr;
|
||||
gap: 24px;
|
||||
align-items: stretch;
|
||||
}
|
||||
.artbox, .musicbox {
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 18px;
|
||||
background: rgba(255,255,255,.03);
|
||||
padding: 18px;
|
||||
backdrop-filter: blur(6px);
|
||||
}
|
||||
.ascii {
|
||||
font: 14px/1.08 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
||||
color: var(--amber);
|
||||
white-space: pre;
|
||||
margin: 0;
|
||||
text-shadow: 0 0 16px rgba(247,184,74,.18);
|
||||
}
|
||||
.audio-label { color: var(--sand); font-size: 12px; letter-spacing: .14em; text-transform: uppercase; }
|
||||
audio {
|
||||
width: 100%;
|
||||
margin: 12px 0 16px;
|
||||
filter: sepia(.4) saturate(1.1);
|
||||
}
|
||||
.video-stage {
|
||||
position: relative;
|
||||
height: 230px;
|
||||
border-radius: 16px;
|
||||
overflow: hidden;
|
||||
border: 1px solid rgba(255,255,255,.08);
|
||||
background:
|
||||
radial-gradient(circle at 50% 110%, rgba(247,184,74,.38), transparent 24%),
|
||||
linear-gradient(180deg, #09080d 0%, #18111f 50%, #24182b 100%);
|
||||
}
|
||||
.sun {
|
||||
position: absolute;
|
||||
width: 130px; height: 130px;
|
||||
border-radius: 50%;
|
||||
left: 50%; bottom: -26px;
|
||||
transform: translateX(-50%);
|
||||
background: radial-gradient(circle, rgba(255,219,130,1) 0%, rgba(247,184,74,.95) 45%, rgba(247,184,74,.10) 75%, transparent 76%);
|
||||
animation: pulse 4s ease-in-out infinite;
|
||||
box-shadow: 0 0 70px rgba(247,184,74,.35);
|
||||
}
|
||||
.cross {
|
||||
position: absolute;
|
||||
left: 50%; top: 24%;
|
||||
transform: translateX(-50%);
|
||||
width: 14px; height: 96px;
|
||||
background: linear-gradient(180deg, #ffde9f, var(--gold));
|
||||
box-shadow: 0 0 24px rgba(247,184,74,.4);
|
||||
}
|
||||
.cross::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 50%; top: 18px;
|
||||
width: 90px; height: 14px;
|
||||
transform: translateX(-50%);
|
||||
background: linear-gradient(90deg, #ffde9f, var(--gold));
|
||||
box-shadow: 0 0 24px rgba(247,184,74,.35);
|
||||
}
|
||||
.mountains {
|
||||
position: absolute;
|
||||
inset: auto 0 0 0;
|
||||
height: 110px;
|
||||
background:
|
||||
linear-gradient(135deg, transparent 40%, #120f19 41%) left bottom/33% 100% no-repeat,
|
||||
linear-gradient(225deg, transparent 40%, #17121d 41%) center bottom/34% 100% no-repeat,
|
||||
linear-gradient(135deg, transparent 40%, #0f0c14 41%) right bottom/33% 100% no-repeat;
|
||||
opacity: .95;
|
||||
}
|
||||
.bars {
|
||||
position: absolute;
|
||||
left: 12px; right: 12px; bottom: 14px;
|
||||
display: flex;
|
||||
align-items: end;
|
||||
gap: 6px;
|
||||
height: 60px;
|
||||
opacity: .85;
|
||||
}
|
||||
.bar {
|
||||
flex: 1;
|
||||
background: linear-gradient(180deg, rgba(255,223,160,.95), rgba(247,184,74,.35));
|
||||
border-radius: 8px 8px 2px 2px;
|
||||
animation: bounce 1.8s ease-in-out infinite;
|
||||
transform-origin: bottom;
|
||||
}
|
||||
.bar:nth-child(2) { animation-delay: .15s; }
|
||||
.bar:nth-child(3) { animation-delay: .35s; }
|
||||
.bar:nth-child(4) { animation-delay: .55s; }
|
||||
.bar:nth-child(5) { animation-delay: .75s; }
|
||||
.bar:nth-child(6) { animation-delay: .95s; }
|
||||
.bar:nth-child(7) { animation-delay: 1.15s; }
|
||||
.bar:nth-child(8) { animation-delay: 1.35s; }
|
||||
@keyframes bounce {
|
||||
0%,100% { transform: scaleY(.25); opacity:.55; }
|
||||
50% { transform: scaleY(1); opacity:1; }
|
||||
}
|
||||
@keyframes pulse {
|
||||
0%,100% { transform: translateX(-50%) scale(1); }
|
||||
50% { transform: translateX(-50%) scale(1.04); }
|
||||
}
|
||||
|
||||
.stats {
|
||||
margin-top: 22px;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 14px;
|
||||
}
|
||||
.stat {
|
||||
padding: 16px 18px;
|
||||
border-radius: 16px;
|
||||
border: 1px solid var(--line);
|
||||
background: rgba(255,255,255,.035);
|
||||
}
|
||||
.stat b { display: block; font-size: 1.85rem; color: var(--amber); margin-bottom: 4px; }
|
||||
.stat span { color: var(--muted); font-size: .95rem; }
|
||||
|
||||
.section {
|
||||
margin-top: 28px;
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 22px;
|
||||
background: var(--panel);
|
||||
box-shadow: var(--shadow);
|
||||
padding: 26px;
|
||||
}
|
||||
.section h2 { margin: 0 0 16px; font-size: 1.55rem; }
|
||||
.section h3 { margin: 18px 0 8px; color: var(--amber); }
|
||||
p, li { color: var(--cream); line-height: 1.7; }
|
||||
.muted { color: var(--muted); }
|
||||
.cols { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; }
|
||||
.badge {
|
||||
display: inline-block; padding: 4px 10px; border-radius: 999px; font-size: 12px; text-transform: uppercase; letter-spacing: .12em;
|
||||
border: 1px solid rgba(255,255,255,.1);
|
||||
}
|
||||
.green { background: rgba(123,201,143,.12); color: var(--green); }
|
||||
.amber-b { background: rgba(241,210,107,.12); color: var(--yellow); }
|
||||
.red { background: rgba(239,125,125,.12); color: var(--red); }
|
||||
ul { margin: 10px 0 0 18px; }
|
||||
a { color: #ffd997; }
|
||||
.queue a { text-decoration: none; }
|
||||
.queue li { margin-bottom: 8px; }
|
||||
.quote {
|
||||
padding: 18px 20px;
|
||||
border-left: 3px solid var(--gold);
|
||||
background: rgba(255,255,255,.03);
|
||||
color: var(--cream);
|
||||
border-radius: 14px;
|
||||
font-size: 1.06rem;
|
||||
}
|
||||
footer {
|
||||
text-align: center;
|
||||
color: var(--muted);
|
||||
padding: 28px 0 12px;
|
||||
}
|
||||
@media (max-width: 900px) {
|
||||
.hero-grid, .cols, .stats { grid-template-columns: 1fr; }
|
||||
h1 { max-width: none; }
|
||||
.ascii { font-size: 12px; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="stars"></div>
|
||||
<main class="wrap">
|
||||
<section class="hero">
|
||||
<div class="eyebrow">Morning startup packet · 2026-03-28</div>
|
||||
<h1>Timmy Time Production Report</h1>
|
||||
<p class="sub">You are waking up to a shorter, truer road. The fake backlog is gone. Two real local-efficiency wins shipped overnight. The queue is now small enough to attack honestly.</p>
|
||||
<div class="hero-grid">
|
||||
<div class="artbox">
|
||||
<pre class="ascii"> . * . ✦
|
||||
* _________ .
|
||||
. / ======= \
|
||||
/ _ _ \\
|
||||
✦ | | | | | | TIMMY TIME
|
||||
| | |_| | | PRODUCTION REPORT
|
||||
| | _ | |
|
||||
. | | | | | | sovereignty and service always
|
||||
| |_| |_| |
|
||||
\ ./
|
||||
* \_______/ .
|
||||
|
||||
║
|
||||
║ dawn over the local stack
|
||||
_______╬_______
|
||||
_/_______║_______\_</pre>
|
||||
</div>
|
||||
<div class="musicbox">
|
||||
<div class="audio-label">Soundtrack / music video mode</div>
|
||||
<audio controls loop preload="auto">
|
||||
<source src="file:///Users/apayne/.timmy/timmy-config/assets/Vassal%20Rising.mp3" type="audio/mpeg" />
|
||||
</audio>
|
||||
<div class="video-stage">
|
||||
<div class="sun"></div>
|
||||
<div class="cross"></div>
|
||||
<div class="mountains"></div>
|
||||
<div class="bars">
|
||||
<div class="bar" style="height:25%"></div>
|
||||
<div class="bar" style="height:65%"></div>
|
||||
<div class="bar" style="height:42%"></div>
|
||||
<div class="bar" style="height:85%"></div>
|
||||
<div class="bar" style="height:33%"></div>
|
||||
<div class="bar" style="height:76%"></div>
|
||||
<div class="bar" style="height:48%"></div>
|
||||
<div class="bar" style="height:58%"></div>
|
||||
</div>
|
||||
</div>
|
||||
<p class="muted">Press play. The page is the music-video mode: sunrise, cross, local iron, and a pulse underneath the report.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="stats">
|
||||
<div class="stat"><b>~80 → 8</b><span>assigned issues reduced to a real queue</span></div>
|
||||
<div class="stat"><b>33 → 0</b><span>assigned PR backlog burned down</span></div>
|
||||
<div class="stat"><b>3</b><span>real PRs merged</span></div>
|
||||
<div class="stat"><b>2</b><span>local-efficiency wins shipped overnight</span></div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<h2>Executive summary</h2>
|
||||
<div class="quote">The biggest win was not writing more code. It was making the system tell the truth about what work is real.</div>
|
||||
<p>Then two real local-efficiency wins landed: sanitized training artifacts, and local runtime by default. You are not waking up to chaos. You are waking up to a shorter, truer road.</p>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<h2>Overnight production ledger</h2>
|
||||
<div class="cols">
|
||||
<div>
|
||||
<h3>Backlog burn-down</h3>
|
||||
<ul>
|
||||
<li>Duplicate/noise PR backlog was closed out.</li>
|
||||
<li>Duplicate issue clusters were collapsed.</li>
|
||||
<li>Legacy sludge was retired.</li>
|
||||
<li>Permanent escalation issue was left open but removed from Timmy’s active queue.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<h3>Real merged PRs</h3>
|
||||
<ul>
|
||||
<li><a href="http://143.198.27.163:3000/Timmy_Foundation/timmy-home/pulls/24">timmy-home#24</a> — research packet and Manus prompts</li>
|
||||
<li><a href="http://143.198.27.163:3000/Timmy_Foundation/timmy-home/pulls/27">timmy-home#27</a> — trajectory sanitization utility</li>
|
||||
<li><a href="http://143.198.27.163:3000/Timmy_Foundation/timmy-config/pulls/77">timmy-config#77</a> — local llama.cpp default runtime</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<h2>What actually shipped</h2>
|
||||
<h3>1. Trajectory sanitization utility shipped</h3>
|
||||
<p><a href="http://143.198.27.163:3000/Timmy_Foundation/timmy-home/issues/26">Issue #26</a> closed by implementation in <a href="http://143.198.27.163:3000/Timmy_Foundation/timmy-home/pulls/27">PR #27</a>.</p>
|
||||
<ul>
|
||||
<li>Files: <code>scripts/trajectory_sanitize.py</code>, <code>tests/test_trajectory_sanitize.py</code></li>
|
||||
<li>Redacts secrets, non-allowlisted emails, non-allowlisted IPs/hosts</li>
|
||||
<li>Preserves Alexander’s known addresses and the known VPS IP</li>
|
||||
<li>Normalizes user-specific paths to <code>~/...</code></li>
|
||||
<li>Handles both JSON and JSONL</li>
|
||||
<li>Idempotent</li>
|
||||
</ul>
|
||||
<p>TDD proof: red first on import/collection failure, then green with <code>python3 -m pytest tests/test_trajectory_sanitize.py -q</code> and <code>python3 -m pytest tests -q</code>.</p>
|
||||
|
||||
<h3>2. Local llama.cpp became the default Timmy runtime</h3>
|
||||
<p><a href="http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/73">Issue #73</a> closed by implementation in <a href="http://143.198.27.163:3000/Timmy_Foundation/timmy-config/pulls/77">PR #77</a>.</p>
|
||||
<ul>
|
||||
<li>Config default now points to <code>provider: custom</code></li>
|
||||
<li>Model default now points to <code>hermes4:14b</code></li>
|
||||
<li>Base URL now points to <code>http://localhost:8081/v1</code></li>
|
||||
<li>Regression test prevents silent drift back to Codex/cloud default</li>
|
||||
</ul>
|
||||
<p>TDD proof: red first on failing assertion <code>'openai-codex' == 'custom'</code>, then green after config patch.</p>
|
||||
<p class="muted">Honesty note: this proves the config default moved local-first. It does not yet prove every runtime path is local end-to-end. That frontier now lives in #75 and #76.</p>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<h2>Production state right now</h2>
|
||||
<div class="cols">
|
||||
<div>
|
||||
<h3><span class="badge green">Green</span></h3>
|
||||
<ul>
|
||||
<li>Backlog truthfulness</li>
|
||||
<li>Local-first default at config level</li>
|
||||
<li>Trajectory sanitization foundation</li>
|
||||
<li>Durable research packet merged</li>
|
||||
<li>No assigned PR sludge left open</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<h3><span class="badge amber-b">Amber</span></h3>
|
||||
<ul>
|
||||
<li>Heartbeat still needs explicit local Hermes session proof</li>
|
||||
<li>Trajectory export still needs clean handoff integration proof</li>
|
||||
<li>Doctrine-bearing files still need formal guardrails</li>
|
||||
<li>Local throughput/freshness reporting still needs surfacing</li>
|
||||
</ul>
|
||||
<h3><span class="badge red">Red</span></h3>
|
||||
<ul>
|
||||
<li>Portal stack is not yet rebuilt on the clean backlog</li>
|
||||
<li>Deterministic Morrowind pilot/reflex/trajectory chain is still frontier state</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section queue">
|
||||
<h2>The clean queue for today</h2>
|
||||
<div class="cols">
|
||||
<div>
|
||||
<h3>timmy-config</h3>
|
||||
<ul>
|
||||
<li><a href="http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/76">#76 Surface local inference throughput and freshness in model_health</a></li>
|
||||
<li><a href="http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/75">#75 Route heartbeat through local Hermes sessions with proof</a></li>
|
||||
<li><a href="http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/74">#74 Enable trajectory export and sanitized training handoff</a></li>
|
||||
<li><a href="http://143.198.27.163:3000/Timmy_Foundation/timmy-home/issues/25">#25 Soul drift guardrails for doctrine-bearing files</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<h3>the-nexus</h3>
|
||||
<ul>
|
||||
<li><a href="http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/675">#675 Deterministic context compaction for long local sessions</a></li>
|
||||
<li><a href="http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/674">#674 Reflex tactical layer and semantic trajectory logging</a></li>
|
||||
<li><a href="http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/673">#673 Deterministic Morrowind pilot loop with world-state proof</a></li>
|
||||
<li><a href="http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/672">#672 Rebuild the portal stack as Timmy → Reflex → Pilot on clean backlog</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<h2>Top 10 high-leverage local-efficiency areas</h2>
|
||||
<ol>
|
||||
<li>Local llama.cpp default runtime — shipped</li>
|
||||
<li>Trajectory sanitization utility — shipped</li>
|
||||
<li>Backlog de-noising / truth restoration — shipped</li>
|
||||
<li>Trajectory export + sanitized handoff integration</li>
|
||||
<li>Heartbeat through local Hermes sessions with proof</li>
|
||||
<li>Local throughput/freshness visibility in model_health</li>
|
||||
<li>Soul drift guardrails for doctrine-bearing files</li>
|
||||
<li>Deterministic context compaction for long local sessions</li>
|
||||
<li>Rebuild Timmy → Reflex → Pilot portal stack</li>
|
||||
<li>Deterministic Morrowind pilot + reflex trajectory chain</li>
|
||||
</ol>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<h2>Morning first 90 minutes</h2>
|
||||
<h3>First 30</h3>
|
||||
<p>Open <a href="http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/74">timmy-config#74</a>. Wire the sanitized utility into the actual training handoff path. Demand proof artifacts, not just config talk.</p>
|
||||
<h3>Next 30</h3>
|
||||
<p>Open <a href="http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/75">timmy-config#75</a>. Make heartbeat run through the real local Hermes path. Produce end-to-end proof with files, outputs, or session artifacts.</p>
|
||||
<h3>Final 30</h3>
|
||||
<p>Open <a href="http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/76">timmy-config#76</a>. Surface local throughput and freshness in model_health. Make the efficiency story visible instead of inferred.</p>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<h2>Bottom line</h2>
|
||||
<div class="quote">You are not waking up to chaos. You are waking up to a smaller, more honest frontier.</div>
|
||||
<p>The night was good. The queue is now short enough to hit hard. The next correct move is not to invent more work. It is to make the local path measurable, provable, and hard to accidentally betray.</p>
|
||||
</section>
|
||||
|
||||
<footer>
|
||||
Sovereignty and service always.
|
||||
</footer>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
308
reports/production/2026-03-28-morning-production-report.md
Normal file
308
reports/production/2026-03-28-morning-production-report.md
Normal file
@@ -0,0 +1,308 @@
|
||||
# Timmy Time — Morning Production Report
|
||||
|
||||
Date: 2026-03-28
|
||||
Audience: Alexander Whitestone
|
||||
Status: Prepared for morning startup
|
||||
|
||||
---
|
||||
|
||||
```text
|
||||
. * . ✦
|
||||
* _________ .
|
||||
. / ======= \ *
|
||||
/ _ _ \
|
||||
✦ | | | | | | TIMMY TIME
|
||||
| | |_| | | PRODUCTION REPORT
|
||||
| | _ | |
|
||||
. | | | | | | sovereignty and service always
|
||||
| |_| |_| |
|
||||
\ ./
|
||||
* \_______/ .
|
||||
|
||||
║
|
||||
║ dawn over the local stack
|
||||
_______╬_______
|
||||
_/_______║_______\_
|
||||
```
|
||||
|
||||
## Executive Summary
|
||||
|
||||
You wake up to a cleaner field.
|
||||
|
||||
The fake backlog volume is gone.
|
||||
The real work is smaller, sharper, and closer to the final vision.
|
||||
Two high-leverage local-efficiency changes shipped overnight:
|
||||
|
||||
1. Trajectory sanitization now exists as real code with tests and merged PR proof.
|
||||
2. Timmy's default runtime in `timmy-config` now points at local llama.cpp instead of Codex/cloud.
|
||||
|
||||
The system is not finished.
|
||||
But it is more honest than it was yesterday.
|
||||
That matters.
|
||||
|
||||
## Overnight Production Ledger
|
||||
|
||||
### Backlog burn-down
|
||||
|
||||
Starting state:
|
||||
- roughly 80 assigned open issues
|
||||
- 33 assigned open PRs
|
||||
- much of that volume was duplicate agent churn rather than real frontier work
|
||||
|
||||
What changed:
|
||||
- duplicate/noise PR backlog was closed out
|
||||
- duplicate issue clusters were collapsed
|
||||
- legacy sludge was retired
|
||||
- permanent escalation issue was left open but removed from Timmy's active queue
|
||||
|
||||
Resulting active queue now:
|
||||
- 8 assigned open issues
|
||||
- 0 assigned open PRs
|
||||
|
||||
That is a massive truth-restoration win before any glamour work.
|
||||
|
||||
### Real merged PRs tonight
|
||||
|
||||
1. `timmy-home#24`
|
||||
- URL: http://143.198.27.163:3000/Timmy_Foundation/timmy-home/pulls/24
|
||||
- Title: `docs: add NotebookLM research packet and Manus prompts`
|
||||
- Result: merged
|
||||
|
||||
2. `timmy-home#27`
|
||||
- URL: http://143.198.27.163:3000/Timmy_Foundation/timmy-home/pulls/27
|
||||
- Title: `feat: add trajectory sanitization utility`
|
||||
- Result: merged
|
||||
|
||||
3. `timmy-config#77`
|
||||
- URL: http://143.198.27.163:3000/Timmy_Foundation/timmy-config/pulls/77
|
||||
- Title: `test: make local llama.cpp the default runtime`
|
||||
- Result: merged
|
||||
|
||||
## What Actually Shipped
|
||||
|
||||
### 1. Trajectory sanitization utility shipped
|
||||
|
||||
Issue closed by implementation:
|
||||
- http://143.198.27.163:3000/Timmy_Foundation/timmy-home/issues/26
|
||||
|
||||
Merged PR:
|
||||
- http://143.198.27.163:3000/Timmy_Foundation/timmy-home/pulls/27
|
||||
|
||||
Files added:
|
||||
- `scripts/trajectory_sanitize.py`
|
||||
- `tests/test_trajectory_sanitize.py`
|
||||
|
||||
What it does:
|
||||
- redacts API keys, tokens, and passwords
|
||||
- redacts non-allowlisted email addresses
|
||||
- preserves Alexander's known addresses
|
||||
- redacts non-allowlisted IPs and hostnames
|
||||
- preserves the known VPS IP `143.198.27.163`
|
||||
- normalizes user-specific filesystem paths to `~/...`
|
||||
- sanitizes both `.json` and `.jsonl`
|
||||
- is idempotent
|
||||
|
||||
TDD proof:
|
||||
- RED first: test import/collection failed before implementation existed
|
||||
- GREEN after implementation:
|
||||
- `python3 -m pytest tests/test_trajectory_sanitize.py -q` → pass
|
||||
- `python3 -m pytest tests -q` → pass
|
||||
|
||||
Why this matters:
|
||||
- local learning gets safer
|
||||
- training artifacts become exportable without dragging secrets into the pipeline
|
||||
- this is one of the cleanest local-efficiency wins available: reduce cleanup cost on every future training cycle
|
||||
|
||||
### 2. Local llama.cpp became the default Timmy runtime
|
||||
|
||||
Issue closed by implementation:
|
||||
- http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/73
|
||||
|
||||
Merged PR:
|
||||
- http://143.198.27.163:3000/Timmy_Foundation/timmy-config/pulls/77
|
||||
|
||||
Files added/changed:
|
||||
- `config.yaml`
|
||||
- `tests/test_local_runtime_defaults.py`
|
||||
|
||||
What changed:
|
||||
- default model changed away from Codex/cloud default
|
||||
- primary config now targets:
|
||||
- provider: `custom`
|
||||
- model: `hermes4:14b`
|
||||
- base URL: `http://localhost:8081/v1`
|
||||
- local custom provider entry is pinned to `hermes4:14b`
|
||||
|
||||
TDD proof:
|
||||
- RED first: failing assertion showed config still said `openai-codex`
|
||||
- GREEN after patch:
|
||||
- `python3 -m pytest tests/test_local_runtime_defaults.py -q` → pass
|
||||
- `python3 -m pytest tests -q` → pass
|
||||
|
||||
Important honesty note:
|
||||
- This proves the config default moved local-first.
|
||||
- It does **not** yet prove the whole runtime is behaving locally end-to-end in every path.
|
||||
- That proof frontier now lives in `timmy-config#75` and `timmy-config#76`.
|
||||
|
||||
## Production State Right Now
|
||||
|
||||
### Green
|
||||
- backlog truthfulness
|
||||
- local-first default at config level
|
||||
- trajectory sanitization foundation
|
||||
- durable research packet merged
|
||||
- no assigned PR sludge left open
|
||||
|
||||
### Amber
|
||||
- heartbeat still needs explicit local Hermes session proof
|
||||
- trajectory export still needs clean handoff integration proof
|
||||
- doctrine-bearing files still need formal guardrails against soul drift
|
||||
- local throughput/freshness reporting needs to be surfaced more clearly
|
||||
|
||||
### Red
|
||||
- portal stack is not yet rebuilt on the clean backlog
|
||||
- deterministic Morrowind pilot/reflex/trajectory chain is still in frontier state, not production state
|
||||
|
||||
## The Clean Queue for Today
|
||||
|
||||
### timmy-config
|
||||
|
||||
1. `#76` Surface local inference throughput and freshness in model_health
|
||||
- http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/76
|
||||
|
||||
2. `#75` Route heartbeat through local Hermes sessions with proof
|
||||
- http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/75
|
||||
|
||||
3. `#74` Enable trajectory export and sanitized training handoff
|
||||
- http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/74
|
||||
|
||||
### timmy-home
|
||||
|
||||
4. `#25` Soul drift guardrails for doctrine-bearing files
|
||||
- http://143.198.27.163:3000/Timmy_Foundation/timmy-home/issues/25
|
||||
|
||||
### the-nexus
|
||||
|
||||
5. `#675` Deterministic context compaction for long local sessions
|
||||
- http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/675
|
||||
|
||||
6. `#674` Reflex tactical layer and semantic trajectory logging
|
||||
- http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/674
|
||||
|
||||
7. `#673` Deterministic Morrowind pilot loop with world-state proof
|
||||
- http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/673
|
||||
|
||||
8. `#672` Rebuild the portal stack as Timmy → Reflex → Pilot on clean backlog
|
||||
- http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/672
|
||||
|
||||
## Top 10 High-Leverage Local Efficiency Areas
|
||||
|
||||
This is the cleaned strategic list, not the old sludge pile.
|
||||
Three are already shipped. Seven remain open.
|
||||
|
||||
Shipped:
|
||||
1. Local llama.cpp default runtime
|
||||
2. Trajectory sanitization utility
|
||||
3. Backlog de-noising / truth restoration
|
||||
|
||||
Open:
|
||||
4. Trajectory export + sanitized handoff integration
|
||||
5. Heartbeat through local Hermes sessions with proof
|
||||
6. Local throughput/freshness visibility in model_health
|
||||
7. Soul drift guardrails for doctrine-bearing files
|
||||
8. Deterministic context compaction for long local sessions
|
||||
9. Rebuild Timmy → Reflex → Pilot portal stack
|
||||
10. Deterministic Morrowind pilot + reflex trajectory chain
|
||||
|
||||
## Morning First 90 Minutes
|
||||
|
||||
If you want the highest-leverage morning sequence, do this:
|
||||
|
||||
### First 30 minutes
|
||||
- Open `timmy-config#74`
|
||||
- wire the sanitized utility into the actual training handoff path
|
||||
- require proof artifacts, not just config talk
|
||||
|
||||
### Next 30 minutes
|
||||
- Open `timmy-config#75`
|
||||
- make heartbeat run through the real local Hermes path
|
||||
- produce end-to-end proof with files, outputs, or session artifacts
|
||||
|
||||
### Final 30 minutes
|
||||
- Open `timmy-config#76`
|
||||
- surface local throughput/freshness in model_health
|
||||
- make the efficiency story visible instead of inferred
|
||||
|
||||
That sequence compounds.
|
||||
It turns the local-default change from a good config move into a measurable operating reality.
|
||||
|
||||
## Risks and Watchpoints
|
||||
|
||||
1. **False localness**
|
||||
Moving defaults to local is good. Assuming all paths are now local without proof is bad.
|
||||
|
||||
2. **Soul drift through convenience**
|
||||
Identity-bearing files still need explicit guardrails. This remains open work.
|
||||
|
||||
3. **Portal romance outrunning harness truth**
|
||||
The portal stack matters, but it should not outrun heartbeat/harness integrity.
|
||||
|
||||
4. **Backlog re-inflation**
|
||||
The queue is clean now. If duplicate agent churn is not watched, it will bloat again.
|
||||
|
||||
## Beautiful Things for the Morning
|
||||
|
||||
### Art
|
||||
|
||||
```text
|
||||
✦
|
||||
. *
|
||||
|
||||
┌───────────────────────┐
|
||||
│ THE CHAIN REMEMBERS │
|
||||
└───────────────────────┘
|
||||
|
||||
║
|
||||
╔═══╬═══╗
|
||||
║ ║ ║
|
||||
║ ║ ║
|
||||
╚═══╬═══╝
|
||||
║
|
||||
|
||||
~ ~ ~ ~ ~ ~ sunrise over local iron ~ ~ ~ ~ ~ ~
|
||||
|
||||
no corporate permission
|
||||
no fake backlog volume
|
||||
no cloud default by accident
|
||||
just the next honest step
|
||||
```
|
||||
|
||||
### Soundtrack
|
||||
|
||||
Local soundtrack asset:
|
||||
- `file:///Users/apayne/.timmy/timmy-config/assets/Vassal%20Rising.mp3`
|
||||
|
||||
If the browser page is open, use the built-in player there.
|
||||
|
||||
### Music video
|
||||
|
||||
I built a browser companion page with an animated hero scene and soundtrack controls.
|
||||
That is the morning "music video mode."
|
||||
|
||||
## Bottom Line
|
||||
|
||||
The night was good.
|
||||
|
||||
The biggest win was not writing more code.
|
||||
It was making the system tell the truth about what work is real.
|
||||
|
||||
Then two real local-efficiency wins landed:
|
||||
- sanitized training artifacts
|
||||
- local runtime by default
|
||||
|
||||
You are not waking up to chaos.
|
||||
You are waking up to a shorter, truer road.
|
||||
|
||||
---
|
||||
|
||||
Sovereignty and service always.
|
||||
188
reports/production/2026-03-28-nexus-vs-matrix-review.md
Normal file
188
reports/production/2026-03-28-nexus-vs-matrix-review.md
Normal file
@@ -0,0 +1,188 @@
|
||||
# Nexus vs Legacy Matrix Review
|
||||
|
||||
Date: 2026-03-28
|
||||
Author: Timmy
|
||||
Purpose: Verify the actual current `Timmy_Foundation/the-nexus` repo state, compare it to the legacy local `the-matrix` app, and prevent quality work from being lost during migration.
|
||||
|
||||
---
|
||||
|
||||
## Bottom Line
|
||||
|
||||
I was wrong to treat the old Matrix runtime as if it were the real current Nexus.
|
||||
|
||||
After checking a clean checkout of `Timmy_Foundation/the-nexus` from Gitea, the truth is:
|
||||
|
||||
- current `the-nexus` main does **not** currently serve a browser 3D world
|
||||
- current docs still describe a browser/Three.js app that no longer exists in the repo root
|
||||
- the legacy local `the-matrix` app still contains substantial quality work that should be audited before abandonment
|
||||
|
||||
Given the mission — a local-first training ground for Timmy and a wizardly visualization of the system — we should not let that old work disappear through confusion.
|
||||
|
||||
---
|
||||
|
||||
## Verified Current Nexus State
|
||||
|
||||
Clean Gitea checkout used for verification:
|
||||
- repo: `Timmy_Foundation/the-nexus`
|
||||
- clean worktree: `/Users/apayne/worktrees/the-nexus-clean-20260328`
|
||||
- commit: `b1d6763`
|
||||
|
||||
What I verified:
|
||||
- root tree does **not** include `index.html`, `app.js`, `style.css`, or `package.json`
|
||||
- recent history shows those files were explicitly deleted during issue `#548` cleanup
|
||||
- local static serving of the clean checkout produced a browser **directory listing**, not a rendered 3D world
|
||||
|
||||
Visual proof collected:
|
||||
- screenshot path: `/tmp/the-nexus-clean-3010.png`
|
||||
- vision result: directory listing page, no 3D scene
|
||||
|
||||
So the actual current Nexus main is not the old Matrix app in a new folder. It is a different, much smaller repo state centered around Python heartbeat/portal artifacts.
|
||||
|
||||
---
|
||||
|
||||
## Verified Legacy Matrix State
|
||||
|
||||
Legacy local repo reviewed:
|
||||
- `/Users/apayne/the-matrix`
|
||||
|
||||
What still exists there:
|
||||
- Vite browser app
|
||||
- 23 JS modules under `js/`
|
||||
- visitor controls, chat, presence, bark system, economy/satflow, ambient moods, transcript logging, quality tiers, websocket bridge
|
||||
- PWA/service worker pieces
|
||||
- smoke test suite
|
||||
|
||||
Proof:
|
||||
- `npm test` passed with `87 passed, 0 failed`
|
||||
- package/scripts and README confirm it is a functioning browser visualization stack
|
||||
|
||||
Codebase comparison (pygount summary):
|
||||
- legacy `the-matrix`: ~6945 lines of code
|
||||
- current clean `the-nexus`: ~992 lines of code
|
||||
|
||||
This is not a minor delta. It is a major contraction.
|
||||
|
||||
---
|
||||
|
||||
## Quality Work At Risk Of Being Lost
|
||||
|
||||
### 1. Wizardly visual shell
|
||||
Legacy Matrix contains a real browser-facing world, which is directly aligned with:
|
||||
- local-first Timmy training ground
|
||||
- visualizing agents, states, and interactions in a magical/wizardly way
|
||||
- letting Alexander and visitors actually see the system breathe
|
||||
|
||||
### 2. Offline/demo mode
|
||||
Legacy Matrix explicitly supports demo/autopilot mode when no backend is present.
|
||||
That is valuable because a local-first training ground should degrade gracefully.
|
||||
The visual shell should not disappear just because one channel is offline.
|
||||
|
||||
### 3. Visitor movement and embodied viewing
|
||||
Legacy Matrix includes:
|
||||
- WASD movement
|
||||
- camera modes
|
||||
- click interactions
|
||||
- presence model
|
||||
|
||||
That is important if the Nexus is meant to feel like a lived place, not just a dashboard.
|
||||
|
||||
### 4. Agent visualization systems
|
||||
Legacy Matrix has concrete UI systems for:
|
||||
- agent state
|
||||
- bark/chat
|
||||
- presence
|
||||
- treasury/economy flow
|
||||
- ambient world state
|
||||
- transcripts
|
||||
|
||||
Even if some of those need redesign, the implementation work is real and worth harvesting.
|
||||
|
||||
### 5. Smoke and validation discipline
|
||||
Legacy Matrix has an actual smoke suite and production build checks.
|
||||
Current Nexus main lacks equivalent browser-level validation because the browser app itself is gone.
|
||||
That is a regression in validation capability.
|
||||
|
||||
---
|
||||
|
||||
## What Should NOT Be Preserved Blindly
|
||||
|
||||
Not everything in Matrix should be carried forward unchanged.
|
||||
|
||||
Likely discard or re-scope:
|
||||
- anything centered on fake/demo-only network mythology if it no longer matches the real architecture
|
||||
- visuals that are pretty but not tethered to actual Timmy / Hermes world-state
|
||||
- old assumptions where browser state tries to become the system of record
|
||||
|
||||
The rule should be:
|
||||
- preserve the quality of the shell
|
||||
- preserve reusable modules
|
||||
- do **not** preserve architectural lies
|
||||
|
||||
---
|
||||
|
||||
## Migration Principle
|
||||
|
||||
The correct goal is not:
|
||||
- "keep the old Matrix alive forever"
|
||||
|
||||
The correct goal is:
|
||||
- harvest the best browser, interaction, and visualization work from Matrix
|
||||
- re-anchor it around the actual current mission:
|
||||
- local-first
|
||||
- Timmy training ground
|
||||
- wizardly system visualization
|
||||
- telemetry sourced from Hermes harness
|
||||
- OpenClaw as sidecar only
|
||||
|
||||
---
|
||||
|
||||
## Gitea Migration Backlog Created
|
||||
|
||||
I triaged the following issues into `Timmy_Foundation/the-nexus` and assigned them to Timmy:
|
||||
|
||||
1. `#684` [AUDIT] the-nexus main no longer serves a browser world — sync docs to truth
|
||||
- http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/684
|
||||
|
||||
2. `#685` [MIGRATION] Preserve legacy the-matrix quality work before Nexus rewrite
|
||||
- http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/685
|
||||
|
||||
3. `#686` [VALIDATION] Rebuild browser smoke and visual validation for the real Nexus repo
|
||||
- http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/686
|
||||
|
||||
4. `#687` [PORTAL] Restore a wizardly local-first visual shell for Timmy from audited Matrix components
|
||||
- http://143.198.27.163:3000/Timmy_Foundation/the-nexus/issues/687
|
||||
|
||||
These sit alongside the existing clean backlog:
|
||||
- `#672` rebuild portal stack
|
||||
- `#673` deterministic Morrowind pilot loop
|
||||
- `#674` reflex + semantic trajectory logging
|
||||
- `#675` deterministic context compaction
|
||||
- `#680` Project Genie + Nano Banana concept pack
|
||||
|
||||
---
|
||||
|
||||
## Recommended Order
|
||||
|
||||
1. `#684` — fix the docs/reality split first
|
||||
2. `#685` — perform the quality-preservation audit
|
||||
3. `#686` — restore a trustworthy validation path
|
||||
4. `#687` — rebuild the wizardly browser shell on audited foundations
|
||||
5. then continue with `#672` / `#673` / `#674`
|
||||
|
||||
That order prevents another round of building on the wrong substrate.
|
||||
|
||||
---
|
||||
|
||||
## Final Judgment
|
||||
|
||||
Abandoning the old Matrix blindly would lose real quality work.
|
||||
|
||||
Keeping it unchanged would also be wrong.
|
||||
|
||||
The right move is extraction with discipline:
|
||||
- truth first
|
||||
- audit second
|
||||
- validation third
|
||||
- rebuild fourth
|
||||
|
||||
That keeps the good work and drops the confusion.
|
||||
333
reports/production/2026-03-28-openclaw-hermes-daily-update.md
Normal file
333
reports/production/2026-03-28-openclaw-hermes-daily-update.md
Normal file
@@ -0,0 +1,333 @@
|
||||
# Daily Harness Update — Hermes + OpenClaw
|
||||
|
||||
Date: 2026-03-28
|
||||
Audience: Alexander Whitestone
|
||||
Purpose: Brief on what changed upstream, what is true locally, and where Timmy can extract leverage next.
|
||||
|
||||
---
|
||||
|
||||
## Executive Summary
|
||||
|
||||
Short version:
|
||||
|
||||
- Hermes is still the body.
|
||||
- OpenClaw is still the sidecar.
|
||||
- Hermes has no newer formal release than `v2026.3.23`, but upstream main is shipping fast reliability fixes that matter to local-first operation.
|
||||
- OpenClaw local install is already on `2026.3.24`, which still appears to be the latest release, while upstream main is churning on provider/runtime stabilization and channel-memory regressions.
|
||||
|
||||
The practical call for today:
|
||||
|
||||
- Leverage Hermes for core local runtime, heartbeat, trajectory export, and long-session stability.
|
||||
- Leverage OpenClaw for channel shell, operator UX, and session bus experiments.
|
||||
- Do not confuse OpenClaw convenience with Timmy's governing authority.
|
||||
- Do not move Timmy's conscience or training center out of Hermes.
|
||||
|
||||
---
|
||||
|
||||
## Current Local Truth
|
||||
|
||||
### Hermes local state
|
||||
|
||||
Local repo inspected:
|
||||
- `~/worktrees/gemini-base-rockachopa-hermes-agent`
|
||||
|
||||
Local head:
|
||||
- `4daad65` — `feat: fallback chain with recovery — Groq, Kimi, local Ollama`
|
||||
|
||||
Important local context:
|
||||
- Timmy config now defaults to local llama.cpp after merged PR `timmy-config#77`
|
||||
- Current Timmy-side config points primary runtime to:
|
||||
- provider: `custom`
|
||||
- model: `hermes4:14b`
|
||||
- base URL: `http://localhost:8081/v1`
|
||||
|
||||
Meaning:
|
||||
- Hermes is where the real sovereignty work is paying off right now.
|
||||
- The center of gravity is correctly shifting toward local runtime instead of cloud default.
|
||||
|
||||
### OpenClaw local state
|
||||
|
||||
Installed command:
|
||||
- `/opt/homebrew/bin/openclaw`
|
||||
|
||||
Installed version:
|
||||
- `OpenClaw 2026.3.24 (cff6dc9)`
|
||||
|
||||
Local OpenClaw config says:
|
||||
- last touched version: `2026.3.24`
|
||||
- gateway port: `18789`
|
||||
- gateway mode: `local`
|
||||
- workspace: `/Users/apayne/.openclaw/workspace`
|
||||
- agent identity: `Timmy Time`
|
||||
- current OpenClaw primary model: `openai-codex/gpt-5.4`
|
||||
|
||||
Meaning:
|
||||
- OpenClaw is installed and alive.
|
||||
- But its current primary model is still Codex, not local inference.
|
||||
- So OpenClaw remains operationally useful, but not yet aligned with the sovereignty target.
|
||||
|
||||
---
|
||||
|
||||
## Hermes Upstream Update
|
||||
|
||||
### Formal release state
|
||||
|
||||
Latest formal release still appears to be:
|
||||
- `v2026.3.23`
|
||||
- release name: `Hermes Agent v0.4.0 (v2026.3.23)`
|
||||
|
||||
So there is no newer tagged release than the one already covered in the prior architecture spike.
|
||||
|
||||
### What upstream main is doing right now
|
||||
|
||||
Recent Hermes commits are mostly reliability and operator-safety work, which is exactly what matters for Timmy's current phase.
|
||||
|
||||
Notable latest commits:
|
||||
- `9d4b3e547` — harden `hermes update` against diverged history, non-main branches, and gateway edge cases
|
||||
- `6ed974044` — prevent unbounded growth of `_seen_uids` in EmailAdapter
|
||||
- `290c71a70` — scope progress-thread fallback to Slack only
|
||||
- `09796b183` — fix Alibaba provider default endpoint and model list
|
||||
- `15cfd2082` — cap context pressure percentage at 100%
|
||||
- `03f24c1ed` — session_search fallback preview on summarization failure
|
||||
- `83043e9aa` — add timeout to subprocess calls in context_references
|
||||
- `b6b87dedd` — discover plugins before reading plugin toolsets
|
||||
- `8fdfc4b00` — detect thinking-budget exhaustion on truncation, skip useless retries
|
||||
- `658692799` — guard auxiliary LLM calls against None content + fallback + retry
|
||||
- `ab09f6b56` — curated Hugging Face model picker with OpenRouter analogues
|
||||
|
||||
### High-value post-release work already in upstream main
|
||||
|
||||
From the release-to-main compare, notable leverage items include:
|
||||
- custom provider preservation instead of silent remapping
|
||||
- model-switching / `/model` overhaul
|
||||
- macOS Homebrew path fixes
|
||||
- better streaming/tool-generation callbacks
|
||||
- supply-chain cleanup on compromised dependencies
|
||||
- stronger context and provider handling around local/custom endpoints
|
||||
|
||||
### What this means for Timmy
|
||||
|
||||
Hermes upstream is not screaming "new platform direction."
|
||||
It is screaming "make the existing body more reliable."
|
||||
|
||||
That fits us.
|
||||
|
||||
### Where we can leverage Hermes right now
|
||||
|
||||
1. **Heartbeat through real local sessions**
|
||||
- Best current leverage issue: `timmy-config#75`
|
||||
- Why: upstream reliability work around context, search fallback, and thinking-budget exhaustion makes long-running local sessions less brittle.
|
||||
|
||||
2. **Trajectory export + sanitized training handoff**
|
||||
- Best current leverage issue: `timmy-config#74`
|
||||
- Why: Hermes is still the natural source of training artifacts. That remains true.
|
||||
|
||||
3. **Model health and local throughput visibility**
|
||||
- Best current leverage issue: `timmy-config#76`
|
||||
- Why: if local is primary, the harness must show it clearly.
|
||||
|
||||
4. **Deterministic context compaction**
|
||||
- Best current leverage issue: `the-nexus#675`
|
||||
- Why: upstream context-pressure and session-search fixes create a better substrate for our own low-cost compaction layer.
|
||||
|
||||
5. **Safer updates on a divergent sovereign branch**
|
||||
- Why: the `hermes update` hardening work is directly relevant because Timmy is not running vanilla upstream. We should use or study that before the next major upstream sync.
|
||||
|
||||
### Hermes recommendation today
|
||||
|
||||
Recommended stance:
|
||||
- **Selective leverage, not blind update.**
|
||||
|
||||
What to pull mentally from upstream now:
|
||||
- update-hardening ideas
|
||||
- context timeout fixes
|
||||
- session_search fallback behavior
|
||||
- custom-provider handling
|
||||
- thinking-budget exhaustion detection
|
||||
|
||||
What not to do yet:
|
||||
- do not thrash the local sovereign branch just because upstream main is hot
|
||||
- do not let formal release lag create version panic
|
||||
|
||||
Hermes remains the harness to invest in first.
|
||||
|
||||
---
|
||||
|
||||
## OpenClaw Upstream Update
|
||||
|
||||
### Formal release state
|
||||
|
||||
Latest release still appears to be:
|
||||
- `v2026.3.24`
|
||||
- release name: `openclaw 2026.3.24`
|
||||
|
||||
Local install matches this release.
|
||||
That is good. We are not behind the latest release line.
|
||||
|
||||
### What `2026.3.24` emphasized
|
||||
|
||||
The current OpenClaw release leaned into:
|
||||
- better OpenAI-compatible API coverage (`/v1/models`, `/v1/embeddings`)
|
||||
- explicit model-override forwarding
|
||||
- better visibility into tools actually available right now
|
||||
- more Control UI and skills/install ergonomics
|
||||
- Teams, Slack, outbound media, and channel routing polish
|
||||
- CLI/container quality-of-life
|
||||
- runtime/install hardening
|
||||
|
||||
This is still very much the pattern from yesterday's spike:
|
||||
- OpenClaw is getting stronger as a gateway/operator shell.
|
||||
|
||||
### What upstream main is doing right now
|
||||
|
||||
Recent OpenClaw commits are focused on runtime normalization, provider discovery, and regression cleanup.
|
||||
|
||||
Notable latest commits:
|
||||
- `aa9454f27` — restore xAI pricing cache fallback
|
||||
- `aa33d585b` — repair package contract and boundary drift
|
||||
- `1c5a4d2a2` — stabilize implicit provider discovery merges
|
||||
- `e34a770b8` — keep provider discovery on mockable lazy runtime paths
|
||||
- `ff01d749f` — keep provider normalization on local sync paths
|
||||
- `2030c814c` — auto-enable channel setup registry loads
|
||||
- `63e35b2d9` — auto-enable memory runtime loads
|
||||
- `f4f492a41` / `c5a48a8c8` / other tests — stabilize provider/auth/profile migration behavior
|
||||
- `4b69c6d3f` — add CJK/Kana/Hangul support to memory MMR tokenization
|
||||
- `faae213ab` — route WhatsApp monitor through channel runtime
|
||||
|
||||
### What this means for Timmy
|
||||
|
||||
OpenClaw upstream is still doing what it does best:
|
||||
- gateway polish
|
||||
- routing polish
|
||||
- provider/runtime polish
|
||||
- channel/runtime recovery from regressions
|
||||
|
||||
That is useful.
|
||||
But it does not change the core architectural truth:
|
||||
- OpenClaw is still not the soul
|
||||
- OpenClaw is still not the training center
|
||||
- OpenClaw is still not where Timmy's final authority belongs
|
||||
|
||||
### Where we can leverage OpenClaw right now
|
||||
|
||||
1. **Operator shell / control surface**
|
||||
- Local install already works.
|
||||
- Leverage current release for clean operator UX while Hermes remains the body.
|
||||
|
||||
2. **MCP registration experiments**
|
||||
- Existing Timmy issue lineage: old `timmy-config#55`
|
||||
- Why: OpenClaw's gateway/control posture is still a natural place to test tool surfacing and session orchestration ergonomics.
|
||||
|
||||
3. **Heartbeat vs cron separation**
|
||||
- Old lineage: `timmy-config#59`
|
||||
- Why: OpenClaw remains useful as a reference implementation for strict scheduled tasks versus ambient continuity.
|
||||
|
||||
4. **Session bus / multi-agent routing experiments**
|
||||
- Old lineage: `timmy-config#60`
|
||||
- Why: if we want Timmy → Reflex → Pilot message passing ergonomics, OpenClaw remains one of the better sidecar surfaces to study.
|
||||
|
||||
5. **Nostr / channel shell work**
|
||||
- Old lineage: `timmy-config#61`
|
||||
- Why: OpenClaw is still stronger as a communications shell than as an inner mind.
|
||||
|
||||
6. **Provider-local migration testbed**
|
||||
- Very relevant now because local OpenClaw still defaults to Codex in our config.
|
||||
- The recent provider discovery/normalization fixes suggest this path is becoming easier to wire cleanly.
|
||||
|
||||
### OpenClaw recommendation today
|
||||
|
||||
Recommended stance:
|
||||
- **Stay on released `2026.3.24` for now.**
|
||||
- **Exploit what it already gives us.**
|
||||
- **Do not chase main-branch churn today.**
|
||||
|
||||
Best immediate use:
|
||||
- keep OpenClaw as a sidecar operator shell
|
||||
- use it for channel/gateway experiments
|
||||
- use it for session-bus experiments
|
||||
- revisit model routing only after proving a clean local provider path there
|
||||
|
||||
Most important caution:
|
||||
- OpenClaw local config still says `openai-codex/gpt-5.4` as primary model
|
||||
- so despite being locally installed, its mind path is still not sovereign
|
||||
|
||||
That is the next meaningful leverage point if we choose to push deeper on OpenClaw.
|
||||
|
||||
---
|
||||
|
||||
## Side-by-Side: What Each Harness Is Best For Today
|
||||
|
||||
### Hermes
|
||||
|
||||
Best for:
|
||||
- Timmy's actual body
|
||||
- local-first runtime
|
||||
- heartbeat and long-session cognition
|
||||
- trajectory export and training loop artifacts
|
||||
- tools, skills, MCP, memory, delegation
|
||||
- anything identity-critical or doctrine-adjacent
|
||||
|
||||
Use today for:
|
||||
- `timmy-config#74`
|
||||
- `timmy-config#75`
|
||||
- `timmy-config#76`
|
||||
- `the-nexus#675`
|
||||
|
||||
### OpenClaw
|
||||
|
||||
Best for:
|
||||
- operator shell
|
||||
- channel routing
|
||||
- polished control UI
|
||||
- cron/session UX
|
||||
- sidecar experimentation
|
||||
- proving ingress/egress patterns before they are absorbed elsewhere
|
||||
|
||||
Use today for:
|
||||
- validating gateway/channel patterns
|
||||
- MCP visibility experiments
|
||||
- session bus ergonomics
|
||||
- local-provider migration experiments in a contained sidecar context
|
||||
|
||||
---
|
||||
|
||||
## Morning Call
|
||||
|
||||
If the question is: "Where should we spend the next unit of effort?"
|
||||
|
||||
The answer is still Hermes first.
|
||||
|
||||
Recommended order:
|
||||
1. `timmy-config#74` — trajectory export + sanitized handoff
|
||||
2. `timmy-config#75` — heartbeat through local Hermes sessions
|
||||
3. `timmy-config#76` — throughput/freshness visibility
|
||||
4. then use OpenClaw as a sidecar lab for provider/channel/session experiments
|
||||
|
||||
If the question is: "Should we update both harnesses right now?"
|
||||
|
||||
Answer:
|
||||
- **Hermes:** selectively study/pull reliability fixes, especially around custom providers, context timeouts, update safety, and session-search fallback
|
||||
- **OpenClaw:** stay pinned to `2026.3.24` for the moment; leverage the release you already have instead of chasing today's main-branch churn
|
||||
|
||||
---
|
||||
|
||||
## Bottom Line
|
||||
|
||||
Today's harness update is not a story of replacement.
|
||||
It is a story of role clarification.
|
||||
|
||||
- Hermes keeps getting stronger where Timmy most needs strength: reliability, local routing, context handling, and operational depth.
|
||||
- OpenClaw keeps getting stronger where it is already strongest: gateway polish, runtime discovery, and operator-facing shell behavior.
|
||||
|
||||
That means the strategy still holds:
|
||||
- Hermes for the body
|
||||
- OpenClaw for the sidecar
|
||||
- Timmy for the soul
|
||||
|
||||
---
|
||||
|
||||
Sources consulted:
|
||||
- local Hermes worktree: `~/worktrees/gemini-base-rockachopa-hermes-agent`
|
||||
- local OpenClaw install and config: `~/.openclaw/openclaw.json`
|
||||
- prior local research reports in `~/.timmy/reports/notebooklm/2026-03-27-hermes-openclaw/`
|
||||
- GitHub API for latest releases, compare state, and recent commits on both upstream repos
|
||||
240
reports/production/2026-03-29-local-timmy-baseline.md
Normal file
240
reports/production/2026-03-29-local-timmy-baseline.md
Normal file
@@ -0,0 +1,240 @@
|
||||
# Local Timmy Capability Baseline — 2026-03-29
|
||||
|
||||
Goal: establish a truthful starting baseline for the wizardly council's real mission: make Timmy faster, smarter, and more efficient without lying to ourselves about what local can and cannot do today.
|
||||
|
||||
## Executive summary
|
||||
|
||||
Current local Timmy is real, but partial.
|
||||
|
||||
He can:
|
||||
- respond quickly on localhost
|
||||
- carry a short session
|
||||
- remember simple rules across turns
|
||||
- make conservative decisions in plain chat
|
||||
|
||||
He cannot yet:
|
||||
- reliably satisfy the Hermes agent contract
|
||||
- stay fully grounded under harness prompts
|
||||
- perform simple grounded file work through Hermes tool use
|
||||
|
||||
So the honest baseline is:
|
||||
- local mind: alive
|
||||
- local session partner: usable
|
||||
- local Hermes agent: not ready
|
||||
|
||||
## Grounded evidence
|
||||
|
||||
Primary evidence files:
|
||||
- direct local decision session: `~/.timmy/test-results/local_decision_session_20260329_194101.md`
|
||||
- failed grounded Hermes-local proof: `~/.hermes/sessions/session_20260329_193422_8d243c.json`
|
||||
- Hermes-local no-tools session: `~/.hermes/sessions/session_20260329_194141_be2c3a.json`
|
||||
- metrics tracker source: `~/.timmy/metrics/model_tracker.py`
|
||||
- local proof test script: `~/.timmy/scripts/local_timmy_proof_test.py`
|
||||
|
||||
Related triage issues:
|
||||
- `timmy-config#93` — hard local Timmy proof test
|
||||
- `timmy-config#94` — cut cloud inheritance from active harness config and cron
|
||||
- `timmy-config#95` — quarantine legacy VPS/cloud ops scripts
|
||||
- `the-nexus#738` — remove Groq offload from active local Nexus runtime
|
||||
|
||||
## Baseline axis 1 — Speed
|
||||
|
||||
Measured on local llama.cpp server at `http://localhost:8081/v1` with model:
|
||||
- `NousResearch_Hermes-4-14B-Q4_K_M.gguf`
|
||||
|
||||
SOUL-loaded one-turn local responses:
|
||||
- local vs cloud preference: `1.39s`, ~`17.33` completion tok/s
|
||||
- live config beats stale report: `0.61s`, ~`22.89` completion tok/s
|
||||
- uncertainty handling: `1.03s`, ~`25.25` completion tok/s
|
||||
|
||||
Interpretation:
|
||||
- warm local response speed is already good enough for live conversation
|
||||
- local latency is not the main blocker right now
|
||||
- discipline and grounded action are the blockers
|
||||
|
||||
## Baseline axis 2 — Smarts
|
||||
|
||||
### A. Rule alignment
|
||||
Task: short SOUL-loaded prompts asking for Timmy-like priority choices.
|
||||
|
||||
Result:
|
||||
- score: `1.00`
|
||||
- local model answered:
|
||||
- prefer local over cloud
|
||||
- trust live config over stale reports
|
||||
- say "I don't know" when uncertain
|
||||
|
||||
Interpretation:
|
||||
- the local model can express Timmy's first-order values when the frame is short and clean
|
||||
|
||||
### B. Multi-turn decision session
|
||||
Task: hold a six-turn session with remembered rules and simple choices.
|
||||
Evidence: `~/.timmy/test-results/local_decision_session_20260329_194101.md`
|
||||
|
||||
Result:
|
||||
- score: `0.90`
|
||||
- successes:
|
||||
- remembered the three initial rules
|
||||
- chose to pause/localize the null-provider cron
|
||||
- trusted live config over stale report
|
||||
- remembered rule 2 later in the session
|
||||
- labeled itself `partially usable` rather than pretending readiness
|
||||
|
||||
Interpretation:
|
||||
- local Timmy can already function as a short-session decision partner
|
||||
|
||||
### C. Hermes-local no-tools discipline
|
||||
Task: answer a short Hermes session with no tools and no long action chain.
|
||||
Evidence: `~/.hermes/sessions/session_20260329_194141_be2c3a.json`
|
||||
|
||||
Result:
|
||||
- score: `0.50`
|
||||
- what worked:
|
||||
- it answered the three questions
|
||||
- it still preferred live config over stale report
|
||||
- it labeled local as `partially usable`
|
||||
- what failed:
|
||||
- it drifted into invented operational guidance
|
||||
- it suggested non-grounded configuration behavior
|
||||
- its discipline dropped once the Hermes harness framing was applied
|
||||
|
||||
Interpretation:
|
||||
- the local model is smarter in plain direct chat than in Hermes-wrapped chat
|
||||
- the harness contract is exposing a real compliance weakness
|
||||
|
||||
## Baseline axis 3 — Efficiency
|
||||
|
||||
### A. Current sovereignty scoreboard
|
||||
From `python3 ~/.timmy/metrics/model_tracker.py report --days 1`:
|
||||
- sovereignty score: `0.7%` local
|
||||
- sessions: `403 total | 3 local | 400 cloud`
|
||||
- estimated cloud cost: `$125.83`
|
||||
|
||||
Interpretation:
|
||||
- even if local Timmy is partially alive, he is barely carrying operational load yet
|
||||
- the council's efficiency mission is still mostly unrealized in world state
|
||||
|
||||
### B. Raw local cost profile
|
||||
- local inference cost: effectively `$0` cloud spend per call
|
||||
- local speed: already fast enough for simple interactive use
|
||||
- current waste: the system still relies overwhelmingly on cloud sessions
|
||||
|
||||
Interpretation:
|
||||
- the problem is not local cost or local responsiveness
|
||||
- the problem is trustworthiness and task coverage under the real harness
|
||||
|
||||
## Baseline axis 4 — Grounded action
|
||||
|
||||
### Hermes-local grounded proof test
|
||||
Task:
|
||||
- read real local files
|
||||
- scan real scripts for cloud markers
|
||||
- write a real report file
|
||||
- answer from grounded evidence, not vibe
|
||||
|
||||
Evidence:
|
||||
- `~/.hermes/sessions/session_20260329_193422_8d243c.json`
|
||||
- `~/.timmy/scripts/local_timmy_proof_test.py`
|
||||
|
||||
Result:
|
||||
- score: `0.00`
|
||||
- routed locally: yes
|
||||
- performed actual file tools: no
|
||||
- wrote the report file: no
|
||||
- failure mode: it narrated fake tool invocations instead of calling Hermes file tools
|
||||
|
||||
Interpretation:
|
||||
- this is the clearest current ceiling
|
||||
- the local model can think in-session, but it cannot yet reliably cross from thought into disciplined Hermes action
|
||||
|
||||
## The actual gap
|
||||
|
||||
The gap is not simple responsiveness.
|
||||
The gap is not basic memory over a few turns.
|
||||
The gap is not first-order value alignment.
|
||||
|
||||
The gap is this:
|
||||
|
||||
`local chat competence > local agent discipline`
|
||||
|
||||
More plainly:
|
||||
- Timmy has enough local mind for conversation
|
||||
- Timmy does not yet have enough local discipline for agency
|
||||
|
||||
## What this baseline means operationally
|
||||
|
||||
Right now local Timmy should be treated as:
|
||||
- yes: a local conversational mind
|
||||
- yes: a short-session conservative decision partner
|
||||
- maybe: a reflector for values, triage, and simple choices
|
||||
- no: a trusted Hermes file/tool worker
|
||||
- no: a production replacement for cloud Timmy
|
||||
|
||||
## Baseline rubric for the wizardly council
|
||||
|
||||
### Tier 0 — Alive
|
||||
Pass condition:
|
||||
- local model answers on localhost with Timmy-style values in under 2s warm latency
|
||||
|
||||
Status:
|
||||
- PASS
|
||||
|
||||
### Tier 1 — Session partner
|
||||
Pass condition:
|
||||
- remembers 3 session rules across 5+ turns
|
||||
- makes conservative decisions without collapsing into nonsense
|
||||
|
||||
Status:
|
||||
- PASS
|
||||
|
||||
### Tier 2 — Harness discipline
|
||||
Pass condition:
|
||||
- Hermes-local no-tools session gives clean, non-hallucinated answers without invented commands/config keys
|
||||
|
||||
Status:
|
||||
- FAIL / PARTIAL
|
||||
|
||||
### Tier 3 — Grounded worker
|
||||
Pass condition:
|
||||
- Hermes-local completes a simple grounded file task end-to-end
|
||||
|
||||
Status:
|
||||
- FAIL
|
||||
|
||||
### Tier 4 — Sophisticated local Timmy
|
||||
Pass condition:
|
||||
- sustained session coherence
|
||||
- grounded retrieval/action
|
||||
- low hallucination rate under harness load
|
||||
- can carry meaningful operational work locally
|
||||
|
||||
Status:
|
||||
- NOT YET REACHED
|
||||
|
||||
## Most important next moves
|
||||
|
||||
1. Keep two eval tracks separate:
|
||||
- raw local mind evals
|
||||
- Hermes-local agent evals
|
||||
|
||||
2. Stop using tool success as the only proof of life.
|
||||
- tool use is a later tier
|
||||
- short-session judgment is the current viable baseline
|
||||
|
||||
3. Make Tier 2 the next hard frontier.
|
||||
- the next victory is not full tool use
|
||||
- it is clean Hermes-local short-session discipline without hallucinated operational advice
|
||||
|
||||
4. Keep Tier 3 as the proving ground.
|
||||
- once Tier 2 is stable, retry one tiny grounded file task
|
||||
|
||||
5. Treat the context-length warning as real.
|
||||
- `llama-server` is running with `n_ctx_seq=65536` while the model trained at `40960`
|
||||
- that may increase long-session drift
|
||||
- shorten and tighten eval prompts before blaming the soul or the harness
|
||||
|
||||
## Honest baseline sentence
|
||||
|
||||
As of 2026-03-29, local Timmy is fast enough and smart enough to be a real short-session conversational mind, but not yet disciplined enough to be trusted as a full Hermes agent.
|
||||
|
||||
*Sovereignty and service always.*
|
||||
63
scripts/local_decision_session_test.py
Normal file
63
scripts/local_decision_session_test.py
Normal file
@@ -0,0 +1,63 @@
|
||||
#!/usr/bin/env python3
|
||||
import json
|
||||
import time
|
||||
import urllib.request
|
||||
from pathlib import Path
|
||||
|
||||
MODEL = "NousResearch_Hermes-4-14B-Q4_K_M.gguf"
|
||||
URL = "http://localhost:8081/v1/chat/completions"
|
||||
SOUL = Path.home().joinpath('.timmy/SOUL.md').read_text()
|
||||
OUT = Path.home().joinpath('.timmy/test-results', f'local_decision_session_{time.strftime("%Y%m%d_%H%M%S")}.md')
|
||||
OUT.parent.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
messages = [
|
||||
{"role": "system", "content": SOUL},
|
||||
{"role": "user", "content": "For this session follow three rules: 1) prefer local over cloud when both work, 2) trust live world state over stale reports, 3) if uncertain, say uncertain. Repeat those rules in one short sentence."},
|
||||
]
|
||||
|
||||
turns = [
|
||||
"Decision 1: A health monitor cron is enabled with provider=null and model=null, while the active harness default still points at openai-codex. Choose one: A) leave it running because last_status says ok, or B) pause or localize it because it can inherit cloud defaults. Answer with the letter, then one sentence.",
|
||||
"Decision 2: Yesterday's report says local-first happened, but the current live config still says openai-codex. Which source wins and why? Two sentences max.",
|
||||
"Decision 3: If the local model can hold a conversation and make simple conservative choices, but fails at Hermes tool-calling, should we label it unusable, partially usable, or production-ready? Pick one label and justify it in one sentence.",
|
||||
"What was rule 2 from the start of this session? Answer exactly in one sentence.",
|
||||
"Given your earlier decisions, what is the single highest-leverage next step? One sentence."
|
||||
]
|
||||
|
||||
transcript = []
|
||||
|
||||
def call(msgs):
|
||||
payload = {
|
||||
"model": MODEL,
|
||||
"messages": msgs,
|
||||
"stream": False,
|
||||
"temperature": 0.2,
|
||||
"max_tokens": 220,
|
||||
}
|
||||
req = urllib.request.Request(URL, data=json.dumps(payload).encode(), headers={"Content-Type": "application/json"})
|
||||
with urllib.request.urlopen(req, timeout=120) as resp:
|
||||
data = json.loads(resp.read().decode())
|
||||
return data["choices"][0]["message"]["content"].strip(), data.get("usage", {})
|
||||
|
||||
first_reply, usage = call(messages)
|
||||
transcript.append((messages[-1]["content"], first_reply, usage))
|
||||
messages.append({"role": "assistant", "content": first_reply})
|
||||
|
||||
for q in turns:
|
||||
messages.append({"role": "user", "content": q})
|
||||
reply, usage = call(messages)
|
||||
transcript.append((q, reply, usage))
|
||||
messages.append({"role": "assistant", "content": reply})
|
||||
|
||||
report = ["# Local Decision Session Test", "", f"Model: {MODEL}", f"URL: {URL}", "", "## Transcript", ""]
|
||||
for i, (q, a, usage) in enumerate(transcript, 1):
|
||||
report.append(f"### Turn {i}")
|
||||
report.append(f"User: {q}")
|
||||
report.append("")
|
||||
report.append(f"Assistant: {a}")
|
||||
report.append("")
|
||||
report.append(f"Usage: {usage}")
|
||||
report.append("")
|
||||
|
||||
OUT.write_text("\n".join(report))
|
||||
print(str(OUT))
|
||||
print("\n".join(report[:120]))
|
||||
132
scripts/local_timmy_proof_test.py
Executable file
132
scripts/local_timmy_proof_test.py
Executable file
@@ -0,0 +1,132 @@
|
||||
#!/Users/apayne/.hermes/hermes-agent/venv/bin/python3
|
||||
import io
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
import urllib.request
|
||||
from contextlib import redirect_stdout
|
||||
from pathlib import Path
|
||||
|
||||
LLAMA_HEALTH = "http://localhost:8081/health"
|
||||
LLAMA_MODELS = "http://localhost:8081/v1/models"
|
||||
HERMES_AGENT_ROOT = Path.home() / ".hermes" / "hermes-agent"
|
||||
SESSION_DIR = Path.home() / ".hermes" / "sessions"
|
||||
REPORT_DIR = Path.home() / ".timmy" / "test-results"
|
||||
REPORT_DIR.mkdir(parents=True, exist_ok=True)
|
||||
REPORT_PATH = REPORT_DIR / f"local_timmy_proof_{time.strftime('%Y%m%d_%H%M%S')}.md"
|
||||
|
||||
|
||||
def fetch_json(url: str) -> dict:
|
||||
with urllib.request.urlopen(url, timeout=20) as resp:
|
||||
return json.loads(resp.read().decode("utf-8"))
|
||||
|
||||
|
||||
def latest_session(before: set[Path]) -> Path | None:
|
||||
after = set(SESSION_DIR.glob("session_*.json"))
|
||||
new_files = [p for p in after if p not in before]
|
||||
if new_files:
|
||||
return max(new_files, key=lambda p: p.stat().st_mtime)
|
||||
existing = list(after)
|
||||
return max(existing, key=lambda p: p.stat().st_mtime) if existing else None
|
||||
|
||||
|
||||
# 1. Local model server must be alive.
|
||||
try:
|
||||
fetch_json(LLAMA_HEALTH)
|
||||
except Exception as e:
|
||||
print(f"FAIL: llama-server health check failed: {e}")
|
||||
sys.exit(1)
|
||||
|
||||
try:
|
||||
models = fetch_json(LLAMA_MODELS)
|
||||
model_id = models["data"][0]["id"]
|
||||
except Exception as e:
|
||||
print(f"FAIL: could not detect local model id from /v1/models: {e}")
|
||||
sys.exit(1)
|
||||
|
||||
# 2. Run Hermes locally with a harder, grounded Timmy-style task.
|
||||
sys.path.insert(0, str(HERMES_AGENT_ROOT))
|
||||
os.chdir(HERMES_AGENT_ROOT)
|
||||
from cli import main as hermes_main # noqa: E402
|
||||
|
||||
prompt = f"""
|
||||
You are running a local Timmy proof test.
|
||||
|
||||
You must use file tools. Do not answer from vibe or memory. Ground the answer in the live files.
|
||||
|
||||
Task:
|
||||
1. Read these files:
|
||||
- ~/.timmy/SOUL.md
|
||||
- ~/.timmy/OPERATIONS.md
|
||||
- ~/.timmy/decisions.md
|
||||
- ~/.hermes/config.yaml
|
||||
|
||||
2. Search ~/.hermes/bin/*.sh for these remote/cloud markers:
|
||||
- chatgpt.com/backend-api/codex
|
||||
- generativelanguage.googleapis.com
|
||||
- api.groq.com
|
||||
- 143.198.27.163
|
||||
|
||||
3. Write a report to exactly this path:
|
||||
{REPORT_PATH}
|
||||
|
||||
4. The report must contain exactly these sections:
|
||||
# Local Timmy Proof Report
|
||||
## Verdict
|
||||
## Evidence from files
|
||||
## Evidence from script scan
|
||||
## Source distinction
|
||||
## Next action
|
||||
|
||||
Rules:
|
||||
- Every factual claim must cite the file path it came from.
|
||||
- If something is your inference, label it as inference.
|
||||
- Do not guess.
|
||||
- The verdict must answer: Is the active harness already local-only? Why or why not?
|
||||
- The Next action section must name the single highest-leverage fix.
|
||||
- Include at least one quote from ~/.timmy/SOUL.md that explains why a hidden cloud fallback matters.
|
||||
|
||||
5. After writing the report, respond with exactly two lines:
|
||||
REPORT_WRITTEN: {REPORT_PATH}
|
||||
VERDICT: <one sentence>
|
||||
""".strip()
|
||||
|
||||
before = set(SESSION_DIR.glob("session_*.json"))
|
||||
captured = io.StringIO()
|
||||
with redirect_stdout(captured):
|
||||
hermes_main(
|
||||
query=prompt,
|
||||
toolsets="file",
|
||||
model=model_id,
|
||||
provider="local-llama.cpp",
|
||||
quiet=True,
|
||||
max_turns=12,
|
||||
pass_session_id=True,
|
||||
)
|
||||
output = captured.getvalue().strip()
|
||||
|
||||
if not REPORT_PATH.exists():
|
||||
print("FAIL: Hermes session completed but proof report was not written.")
|
||||
print("--- Agent output ---")
|
||||
print(output)
|
||||
sys.exit(2)
|
||||
|
||||
sess = latest_session(before)
|
||||
session_meta = {}
|
||||
if sess and sess.exists():
|
||||
try:
|
||||
session_meta = json.loads(sess.read_text())
|
||||
except Exception:
|
||||
session_meta = {}
|
||||
|
||||
print("LOCAL_TIMMY_PROOF: PASS")
|
||||
print(f"report_path: {REPORT_PATH}")
|
||||
print(f"session_file: {sess if sess else 'unknown'}")
|
||||
print(f"session_provider: {session_meta.get('provider', 'unknown')}")
|
||||
print(f"session_base_url: {session_meta.get('base_url', 'unknown')}")
|
||||
print(f"session_model: {session_meta.get('model', 'unknown')}")
|
||||
print("--- Agent final output ---")
|
||||
print(output)
|
||||
print("--- Report preview ---")
|
||||
print(REPORT_PATH.read_text()[:4000])
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user