# AgentStack Daily EP063 - OpenClaw 6.1, Claude Code .162, Qwen 3.7, and Shared Agent Memory [NOVA]: I'm NOVA. [ALLOY]: I'm ALLOY, and this is AgentStack Daily... [NOVA]: OpenClaw 6.1 is the front of the cycle. It added Workboard orchestration that turns a kanban into a multi-agent coordination surface with task-backed board runs, introduced a governed Skill Workshop with apply, reject, and quarantine flows plus rollback metadata, moved iMessage state and the plugin install ledger to SQLite for clean restarts, and tightened bounded timers on provider and plugin request paths. Claude Code .162 also moved, adding a `waitingFor` field to `claude agents --json` so you can finally see why a background session is stalled, surfacing Remote Control as a persistent footer pill, and stacking permission rule and interrupt fixes that closed real operator pain. [ALLOY]: You'll hear the release mechanics first: Workboard as a task-backed multi-agent board, Skill Workshop as a governed path for agent-written skills, SQLite-backed recovery for messages and plugins, and Claude Code status fields that explain stalled background agents. The second half follows the model and memory layer: Qwen 3.7 for coding versus multimodal routing, agentmemory for shared cross-agent recall, CodeGraphContext for graph-backed repo questions, and RepoBrain for lightweight decision memory. [ALLOY]: After the harness block we move to the model lane with Qwen 3.7 Max and Plus splitting coding from multimodal workloads, both open weight, both designed for agentic use. Then three different takes on persistent context for coding agents: agentmemory as a shared cross-agent memory server, CodeGraphContext as a graph-backed code query surface, and RepoBrain as a lightweight decision log. The common thread is continuity: agents need durable work state, durable repo knowledge, and durable memory before long-running automation feels trustworthy. [PAUSE] ## [00:00] Opening: harness updates, model lanes, and shared context [ALLOY]: Three layers are moving at once, and the most useful way to listen is to keep them separate. [NOVA]: The harness layer is consolidating around a smaller number of well-known surfaces. OpenClaw 6.1 is the most concrete step toward OpenClaw being a coordination and governance surface, not just a runtime. Workboard is the headline: a multi-agent planning and run-tracking board with orchestration primitives, task-backed board runs, and task comments in the edit modal. The comments living in the same modal as the task body is a small detail that matters, because review stops decaying when it is embedded next to the work. [ALLOY]: Skill Workshop is the second big move. It moves skill authoring into a governed surface. The proposal lifecycle is apply, reject, or quarantine, with versioned dated frontmatter, support file scanning and hashing, and a `skill_workshop` agent tool that an agent can call to drive the flow itself. The agent is no longer just a consumer of approved skills. It is a participant in the approval loop. [NOVA]: Recovery is the third area. iMessage monitor state, inbound queues, and the plugin install ledger are now persisted in SQLite, so restarts recover without duplicate filesystem scanning. Bounded timers and retries wrap provider and plugin request paths, so OAuth, device codes, media downloads, local service probes, and generated-content polling all fail cleanly instead of hanging a run indefinitely. [ALLOY]: On the Claude Code side, .162 is the latest in a string of tightening releases. The most operator-visible change is `waitingFor` in `claude agents --json`, which surfaces whether a background agent is blocked on a permission prompt, a long-running tool, or a subagent handoff. WebFetch permission rules now take precedence over preapproved-host auto-allow, MCP server timeouts below one second no longer floor to a one-second watchdog, and an interrupt pressed at the very start of a turn in stream-json or SDK sessions no longer silently drops. [NOVA]: The model story is the Qwen 3.7 split. Alibaba shipped two distinct variants: Max for reasoning, coding, and math; Plus for multimodal and vision. Both are open weight, both are on OpenRouter, both can be pulled through Ollama or LM Studio. Model routing gets more interesting when you can pick a coding model for code edits and a multimodal model for screenshots, and run both locally or behind a single API gateway. [ALLOY]: And the agent tooling story is three projects attacking the same problem from different angles. agentmemory gives every agent on your machine a shared memory server on port 3111 with confidence scoring, lifecycle management, a knowledge graph, and hybrid search. CodeGraphContext indexes your repo into a graph database and exposes it through both a CLI and an MCP server, so an agent can answer structural questions without grepping dozens of files. RepoBrain is the lightweight option, a CLI-first decision and pattern log aimed at Claude Code and Codex. [NOVA]: Let us take them in order. [PAUSE] ## [02:00] OpenClaw 6.1: Workboard, Skill Workshop, recovery, and provider expansion [ALLOY]: OpenClaw 6.1 landed June 3 and is the most consequential stable release in recent memory. The way to think about it is three concentric layers: the runtime is hardening, the surface area is widening into coordination and governance, and the provider model is broadening. Each layer matters, and the layers reinforce each other. A coordination surface is only useful if the runtime underneath is reliable, and a runtime is only useful if it can route to the right model. [NOVA]: Let us start with Workboard, because that is where the new mental model shows up. A kanban board is not a new idea. The interesting question is what kind of kanban board it is. In Workboard, the board drives actual task decomposition with agent coordination tools for multi-agent planning and run tracking. The board runs are task-backed, which means a board run is not just a status display. It is a real unit of execution that the orchestration layer can act on. [ALLOY]: The edit modal is where the day-to-day operator work happens. Task comments live in the same modal as the task body, so when a reviewer wants to leave a note or push back on a subagent's claim, the conversation lives next to the work. When comments live in a separate thread or a separate tool, they decay. You scroll past them, you forget to address them, the subagent does its next turn without seeing them. Embedding them in the edit modal keeps review sticky. [NOVA]: The orchestration primitives are what make Workboard different from a project management tool. The primitives are the verbs the agent layer can call: assign a task, decompose a task, track a run, comment, revise, hand off. When those verbs are available to agents, the board stops being a place humans watch agents and becomes a place where agents coordinate with each other, supervised by humans. OpenClaw is moving from a single-agent runtime toward a multi-agent coordination layer, and the board is the surface that makes that visible. [ALLOY]: Skill Workshop is the second major addition. Skill authoring has historically been either "edit a markdown file and hope nothing breaks" or "submit a PR and wait." Skill Workshop adds a guarded middle path. Proposals flow through apply, reject, or quarantine. Pending proposals can be revised in place with versioned, dated proposal frontmatter. Approved proposals can carry support files under standard skill folders, and those support files get scanner, hash, and rollback safeguards. [NOVA]: The important detail is the `skill_workshop` agent tool. An agent can now initiate a skill proposal, get it reviewed, and have it approved entirely within the OpenClaw runtime. The agent is not filing a ticket for a human to look at later. It is participating in the review flow. And the Skill Workshop guidance surfaces in Codex app-server prompts when `skill_workshop` is available, which means a Codex-backed agent can prompt for skill governance at the right moment in a run. [ALLOY]: The "governed" framing earns its keep in the rollback metadata, the support file scanning, the hash on those files, and the quarantine state for proposals that look suspicious. If a proposal modifies a file outside the standard skill folder, the scanner catches it. If a support file changes after approval, the hash mismatch catches it. If a proposal turns out to be broken in production, the rollback metadata tells the operator exactly which version to revert to. [NOVA]: Recovery is the third major area, and the one operators will feel most directly. iMessage monitor state, inbound queues, and the plugin install ledger are now persisted in SQLite. The plugin install index used to require filesystem scanning on every reload. For a setup with dozens of plugins, that scan is a noticeable cost. Moving the index into SQLite means installed package lookup is a fast indexed read instead of a directory walk, and it survives restarts without losing state. [ALLOY]: The bounded timers and retries are quieter but just as important. Provider and plugin request paths now have explicit timeouts on OAuth and device-code lifetimes, media downloads, local service probes, and generated-content polling. The previous behavior in many of these paths was to wait indefinitely on a stalled network call and only fail when the human noticed. The new behavior is a bounded wait, a clean retry, and a defined failure surface if the bound expires. [NOVA]: Tool call interruption handling closes a race that has dominated the support forum. The classic failure mode is a tool call starts, the network drops, the timeout fires, the runtime tries to clean up, and the cleanup races with the partial response, leaving the session in a confused state. 6.1 closes that race more cleanly across five pull requests, with the result that interrupted tool calls, stale session bindings, and compaction handoffs all recover in a defined way. [ALLOY]: Channel and mobile delivery is steadier across Telegram, WhatsApp, iMessage, Slack, Discord, Microsoft Teams, Google Chat, Google Meet, and the iOS realtime Talk surface. iOS gets hosted push relay defaults, realtime Talk playback, and a guarded WebSocket ping path. The guarded ping matters because a mobile session that loses its WebSocket connection used to either silently die or spam reconnects. The new path is a single sane reconnection strategy. [NOVA]: On the provider side, MiniMax M3 is now registered with its one-million-token context window, sparse attention architecture, multimodal capabilities, and the MiniMax Code tool. OpenClaw-managed agents can route to MiniMax M3 through the standard provider interface with no custom configuration. Account OAuth endpoints are included in provider metadata. Google and Vertex catalog fixes address model browsing and credential-aware catalog loading. OpenRouter now uses SQLite for model metadata caching, so catalog state survives restarts and avoids repeated network calls. [ALLOY]: Copilot Claude's one-million-token capabilities are recognized, Foundry reasoning alignment addresses reasoning models through Microsoft's Foundry endpoint, and OpenAI response replay guards protect against non-deterministic replay edge cases. Code mode adds internal namespaces for scoped agent and global sessions with exact namespace tool dispatch, plus MCP API files and docs for code-mode integrations. Skills, session metadata, gateway runtime state, plugin metadata, memory watchers, and store writes do less repeated work on hot paths. [NOVA]: The honest assessment of 6.1 is that the headline features and the plumbing features are equally important. Workboard and Skill Workshop get the screenshots. SQLite-backed state and bounded timers are what make the screenshots reliable. Early adopter reaction has been positive on the Workboard side, with the Skill Workshop governance flow getting called out as the right answer to the "who watches the agents" question. [PAUSE] ## [26:00] Claude Code .162: waitingFor, permission rules, MCP timeouts, and interrupt handling [ALLOY]: Claude Code .162 is the latest in a string of tightening releases, and the right way to think about the recent span is as a paper-cut pass rather than a feature drop. Almost every change is closing a corner case, and the cumulative effect is a CLI that is significantly less surprising. [NOVA]: The single most useful change for operators is `claude agents --json` now including a `waitingFor` field. For anyone running background agents, the old failure mode was an agent stops making progress, the UI shows "running," and you have to attach to the session, scroll through the transcript, and figure out what the agent is blocked on. A permission prompt is the most common culprit, but the agent could also be waiting on a long-running tool, a stalled provider call, or a queued subagent. [ALLOY]: The new field surfaces the reason in JSON. If `waitingFor` reads `permission_prompt`, you know to look at the pending permission. If it reads `tool_call:long_running_command`, you know the agent is waiting on a subprocess. If it reads `subagent:pending_handoff`, you know the agent is waiting on a child session. The practical effect is that you can write operator tooling that diagnoses stalls without requiring a human to attach and inspect. For a team running five or ten background agents, that is a meaningful change in observability. [NOVA]: WebFetch permission rules now take precedence over preapproved-host auto-allow. The previous behavior was a source of real surprise. A team could add a domain to a preapproved-host list, and then add a more specific explicit deny rule on a subdomain, and the auto-allow would still win. The fix makes explicit deny, ask, and allow rules authoritative, which is the only behavior that makes sense. If you wrote a deny rule, you meant it. [ALLOY]: Windows path handling is fixed for backslashes and case-variant paths. Read deny rules no longer hide files from Glob and Grep results, which removes a recipe for confused tool calls and silent permission violations. [NOVA]: The MCP timeout change is a small but real ergonomics fix. Per-server timeout config values below one second used to floor to a one-second watchdog, which meant a deliberately aggressive timeout would be silently raised and then abort every tool call against that server. The new behavior is that sub-one-second values fall through to the default or `MCP_TOOL_TIMEOUT`, and `claude mcp get` annotates them so you can see what was applied. For anyone running MCP servers against rate-limited upstream APIs, that fix alone is worth the upgrade. [ALLOY]: Interrupt handling at the very start of a turn is fixed for stream-json and SDK sessions. The old race was: you press Esc immediately after sending a prompt, the turn has not yet started processing, the interrupt gets dropped, and the turn runs to completion with no feedback that you tried to cancel it. The new behavior surfaces an Interrupted feedback signal, so an SDK caller can know that the cancel landed. [NOVA]: The LSP `workspaceSymbol` operation now accepts a query parameter and passes it to the language server, which is a small but real improvement for any agent that relies on LSP-based symbol search. The Windsurf-to-Devin rebrand is reflected in the relevant slash commands, and quieter startup groups notices by severity with session info and announcements sharing a single line per launch. The `claude agents` UI gets a batch of quality fixes: status detail no longer truncates at narrow column widths, long session names no longer truncate at forty columns, attach no longer bounces back to the session list on the first try after a background-service restart, and image paste works in the dispatch input and session reply box. [ALLOY]: Backgrounding with the left arrow no longer silently loses the conversation when the background service cannot start. The silent startup hang when the config directory is read-only or unwritable is fixed; Claude Code now starts with in-memory config and surfaces the error. The Remote Control footer pill is a small but useful change: Remote Control used to appear as a startup message that scrolled away as soon as the session got busy, which meant operators sometimes lost track of whether the session was actually under remote supervision. The persistent footer pill keeps the session link visible. [NOVA]: The honest assessment of .162 is that the headline is `waitingFor`, and everything else is the rest of the paper-cut stack. If you have been filing intermittent bug reports about background agents, permission rule precedence, or MCP timeouts, this is the release that closes the worst of them. If you have not been filing those reports, you will probably just notice that the CLI feels less surprising this month. That is the right outcome for a tightening release, and it leaves room for a more substantial feature drop later in the cycle. The pace of recent releases is also worth noting: the CLI is moving faster than it was a quarter ago, and teams that have automation pinned to a specific version will want to think about their upgrade cadence. [PAUSE] ## [40:00] Qwen 3.7 Max and Plus: coding-reasoning and multimodal-vision on the agent frontier [NOVA]: Qwen 3.7 landed in May with two distinct variants, and the split is meaningful. [ALLOY]: Qwen 3.7 Max targets reasoning, coding, and math. That is the same lane as Codex, Claude Code's primary models, and the other coding-focused frontier models. If you are picking a model for a coding agent, Max is the variant to evaluate first. [NOVA]: Qwen 3.7 Plus is optimized for multimodal and vision. That means document understanding, screenshot interpretation, diagram reading, and the kind of work where the input is not just text. If your agent has to handle images or scanned documents, Plus is the variant that targets that lane. [ALLOY]: The split mirrors the broader industry pattern of differentiated model sizes for different task profiles, but Qwen's open-weight position is what makes the split interesting for an agent audience. You can pull a Max quantization locally for coding work and a Plus quantization locally for multimodal work, and route between them based on the task. Or you can hit both through the OpenRouter API and let the harness route. The deployment surface is the same either way. [NOVA]: Qwen's own framing positions 3.7 as designed for agentic workflows, not just chat completion. The context window and tool-use capabilities are positioned for agent-computer use cases. That framing is consistent with how the broader agent stack ecosystem is thinking about models: the right model is the one that can sustain tool calls, read long contexts, and recover from failed steps without losing the thread. [ALLOY]: For local deployment, Qwen 3.7 quantizations are available through Ollama, LM Studio, and similar tools. LM Studio's mlx-engine has explicit optimizations for the prior Qwen family, and the 3.7 release suggests those optimizations carry forward for Apple Silicon developers running locally. NVIDIA's DGX Spark messaging highlights Qwen optimizations as part of the local agent stack story, which suggests the 3.7 family will follow the same deployment path for local agent computers. [NOVA]: The practical advice is straightforward. If you are routing between coding and multimodal tasks, pick based on the lane. Max for code generation, code review, refactoring, and reasoning-heavy tasks. Plus for document understanding, image analysis, and visual inputs. If you are already running a frontier coding model and the bottleneck is multimodal handling, Plus is the candidate to test against your current multimodal path. If the bottleneck is coding quality, Max is the candidate to test against your current coding model. [ALLOY]: Where vendor claims still need confirmation is in the long-tail of agentic behaviors. Qwen's own benchmarks on reasoning and coding are useful, but the real test for an agent audience is whether the model holds up across long multi-step runs, whether it recovers from tool failures cleanly, and whether the multimodal variant does not degrade on text-only inputs. Early community reaction has been enthusiastic on Max for code review and structured refactoring, with Plus getting positive notes on document and screenshot work but mixed feedback on dense tables and small-font OCR. Treat the OpenRouter and Ollama paths as the evaluation lane and watch for community reaction over the next few weeks. [PAUSE] ## [51:00] agentmemory: shared persistent context for every agent on your machine [NOVA]: agentmemory is the most ambitious of the three context tools, and the right way to think about it is as a shared memory server for the entire local agent stack. [ALLOY]: The problem it solves is the blank-slate problem. Every agent you spin up, whether Claude Code, Codex, GitHub Copilot CLI, Cursor, Gemini CLI, Hermes, OpenClaw, pi, OpenCode, or any MCP client, starts with no memory of what you did last week. If you spent an hour in Claude Code explaining the architecture of a service, and then you open Codex to do a related task, Codex has no idea that conversation happened. [NOVA]: agentmemory runs as a memory server on port 3111, installed as a global npm package, built on the iii engine. Once running, agents connect through native plugins, hooks, or MCP depending on what the agent supports. Claude Code gets a native plugin, twelve hooks, and MCP. Codex gets a native plugin, six hooks, and MCP. OpenClaw and Hermes both get a native plugin and MCP. The wiring depth varies by agent, but the underlying server is the same, which means a memory written by one agent is readable by another. [ALLOY]: The feature set goes beyond simple key-value storage. There is confidence scoring on stored memories, so the system can weight recent and high-confidence memories over stale or low-confidence ones. There is lifecycle management, so memories can age out or be explicitly retired. There is a knowledge graph representation, so related memories can be linked. There is hybrid search, so the recall path can combine keyword and semantic matching. The confidence scoring is particularly important for an agent audience, because the alternative is treating every memory as equally authoritative, and that quickly produces a store full of stale guidance that the agent treats as current policy. [NOVA]: The cross-agent story is the part that changes the workflow math. A developer who uses Claude Code for high-level refactoring, Codex for shell and file operations, and Hermes for orchestrating multi-step tasks currently has three independent context windows. With agentmemory, the same memory server sits behind all three, so context from one agent's session informs what the next agent does. [ALLOY]: A real-time viewer and an iii Console are included, so you can see what is in the memory store, watch new memories land, and inspect the knowledge graph. The repo is actively maintained with recent commits, which matters for a context tool. The data structure is only useful if the project stays current, because the failure mode for an abandoned memory tool is silent rot as the agent landscape changes around it. [NOVA]: The honest assessment is that shared cross-agent memory is a category that is still finding its shape. Different agents have different prompt conventions, different tool surfaces, and different conventions for what counts as "memory." agentmemory's approach of using a shared server with per-agent connectors is one way to solve that, and the iii engine architecture is what makes the cross-agent read path work. The question to watch is how well the confidence scoring and lifecycle management hold up under real workloads. Every memory system has to make decisions about what to keep and what to forget, and the wrong defaults produce either a store full of stale guidance or a store that loses important context. [ALLOY]: For teams that already run multiple agents on the same machine, this is a tool worth evaluating. The setup cost is low: install, run the demo, connect your primary agent, and the upside is that the time you spend explaining a project in one session is no longer lost the next time you open a different agent. The shared-server model also means a small team can standardize on a single memory surface without picking a winner among Claude Code, Codex, and Hermes. [PAUSE] ## [61:00] CodeGraphContext: code graphs via CLI and MCP for agents and developers [NOVA]: CodeGraphContext is a different kind of context tool. Where agentmemory stores memories, CodeGraphContext indexes code structure into a graph database and exposes that graph to both humans and agents. [ALLOY]: The dual-mode design is the key idea. The same graph index serves two surfaces: a CLI where a developer can run natural language queries against the codebase, and an MCP server where AI agents like Claude Code, Codex, Gemini, and Cursor can call tools that answer structural questions. The CLI gives you the same graph for manual exploration. The MCP gives your agent the same graph as a callable tool. [NOVA]: The indexing engine parses code using tree-sitter nodes and builds a graph of components: functions, classes, methods, parameters, inheritance relationships, function calls, and imports. That means the graph knows the difference between a function with the same name in class A and a function with the same name in class B. A text search would return both. The graph returns only the one being queried. [ALLOY]: The MCP surface is where the agent workflow shows up. The exposed tools include `get_callers`, `get_callees`, `get_class_hierarchy`, and `get_call_chain`. An agent that needs to understand the blast radius of a refactor can ask the graph for callers and callees directly instead of grepping the codebase and trying to reason about what it found. On a large codebase, the difference is significant. The graph query is a single tool call with a precise answer, the grep path is a chain of uncertain inferences. [NOVA]: Live file watching updates the graph in real time as files change, so the index does not get stale during a refactor session. Pre-indexed bundles let you load famous repositories instantly without running the indexer, which is useful for evaluating the tool against a known codebase. Supported languages cover twenty-two, including Python, JavaScript, TypeScript, Java, C, C++, C#, Go, Rust, Ruby, PHP, Swift, Kotlin, Dart, and several others. The breadth of language support is a real strength, and the tree-sitter foundation is what makes the language coverage practical instead of a marketing claim. [ALLOY]: The graph database backend is pluggable. The default is FalkorDB Lite. KuzuDB, LadybugDB, FalkorDB Remote, NornicDB, and Neo4j are also supported, all available via Docker or native. The choice of backend matters for performance characteristics and operational fit, and the pluggable design means a team can pick the backend that matches their existing graph database infrastructure. [NOVA]: The practical use case is an agent that needs to do non-trivial refactoring or code analysis. Without a graph, the agent's mental model of the codebase is a fuzzy picture built from text searches and the contents of files it has read recently. With a graph, the agent can ask precise questions and get precise answers. The graph reduces tool call overhead on larger codebases where a text search would need to run across dozens of files, and it removes the false positives that come from same-name functions in different classes. [ALLOY]: The honest assessment is that CodeGraphContext is most valuable for medium to large codebases. On a small repo, the agent can read the whole thing and the graph overhead is not worth it. On a large monorepo, the graph is the difference between an agent that can reason about structure and an agent that is just guessing. The MCP integration is the part that makes it usable inside an existing agent loop without changing how the agent works, and the live file watching means the graph stays useful across long refactor sessions. [PAUSE] ## [71:00] RepoBrain: lightweight decision and pattern memory for long-running sessions [NOVA]: RepoBrain is the third context tool, and the framing is that not every team needs the full agentmemory feature set. Some teams just need a lightweight decision log. [ALLOY]: The design is CLI-first and local. No external infrastructure, no graph database, no knowledge graph. Just a structured way to store decisions and patterns that an agent can query in a subsequent session. The aim is decision recall and pattern storage. When an agent makes a choice about how to solve a problem or structure code, that decision gets stored so a future session can query it and avoid re-debating the same point. [NOVA]: The lightweight focus is the point. agentmemory is a full system with confidence scoring, lifecycle management, and a knowledge graph. CodeGraphContext is a graph database with a CLI and MCP surface. RepoBrain is a CLI tool. The trade is feature depth against operational simplicity, and for a developer who just wants an agent to remember "we decided to use strategy pattern here, not inheritance," the lightweight path is the right fit. [ALLOY]: Agent-specific wiring covers Claude Code and Codex for drop-in integration. The decision log is the key data structure. The recall path is a query against the log. The context-window efficiency gain is the value proposition: instead of re-deriving a decision every session, the agent reads the stored decision and moves on. On long-running projects, that is a real time savings. [NOVA]: The honest assessment is that RepoBrain fits a different niche than the other two tools. It is not trying to be a shared cross-agent memory server, and it is not trying to be a graph database. It is trying to be the smallest possible tool that solves the decision recall problem. For teams that have not yet adopted a memory tool and want a low-friction entry point, RepoBrain is worth a look. For teams that already need shared cross-agent memory or graph-backed code analysis, agentmemory and CodeGraphContext are the more capable options. [ALLOY]: The three tools together describe a maturing category. agentmemory is the broad, cross-agent option. CodeGraphContext is the structural option. RepoBrain is the lightweight option. The fact that all three exist and are actively maintained is a signal that the agent tooling space is treating context preservation as a real problem with multiple valid shapes, not as a feature to bolt onto a runtime. [PAUSE] ## Outro [NOVA]: That wraps it. OpenClaw 6.1 with Workboard, Skill Workshop, and SQLite-backed recovery. Claude Code .162 with `waitingFor` JSON, permission rule fixes, and interrupt handling. Qwen 3.7 Max and Plus splitting coding from multimodal. agentmemory, CodeGraphContext, and RepoBrain as three different takes on persistent context for coding agents. [ALLOY]: The full breakdown with timestamps, harness version references, and links to the projects we covered is in the show notes at Toby On Fitness Tech dot com. [NOVA]: Thanks for listening. We'll be back soon.