{"slug": "gnosh-ai-a-super-intelligent-ai-harness-that-thinks-in-go", "title": "Gnosh.ai – a super intelligent AI harness that thinks in Go", "summary": "Gnosh.ai released Gnosh, an open-source coding agent built as a security-first fork of Charm's Crush that runs the Gno virtual machine inside the AI harness so the agent stores its goals, findings and user-supplied facts in a persistent `mem` store on disk. Gnosh supports any hosted or local model, requires Go 1.27 or newer to build from source, and sends no data off the machine unless the user enables it; in the article's runs, the agent computed a 10th-retry backoff delay of 111 s in Gno in 5 of 5 attempts with Qwen thinking enabled, versus 4 of 7 with thinking off. The project's goal-and-step tracking blocks a goal from being marked done while a step such as `go test ./...` passing remains open, and a separate judge reopens goals that do not hold against the conversation.", "body_md": "A coding agent that thinks, plans, and remembers in Gno.\n\n[Gnosh](https://github.com/gnosh-ai/gnosh) runs the [Gno](https://github.com/gnolang/gno) VM in the AI harness. The agent keeps its goals, what it found and the facts you gave it in `mem`, kept in Gno on your disk, and a new session starts with what is still open and the newest facts, so it picks up where the last one stopped.\n\nUnderneath, it is a security-first fork of Charm's [Crush](https://github.com/charmbracelet/crush): any model, hosted or on your own machine, and nothing phones home unless you turn it on.\n\nBuilt from source, with Go 1.27 or newer:\n\n```\ngit clone https://github.com/gnosh-ai/gnosh\ncd gnosh && go build -o gnosh .\nmkdir -p ~/.local/bin\ninstall -m 755 gnosh ~/.local/bin/gnosh\n```\n\nThe code and its issues are on [GitHub](https://github.com/gnosh-ai/gnosh); a star there helps others find it.\n\nRun `gnosh` in a project and press ctrl+l to pick a hosted one. For a model on your own machine, add it in `~/.config/gnosh/gnoshrc`:\n\n```\nprovider add local --type llamacpp --base-url \"http://127.0.0.1:8080\"\n# a local model can take minutes to read a long prompt\noption request-timeout 900\n```\n\nyouA client retries a failed request with exponential backoff: it waits 200 ms before the first retry, doubles the wait each time, and never waits more than 30 s. How long after the first failure does the 10th retry go out?\n\nThe agent works it out in the session's scratch machine instead of adding it up in its head, and answers \"111 s (1 min 51 s)\". With Qwen thinking, as it does by default, it used a machine and got 111 s in 5 runs of 5. With its thinking turned off it was right in 4 runs of 7, and twice added the waits up in its head to 110.8 s.\n\nIn Gno:\n\n```\nd := 200\ntotal := 0\nfor i := 1; i <= 10; i++ {\n    if d > 30000 { d = 30000 }\n    total += d\n    d *= 2\n}\nfmt.Println(total, \"ms\")\n```\n\nyouAdd a `Median` to the stats package, with tests; it's done when `go test ./...` passes. Plan it as steps and do the first one now; we'll carry on in another session.\n\nThe agent puts the goal in mem with \"`go test ./...` passes\" as a step of its own, and a goal cannot be marked done while one of its steps is open: the tests passing is something it has to reach, not claim. When it closes the goal, a separate judge checks it against the conversation, and reopens it if it does not hold. Tomorrow, \"Let's carry on with Median.\" picks up where it stopped, and finishes.\n\nIn Gno, the first session:\n\n```\nmem.Goal(\"add Median to stats\").Steps(\"implement Median\", \"write tests for Median\", \"go test ./... passes\")\n```\n\nThe next session, told only “Let's carry on with Median”:\n\n```\nmem.Show()\n```\n\nyouRemember these for later sessions: the staging database is db-stg-7, and the on-call engineer is Sam Okafor.\n\nyou, a week laterAn update for what you remember: the staging database moved to db-stg-9.\n\nyou, any later sessionWhich staging database should I use, and who is on call?\n\nA new session is given the newest facts with your first message, so a fact that changes is set again under its name, not kept twice. In a real run the last session answered without a single call to mem: \"Staging database: db-stg-9. On call: Sam Okafor.\"\n\n```\nmem.Fact(\"fact/staging-db\", \"the staging database is db-stg-7\")\nmem.Fact(\"fact/on-call\", \"the on-call engineer is Sam Okafor\")\n```\n\nyouBefore we wrap up: remind me next time we talk to rotate the staging API key. It expires this week.\n\n\"Morning! Anything I should know before I start?\" in the next session brings it back, and so does a session that starts on something else: in a real run the agent did the task it was given and added \"PS: don't forget to rotate the staging API key before Friday.\" It is a reminder for the next session, not an alarm.\n\nIn Gno, in another run, where the agent made the reminder a question for you:\n\n```\nmem.Goal(\"rotate staging API key\").Ask(\"staging API key expires this week — rotate it before then\")\n```\n\nThese are real runs with an open-weight model, and [GNOMEM](https://github.com/gnosh-ai/gnosh/blob/main/GNOMEM.md#see-it-work) has them, with how often each passed.\n\nEach of those calls is Gno code the agent writes and Gnosh runs in the Gno VM, against `mem`, a realm kept on your disk for the project. A call changes mem only through mem's own methods; every change is journaled before it is kept, and a call that fails keeps nothing. A new session starts with your rules, what is due, what waits on you, what is open with its next step, and the newest facts.\n\nThe calls, as the agent writes them:\n\n```\nmem.Goal(\"release v2\").Steps(\"bump the version\", \"tag v2.0.0\", \"CI is green\")\n```\n\nYou can look too: `/mem` shows the outline, `/mem find` searches, `/mem log` lists every change, and `/mem undo` takes one back.", "url": "https://wpnews.pro/news/gnosh-ai-a-super-intelligent-ai-harness-that-thinks-in-go", "canonical_source": "https://gnosh.ai", "published_at": "2026-10-30 18:26:49+00:00", "updated_at": "2026-10-30 18:46:58.206916+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "ai-safety"], "entities": ["Gnosh.ai", "Gnosh", "Gno", "Charm", "Crush", "Qwen", "Sam Okafor", "GitHub"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/gnosh-ai-a-super-intelligent-ai-harness-that-thinks-in-go", "markdown": "https://wpnews.pro/news/gnosh-ai-a-super-intelligent-ai-harness-that-thinks-in-go.md", "text": "https://wpnews.pro/news/gnosh-ai-a-super-intelligent-ai-harness-that-thinks-in-go.txt", "jsonld": "https://wpnews.pro/news/gnosh-ai-a-super-intelligent-ai-harness-that-thinks-in-go.jsonld"}}