Building agents on the JVM with Embabel
·
Part 7
The condition nothing could satisfy: custom @Condition gates in Embabel
My agent refused to run a single action. The @Condition gate was FALSE and nothing in the agent could ever make it TRUE, because Embabel builds an action's effects from what you declare, not from what your condition reads.
28 Jul 2026
·
7 min read
Working with Claude Code
73 skills tried, three still on disk
Claude Code keeps a usage ledger nobody reads. After 511 sessions I opened mine: 73 skills invoked, 31 of them exactly once, three still on disk. The survivors all have one thing in common.
28 Jul 2026
·
6 min read
Working with Claude Code
One mention, one merged PR: Claude Code as a GitHub App
I ran /install-github-app on my own repo and ten minutes later a README PR was merged. The timings are the least interesting part — the write path, the commit attribution and whose rules the CI agent followed are better.
27 Jul 2026
·
6 min read
Building agents on the JVM with Embabel
·
Part 6
The Silent No-Op: Exposing Embabel Agents Over MCP
Turning my JVM agents into MCP tools took one dependency and one annotation. It also took three silent failures -- a starter that suppresses the web server, a shell that eats your CLI flags, and an annotation default that publishes exactly zero tools without telling you.
26 Jul 2026
·
7 min read
Building agents on the JVM with Embabel
·
Part 5
Embabel Agents Being Tracked Through LGTM Observability
I pointed my Embabel agents at a local Grafana LGTM stack and saw nothing. Three configuration gotchas later, every GOAP planning step, LLM call and tool loop shows up as a span in Tempo. Here is the full walkthrough, with screenshots.
26 Jul 2026
·
8 min read
Building agents on the JVM with Embabel
·
Part 4
The Agent Asks First: Human-in-the-Loop with Embabel's WaitFor
In regulated work the dangerous agent is the one that acts without asking. Here's how I made an Embabel agent pause for human approval before moving money -- with the approval built into the type graph, not an if-check.
25 Jul 2026
·
5 min read
Building agents on the JVM with Embabel
·
Part 3
Give the Agent Hands: Tools in Embabel
An LLM cannot know a live account balance, and in banking a confidently hallucinated number is a disaster. The fix is a tool. Here's how @LlmTool works in Embabel on the JVM, plus the one API gotcha that cost me a compile.
25 Jul 2026
·
5 min read
Building agents on the JVM with Embabel
·
Part 2
Stub the Model, Assert the Plan: Unit-Testing Embabel Agents
The non-deterministic part of an agent is the LLM. Box it out and the rest is ordinary, deterministic code you can test. Here's how I test Embabel agents on the JVM without spending a single token.
25 Jul 2026
·
5 min read
Building agents on the JVM with Embabel
·
Part 1
One Goal Too Many: Learning Embabel's Planner the Hard Way
My first afternoon with Embabel, the JVM agent framework. I added one action too many, the planner quietly stopped early, and a cryptic get(...) must not be null taught me how GOAP, goals, and AgentInvocation actually fit together.
24 Jul 2026
·
8 min read
Working with Claude Code
82 agents, one bug: running Claude's security scanner on my own code
I pointed the new claude-security plugin at this very site. It spawned 82 agents, proposed 10 vulnerabilities, and then argued itself out of 9 of them. The one that survived was real — and it shipped to prod the same afternoon.
24 Jul 2026
·
6 min read