Plori Engineering

Engineering notes building AI agents in the cloud

Featured

  1. 1 view

    Firecracker hosts: $179 a month on Vultr, $300 on AWS, $474 on Azure

    Which clouds support nested virtualization, and what a small setup costs on each.

All issues

  1. Scion-style merges: one comparison takes 1.93 s at 100,000 files

    What we took from Anthropic's Scion for Workspaces, and the merge cost we measured before changing anything.

  2. Claude Code handed 0 of 240 unnamed-server prompts to our MCP server, then 21

    What Claude Code shows the model about MCP tools, and what a rewrite of our server text changed in 240 runs.

  3. AI agent files: a local disk, saved to object storage every 60 seconds

    What a crash can lose, how results are accepted, and the start and save times we measured.

  4. Why we replaced JuiceFS: a 9,749-file checkout took 83.8 to 90.1 s under gVisor

    Our agents needed their own copy of files and saved versions, not a live shared filesystem.

  5. FUSE inside gVisor: 4 KiB writes, no mmap, EINTR; checkout 2x slower

    Four FUSE defects in the gVisor runsc builds we ran, what we patched, and what was still slow.

  6. We had 21 SEO tasks. Search Console data closed 10 of them

    The eight-step method we used to decide which SEO tasks to keep, and what it showed on our site.

  7. Firecracker on nested KVM: 1.38 s median to a healthy agent

    305 production cold boots on nested KVM, and the guest clock fix when two documented methods fail.

  8. Claude Code routines: what they run, their limits, and when a hosted agent fits

    What the docs say a routine does, its caps and limits, and where a hosted agent fits next to it.

  9. gVisor on Kubernetes: Node Ready does not prove the runtime handler exists

    How to check a node before an agent sandbox is scheduled on it, and what we saw when the handler was missing.

  10. A local readback passed, but an independent reader returned 404 after shutdown

    How to test agent sandbox persistence across shutdown and a new sandbox, from a September 2026 test.

  11. Before an agent retries a tool call, classify the prior operation

    Absent, running, completed or uncertain: the safe recovery action for each state, and how to test it.

  12. GPT-5.6 prompt cache: 0.66% hit rate in production, 99.96% in a probe

    How a changing tail defeats exact-prefix caching, and why our production fix reached only 9.86%.

  13. Cloud agent security: treat every process the agent controls as hostile

    How an agent printed our cluster map, what leaked, and the controls and tests we added.

  14. DeepSeek's dsh makes everything a plugin: two ideas to copy, and the cost

    An early read of DeepSeek's open-source agent harness, from its documentation as of August 13, 2026.

  15. One agent used 1.06M tokens and never wrote the patch

    Why a token budget is not enough, and the two earlier stops we added outside the model.

  16. Model router: kimi-k3 and deepseek-v4-flash both resolved 34 of 50

    A pinned control run showed 33x the input price bought no extra resolved tasks on our workload.

  17. 1 view

    The workflow engine said OK after a failed step

    Why an RPC acknowledgement is not a workflow result, and which record to trust.

  18. 1 view

    A Kubernetes warm pool can prewarm a container, but not a tenant

    Which agent state a warm pool can create before a request, and which must wait for an atomic claim.

  19. JuiceFS --subdir is a client-side chroot: an untrusted client picks its own root

    In JuiceFS Community Edition every check runs in the client, so we put a trusted server in front.

  20. JuiceFS metadata on Redis: create plus rename went from 22 ms to 3.2 ms

    What the move from Postgres to Redis gained on a loaded production filesystem, and what it cost in durability.

  21. 443 dead FUSE mounts took pod boots from 1 s to 20 to 105 s

    How dead mounts wedged kubelet on one node, the three cleanup traps, and a 60-second janitor.