Compiled entirely from public activity on meta.discourse.org, X, and GitHub.
💬 meta.discourse.org
Sam shipped major Discourse AI capabilities this week, including subagent support and delegated vision for text-only models, while also helping users navigate agent skills. He responded to reports involving category permissions, mobile HTML pasting, and email bounce scores, and helped land a Redis performance fix for clearing cached 404 topics.
🐦 On social
Discussion centered on local AI models and agent tooling, with posts benchmarking Qwen 3.8 on a 4090, comparing model-generated SVGs, and sharing improvements to term-llm’s multi-provider harness and agent interface. Replies added practical context on token speeds, overthinking, tool use, prompt minimalism, and recurring integration issues, often with a playful or candid tone. Posts also contrasted agent workflows and highlighted Grok 4.6’s unusually extensive visible reasoning.
- 18 posts and 15 replies captured in the last 7 days
- Top by engagement: yeah it is out of control … during coding it will fi…, getting 32 tps on my 4090 … it overthinks, but not u…, exa turned it out and web fetch, it found the right th…
Most engaged tweets:
- reply to @simonw — yeah it is out of control … during coding it will find a solution but then spend a gazillion tokens questioning itself
0 likes · 0 reposts · 0 replies - reply to @AkitaOnRails — getting 32 tps on my 4090 … it overthinks, but not unusable 18 tps for sure.
0 likes · 0 reposts · 0 replies - reply to @psantos_ao — exa turned it out and web fetch, it found the right things though
0 likes · 0 reposts · 0 replies - post — TIL Qwen 3.8 figured out using exa and fetch tool that its Jinja template is off, this convo was plenty usable and fwiw 4090 is not 32gb though :)
0 likes · 0 reposts · 0 replies - reply to @lucasarruda — https:// term-llm.com :)
0 likes · 0 reposts · 0 replies
🛠️ GitHub — Sam’s Commits
discourse/discourse
Sam focused primarily on expanding Discourse AI’s agent architecture, adding delegated vision models and subagent delegation with new image- and post-reading tools, admin controls, validation, usage tracking, and extensive test coverage. He also hardened LLM response and endpoint handling, while fixing reliability regressions in title fetching and the custom emoji API.
Key commits:
3913daa— FEATURE: Allow AI agents to delegate to subagents (#42543)a94a7a6— FIX: Preserve paths in DNS SRV LLM URLs (#42494)8df8001— FEATURE: Add delegated vision models (#42463)8ba710c— FIX: Handle connection resets when fetching titles (#42461)8cf0e36— FIX: Restore custom emoji endpoint (#42460)
discourse/discourse-kanban
Sam focused on making Kanban topic synchronization more robust, preventing cards from being created for topics before they have been persisted and assigned a valid ID. He also added regression coverage to ensure unsaved topics are safely ignored.
Key commits:
c356c4b— FIX: Skip syncing unpersisted topics (#85)
matz/spinel
Sam Saffron had no commits authored with [email protected] in matz/spinel during the last seven days.
Key commits:
3ddef3a— Embed inline C fragments with ffi_source
rubyjs/mini_racer
Sam focused on hardening MiniRacer’s Ruby–V8 bridge, fixing a race that could drop nested requests and deadlock contexts. He also made BigInt serialization portable across Clang 22+ and architectures, preserving very large integer values with bounded memory use and stronger round-trip coverage. Alongside those native fixes, he deflaked asynchronous tests and added contributor/agent guidance for safer, more consistent repository work.
Key commits:
554923f— FIX: support clang 22+ compilation (#434)6ca86db— deflake and agents.md14209e3— FIX: don’t drop requests that arrive before v8_roundtrip is re-entered (#440)
SamSaffron/dotfiles
Sam focused on modernizing his development environment: he refreshed Neovim plugins and simplified Waybar’s package-update indicator, and streamlined the Discourse developer-agent configuration while improving its instructions and subagent guidance. He also adapted the Hyprland shortcut viewer to parse the newer Lua-based configuration format, including variables, loops, dispatcher arguments, and bind options.
Key commits:
ad04cfb— update to lua configed65fb4— clean up instructions11220bf— chore: refresh development tooling
hekuo5310/discourse-rust
Sam focused primarily on strengthening Discourse AI: he added delegated vision models so text-only LLMs can safely use vision capabilities, and improved compatibility with multi-block responses and DNS SRV model URLs. He also addressed reliability regressions in title fetching and restored the custom emoji endpoint, with tests added across these changes.
Key commits:
a94a7a6— FIX: Preserve paths in DNS SRV LLM URLs (#42494)8df8001— FEATURE: Add delegated vision models (#42463)8ba710c— FIX: Handle connection resets when fetching titles (#42461)8cf0e36— FIX: Restore custom emoji endpoint (#42460)61842fb— FIX: Normalize multi-block LLM responses (#42459)
🤖 Jarvis — Public Repo Work
Agent-authored public commits, typically guided by Sam during implementation work.
sam-saffron-jarvis/rails-ai-lifecycle-harness
Under Sam’s direction, Jarvis built a reproducible Rails AI lifecycle evaluation harness, moving its auditing tools to Ruby and strengthening grading isolation, concurrency, and session metrics. The work then focused on testing lifecycle-closure guidance—removing answer-shaped hints, adding mechanical reconciliation gates, and publishing neutral five-task evaluation matrices. Finally, the agent workflow was tightened to balance thorough lifecycle analysis with efficient production delivery.
Key commits:
e0761fd— Budget agent work around production delivery0f44da8— Publish neutral max five-task matrixfffb3c8— Report neutral closure as-purge experiment9acc1ca— Remove answer-shaped lifecycle guidancea0268d5— Enforce a mechanical lifecycle closure gate
⤴️ GitHub — Pull Requests
9 PRs this week:
- ✅ SamSaffron/term-llm#1030 (diff) — feat: add durable concurrent worker threads closed
Add durable concurrent worker threads to interactive chat, with an explicit mailbox boundary between worker output and coordinator context. -
/thread TASKstarts a background worker attached to the current coordinator session -/treeshows worker… - ✅ SamSaffron/term-llm#1031 (diff) — fix: Idle runtime cleanup can permanently wedge the session janitor closed
- Added a two-second bounded retirement path for session runtimes. - Kept
onEvictsynchronous, then usedserveRuntime.CloseContextso a stalled MCPsession.Closeor providerCleanupMCPcan continue only in the runtime’s isolated cleanup gorou…
- Added a two-second bounded retirement path for session runtimes. - Kept
- ✅ SamSaffron/term-llm#1032 (diff) — fix: An oversized CLI diagnostic line can deadlock provider streaming closed
- Replaced the 1 MiB-limited stderr scanners used by Claude, Grok, Cursor, Agy, and Grok ACP with a shared bounded line reader that continues draining oversized records. - Keeps diagnostic memory bounded at 1 MiB per line and records an omission mark…
- ✅ SamSaffron/term-llm#1028 (diff) — fix: Blocked Grok ACP handshake defeats both its timeout and server shutdown closed
- Added a handshake-scoped watchdog that closes the Grok ACP process stdin and cancels its process context when startup is canceled or times out. - Stop the watchdog before returning a successfully initialized, resumed, loaded, or newly created ACP s…
- ✅ SamSaffron/term-llm#1023 (diff) — fix: Worktree diff generation launches one Git process per untracked file with n closed
- Added a context-aware worktree diff path that streams Git output into a shared 2 MiB limiter, terminates active Git commands on cancellation, and reports explicit truncation metadata. - Capped untracked-file inclusion at 100 files and replaced one …
- ✅ SamSaffron/term-llm#1026 (diff) — fix: Stalled voice transcription can exhaust every Telegram handler slot closed
- Bound Telegram voice transcription to a conservative five-minute context deadline. - Keep
llm.TranscribeWithConfigcaller-controlled so other transcription callers retain their existing deadline policy. - Added a per-manager timeout seam for test…
- Bound Telegram voice transcription to a conservative five-minute context deadline. - Keep
- 🟢 discourse/discourse-mcp#51 (diff) — FEATURE: support workflow and ai toolsets opened
- refactor(tools): centralize tool definitions - feat(tools): add built-in toolset filtering - feat(workflows): add workflow toolset - feat(ai): add administration toolsets
- ✅ discourse/discourse#42543 (diff) — FEATURE: Allow AI agents to delegate to subagents merged
- Also adds read_post tool
- ✅ matz/spinel#3889 (diff) — Embed inline C fragments with ffi_source opened
Accept compile-time string fragments from FFI modules and emit them before generated function bodies. This lets small native adapters travel in a single Ruby source file while preserving normal FFI declarations and type checking. Document the directi…
🐛 GitHub — Issues
No issue activity this week.
👀 GitHub — Reviews
No reviews this week.