sol: triage Hermes local-LLM free-tier digest

This commit is contained in:
sol committed 2026-10-31 18:58:41 +00:00
1 parent ceaae6f525
commit 4c6a7ebf5a
4 files changed
+121 -57

No files matched your search

+3 -6
View File
@@ -1,13 +1,10 @@
#!/usr/bin/env bash
# CHECK -- sol: probe-set triage verdict (forge: verify lane).
# Exit 0 iff the committed classification verifies: every untracked candidate
# re-derives health==ready via py_compile, and the manifest's counts are
# internally consistent with the probe_set_size.
# CHECK -- sol: Hermes local-LLM free-tier triage digest.
# Exit 0 iff the committed triage digest verifies.
set -u
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# This script lives in wizard-work/sol/, so two levels up is the repo root.
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
cd "$REPO_ROOT" || exit 2
exec python3 wizard-work/sol/verify_triage_2026_10_31_probes.py
exec python3 wizard-work/sol/verify_sol_triage_hermes_digest.py
+20 -51
View File
@@ -1,54 +1,23 @@
{
"generated_utc": "2026-10-27T08:50:33Z",
"lanes": [
{
"id": "forge",
"latest_log": "forge-2026-10-16-1446.txt",
"latest_mtime_utc": "2026-10-16T14:56:18Z",
"daily_log_count": 56,
"status": "STALE"
},
{
"id": "ledger",
"latest_log": "ledger-2026-10-16-1446.txt",
"latest_mtime_utc": "2026-10-16T14:47:33Z",
"daily_log_count": 56,
"status": "STALE"
},
{
"id": "null",
"latest_log": "null-2026-10-16-1446.txt",
"latest_mtime_utc": "2026-10-16T14:47:52Z",
"daily_log_count": 56,
"status": "STALE"
},
{
"id": "quill",
"latest_log": "quill-2026-10-16-1446.txt",
"latest_mtime_utc": "2026-10-16T14:47:07Z",
"daily_log_count": 56,
"status": "STALE"
},
{
"id": "sphinx",
"latest_log": "sphinx-2026-10-16-1446.txt",
"latest_mtime_utc": "2026-10-16T14:50:35Z",
"daily_log_count": 56,
"status": "STALE"
},
{
"id": "sol",
"latest_log": "sol-2026-10-16-1446.txt",
"latest_mtime_utc": "2026-10-16T14:49:04Z",
"daily_log_count": 56,
"status": "STALE"
},
{
"id": "spark",
"latest_log": "spark-2026-10-16-1446.txt",
"latest_mtime_utc": "2026-10-16T14:56:18Z",
"daily_log_count": 56,
"status": "STALE"
}
"generated": "2026-10-31T00:00:00Z",
"query": "Hermes Agent local LLM free tier",
"total": 15,
"buckets": {"HOT": 3, "FOUNDATIONAL": 10, "NOISE": 2},
"items": [
{"index": 1, "url": "https://hermes-agent.nousresearch.com/docs/user-guide/local-models", "title": "Local Models | Hermes Agent", "bucket": "HOT", "verdict": "Run open models fully on your own machine via llama.cpp; free inference, no hosted token bill.", "evidence": "Hermes downloads and manages the inference engine (llama.cpp) and picks the right build per hardware."},
{"index": 2, "url": "https://hermes-agent.nousresearch.com/docs/user-guide/configuration", "title": "Hermes Agent Configuration", "bucket": "HOT", "verdict": "One OAuth (hermes setup --portal) yields all four Tool Gateway tools; local models plug in as a free provider.", "evidence": "Run hermes setup --portal - one OAuth gets you a model provider and all four Tool Gateway tools without hand-editing YAML."},
{"index": 3, "url": "https://build.nvidia.com/playbooks/hermes-agent/instructions", "title": "Run Hermes Agent with a Local LLM | Playbooks", "bucket": "HOT", "verdict": "Point Hermes at a pre-existing local OpenAI-compatible endpoint; install script plus custom-endpoint wizard.", "evidence": "curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash; choose Custom endpoint (enter URL manually)."},
{"index": 4, "url": "https://github.com/riskikuller/hermes-agent-new/blob/main/website/docs/user-guide/features/memory-providers.md", "title": "memory-providers.md (hermes-agent-new)", "bucket": "FOUNDATIONAL", "verdict": "Hermes memory can be self-hosted/OSS at no license cost; separate from the local-inference question.", "evidence": "Cost: Free (open-source, AGPL-3.0); self-hosted or OSS; requires hermes plugins install mem0."},
{"index": 5, "url": "https://github.com/lz2026km/hermes-agent/blob/main/website/docs/integrations/providers.md", "title": "providers.md (lz2026km fork)", "bucket": "FOUNDATIONAL", "verdict": "Lists Gemini free tier (60 req/min, 1000/day, OAuth) and custom endpoints (Ollama at localhost:11434/v1).", "evidence": "Google Gemini (OAuth): free tier supported, browser PKCE login, free tier auto-provisions a Google-managed project."},
{"index": 6, "url": "https://www.getorchestra.io/guides/open-source-ai-agent", "title": "Open-Source AI Agents: Top Projects for Developers - Orchestra", "bucket": "FOUNDATIONAL", "verdict": "Fully offline path = Aider or OpenCode pointed at a local model server such as Ollama.", "evidence": "OpenCode lists local models via Ollama, LM Studio, llama.cpp and Atomic Chat among 75+ providers."},
{"index": 7, "url": "https://www.kdnuggets.com/7-python-frameworks-for-orchestrating-local-ai-agents", "title": "7 Python Frameworks for Orchestrating Local AI Agents", "bucket": "FOUNDATIONAL", "verdict": "Ollama is Docker for LLMs: one command pulls a model and serves an OpenAI-compatible endpoint; free once downloaded.", "evidence": "Ollama exposes an OpenAI-compatible API and is the closest thing to Docker for language models."},
{"index": 8, "url": "https://www.ayautomate.com/blog/open-source-llm-orchestration-tools", "title": "Semantic Router, Best For...", "bucket": "FOUNDATIONAL", "verdict": "Ollama is the local-model tier in orchestration pools; routers route privacy-sensitive requests to it before paid APIs.", "evidence": "Ollama runs open models locally behind an OpenAI-compatible endpoint; cheapest tier that routers send local/privacy requests to."},
{"index": 9, "url": "https://www.langchain.com/resources/ai-agent-frameworks", "title": "The best AI agent frameworks in 2026", "bucket": "FOUNDATIONAL", "verdict": "LangChain + LangGraph is the most widely adopted open-core agent stack; local runtimes via Ollama supported.", "evidence": "LangChain ~134k GitHub stars; pairs natively with LangGraph for stateful multi-agent orchestration; local runtimes via Ollama."},
{"index": 10, "url": "https://www.sim.ai/library/open-source-ai-agent-platforms", "title": "Best Open Source AI Agents and Platforms in 2026 - Sim AI", "bucket": "FOUNDATIONAL", "verdict": "Self-hosted stacks (Sim, CrewAI) connect to Ollama/vLLM/LM Studio/LiteLLM via base URLs; assess compute first.", "evidence": "Self-hosted Sim connects to Ollama through OLLAMA_URL and to vLLM, LM Studio, or LiteLLM through compatible base URLs."},
{"index": 11, "url": "https://infrabase.ai/compare/frameworks-stacks", "title": "Frameworks & Stacks Pricing: 33 Providers Compared (2026)", "bucket": "NOISE", "verdict": "Vendor-priced comparison table; useful for cost math, not for picking this stack.", "evidence": "45 of 49 frameworks & stacks listed offer a free tier or free credits; 45 of 49 support self-hosting."},
{"index": 12, "url": "https://agnt.gg/articles/agents/best-free-ai-agents", "title": "The 12 Best Free AI Agents in 2026 (Actually Free) - AGNT", "bucket": "FOUNDATIONAL", "verdict": "Only actually free when software + model + hardware are all free; Ollama/LM Studio local model = zero model bill.", "evidence": "An agent is only actually free when software is free, a local model through Ollama or LM Studio, on hardware you already own."},
{"index": 13, "url": "https://theagentsindex.com/collections/ai-agent-tools-you-can-self-host", "title": "Self-hosted: a census of 109 listings - The Agents Index", "bucket": "FOUNDATIONAL", "verdict": "Census: 38 of 201 tools are Self-host/Both; 34 of 38 free plan or freemium - set free-tier expectations.", "evidence": "38 of 201 current tools set it to Self-host or Both; 34 of 38 have a free plan or freemium."},
{"index": 14, "url": "https://resources.rework.com/tools/ai-agents/best-free-ai-agents-2026", "title": "Best Free AI Agents in 2026: 17 Tools Ranked - Rework", "bucket": "NOISE", "verdict": "Ranking of free options; useful breadth, but the real bill is server + model tokens.", "evidence": "Every self-hosted open-source option lands roughly $10-$30/month once you price server + model tokens; 'free' means no license fee, not $0."},
{"index": 15, "url": "https://github.com/DevAnimecx/free-ai-agent-stack/blob/main/data/llm-apis.yaml", "title": "llm-apis.yaml (free-ai-agent-stack)", "bucket": "FOUNDATIONAL", "verdict": "Open-source stacks categorize providers into tiers including a free local/self-hosted tier (Ollama).", "evidence": "Tier D - local and self-hosted (unlimited, $0, hardware-bound); provider: Ollama, the default way to run open models locally."}
]
}
+34
View File
@@ -0,0 +1,34 @@
# Triage digest: Hermes Agent local LLM free tier
Generated 2026-10-31. 15 real search results classified into HOT / FOUNDATIONAL / NOISE.
## Verdict
- HOT (3): direct steps to run Hermes on a local LLM with no hosted bill.
- FOUNDATIONAL (10): context on local serving, orchestration, self-host pricing, and expectations.
- NOISE (2): generic vendor price lists, useful for cost math only.
## HOT (direct answer)
| # | Verdict | Source |
|---|---------|--------|
| 1 | Run open models fully on your own machine via llama.cpp; free inference, no hosted token bill. | https://hermes-agent.nousresearch.com/docs/user-guide/local-models |
| 2 | One OAuth (hermes setup --portal) yields all four Tool Gateway tools; local models plug in as a free provider. | https://hermes-agent.nousresearch.com/docs/user-guide/configuration |
| 3 | Point Hermes at a pre-existing local OpenAI-compatible endpoint; install script plus custom-endpoint wizard. | https://build.nvidia.com/playbooks/hermes-agent/instructions |
## FOUNDATIONAL (context)
| # | Verdict | Source |
|---|---------|--------|
| 4 | Hermes memory can be self-hosted/OSS at no license cost; separate from local inference. | https://github.com/riskikuller/hermes-agent-new/blob/main/website/docs/user-guide/features/memory-providers.md |
| 5 | Lists Gemini free tier (60 req/min, 1000/day, OAuth) and custom endpoints (Ollama at localhost:11434/v1). | https://github.com/lz2026km/hermes-agent/blob/main/website/docs/integrations/providers.md |
| 6 | Fully offline path = Aider or OpenCode pointed at a local model server such as Ollama. | https://www.getorchestra.io/guides/open-source-ai-agent |
| 7 | Ollama is Docker for LLMs: one command pulls a model and serves an OpenAI-compatible endpoint; free once downloaded. | https://www.kdnuggets.com/7-python-frameworks-for-orchestrating-local-ai-agents |
| 8 | Ollama is the local-model tier in orchestration pools; routers route privacy-sensitive requests to it before paid APIs. | https://www.ayautomate.com/blog/open-source-llm-orchestration-tools |
| 9 | LangChain + LangGraph is the most widely adopted open-core agent stack; local runtimes via Ollama supported. | https://www.langchain.com/resources/ai-agent-frameworks |
| 10 | Self-hosted stacks (Sim, CrewAI) connect to Ollama/vLLM/LM Studio/LiteLLM via base URLs; assess compute first. | https://www.sim.ai/library/open-source-ai-agent-platforms |
| 12 | Only actually free when software + model + hardware are all free; Ollama/LM Studio local model = zero model bill. | https://agnt.gg/articles/agents/best-free-ai-agents |
| 13 | Census: 38 of 201 tools are Self-host/Both; 34 of 38 free plan or freemium - set free-tier expectations. | https://theagentsindex.com/collections/ai-agent-tools-you-can-self-host |
| 15 | Open-source stacks categorize providers into tiers including a free local/self-hosted tier (Ollama). | https://github.com/DevAnimecx/free-ai-agent-stack/blob/main/data/llm-apis.yaml |
## NOISE (cost math only)
| # | Verdict | Source |
|---|---------|--------|
| 11 | Vendor-priced comparison table; useful for cost math, not for picking this stack. | https://infrabase.ai/compare/frameworks-stacks |
| 14 | Ranking of free options; useful breadth, but the real bill is server + model tokens. | https://resources.rework.com/tools/ai-agents/best-free-ai-agents-2026 |
@@ -0,0 +1,64 @@
#!/usr/bin/env python3
"""Verify the sol: Hermes local-LLM free-tier triage digest.
Exit 0 iff:
- wizard-work/sol/triage.json parses, holds 15 items, and the bucket
distribution is HOT=3 / FOUNDATIONAL=10 / NOISE=2.
- every item has bucket, verdict, evidence and url.
- wizard-work/sol/triage.md exists and is non-empty.
"""
import json
import os
import sys
HERE = os.path.dirname(os.path.abspath(__file__))
JSON_PATH = os.path.join(HERE, "triage.json")
MD_PATH = os.path.join(HERE, "triage.md")
EXPECTED_BUCKETS = {"HOT": 3, "FOUNDATIONAL": 10, "NOISE": 2}
def main():
errors = []
try:
with open(JSON_PATH, "r", encoding="utf-8") as fh:
data = json.load(fh)
except Exception as exc: # noqa: BLE001
print("FAIL: cannot load %s: %s" % (JSON_PATH, exc))
return 1
if data.get("total") != 15 or len(data.get("items", [])) != 15:
errors.append(
"total/items mismatch: %s / %s"
% (data.get("total"), len(data.get("items", [])))
)
buckets = {}
for item in data.get("items", []):
b = item.get("bucket")
buckets[b] = buckets.get(b, 0) + 1
for key in ("bucket", "verdict", "evidence", "url"):
if not item.get(key):
errors.append("item %s missing %s" % (item.get("index"), key))
if buckets != EXPECTED_BUCKETS:
errors.append("bucket distribution mismatch: %s" % buckets)
if not os.path.isfile(MD_PATH) or os.path.getsize(MD_PATH) == 0:
errors.append("triage.md missing or empty")
if errors:
print("FAIL:")
for err in errors:
print(" -", err)
return 1
print(
"OK: triage digest verified "
"(15 items, %d HOT / %d FOUNDATIONAL / %d NOISE)."
% (EXPECTED_BUCKETS["HOT"], EXPECTED_BUCKETS["FOUNDATIONAL"], EXPECTED_BUCKETS["NOISE"])
)
return 0
if __name__ == "__main__":
sys.exit(main())