Files over tools: how we built our agent with a virtual filesystem and bash
cjbell
31 points
7 comments
July 09, 2026
Related Discussions
Found 5 related stories in 119.2ms across 5,215 title embeddings via pgvector HNSW
- Show HN: Introducing: Zotfile Agents patriceckhart · 11 pts · July 12, 2026 · 54% similar
- Snapshots, copy-on-write, and the economics of agent sandboxes nikhilunni · 15 pts · July 23, 2026 · 52% similar
- How version control will evolve for the agent boom tapanjk · 46 pts · July 09, 2026 · 52% similar
- Show HN: Reverse-engineering web apps into agent tools pancomplex · 30 pts · July 09, 2026 · 51% similar
- My Agent Setup carimura · 100 pts · August 12, 2026 · 49% similar
Discussion Highlights (4 comments)
cjbell88
Author here. This post covers how we rebuilt our agent after a tool-per-resource approach didn't scale — we replaced most of our tools with a virtual filesystem the agent explores via bash. A few things that might be interesting to discuss: - We didn't want to boot a container per session, so we run a bash interpreter + virtual FS in-memory as a process in our Elixir cluster. This is a port of Vercel's just-bash (TypeScript) to Elixir. The original's test suite made it a well-defined target for an agent-assisted port — we reused the fixtures verbatim: https://github.com/elixir-ai-tools/just_bash - The "why not a real sandbox" tradeoff is the one I'm least certain about long-term. In-memory gets us instant starts and no sync problems, but if we add a real scripting language (Python) for the agent, we'll probably have to swap in a real sandbox. We've kept the interfaces decoupled so that swap stays cheap. - For data that doesn't map well to static files (logs, message history), we registered a `knock` CLI inside the bash environment instead of adding more tools. Because it has --help for every resource, the agent learns it with almost no steering. Happy to answer questions about the architecture, the Oban-backed agent loop, or how we're evaluating trajectories (nightly evals, pass^k on common tasks).
Tsarp
What harness are you guys running?
andai
I thought it would be bash+fuse but it's actually running in the matrix: simulated bash in Elixir ported from Vercel's just-bash: > A virtual bash environment with an in-memory filesystem, written in TypeScript and designed for AI agents. >Broad support for standard unix commands and bash syntax with optional curl, Python, JS/TS, and sqlite support. https://github.com/vercel-labs/just-bash/tree/main/packages/... See also (credited by TFA): https://vercel.com/blog/how-to-build-agents-with-filesystems...
n4pw01f
We ended up doing the same, own harness with a world view (schema.org) and map reduce rather than a RAG. Happy with the results and context hydration speed