From Suggestion to Software: My Journey into Local Agentic “Vibe Coding”

A few weeks ago, a conversation with a co-worker changed my development workflow. They suggested I move away from heavy reliance on cloud-based APIs and instead experiment with the power of local agentic coding. The goal? To see if I could build fully functional software using nothing but locally hosted LLMs and agentic tools, running entirely on my own hardware.

The result was the project you see here: a feature-rich, drag-and-drop Todo List application.

The Setup: Claude Code meets Ollama

I started the experiment with a specific goal: use Claude Code (an agentic CLI tool) as my primary interface, but point it toward a local Ollama instance instead of Anthropic’s servers.

My setup isn’t a massive server farm, but it is capable. I’m running a machine with 24GB of VRAM, which provides enough headroom to run surprisingly capable models.

The “birth” of this app wasn’t a single complex prompt, but rather an AI-generated prompt I used to lay the foundation. I gave the agent a simple directive to create a basic Todo list with an Express.js backend and a vanilla JavaScript frontend. Within minutes, the scaffolding was complete: server.js, index.html, and package.json were all generated and functional.

Iterative Refinement: The “Vibe” in Coding

Once the foundation was laid, the real “vibe coding” began. Instead of opening files to manually write CSS or debug logic, I stayed within the Claude Code interface. I would describe the “vibe” or the desired feature:

  • “Make the UI look modern and add a dark mode toggle.”
  • “Add the ability to reorder tasks using drag-and-drop.”
  • “Ensure the tasks persist even if I restart the server.”

I acted more as a product manager and reviewer than a traditional coder. I would watch and wait while the agent creates new files and edits existing ones on the fly.

Expanding the Toolkit: Zed and Qwen

As the experiment progressed, my co-worker suggested another tool: Zed, the high-performance editor. I decided to test Zed’s integration with my local Ollama setup. This allowed for a more visual, IDE-centric approach to the same agentic workflow.

During this phase, I experimented with several models to find the “sweet spot” between intelligence and speed. While larger models were smarter, they were noticeably slower. I eventually settled on qwen3.5:32-a3b. It proved to be the perfect balance, extremely capable of following complex architectural instructions while remaining fast enough to keep the “flow” of development uninterrupted.

Under the Hood: How it Works

The resulting application is a testament to what local agents can achieve. It’s a full-stack application consisting of:

  1. A RESTful Backend (server.js): Powered by Express.js. It handles the logic for creating, updating, and deleting tasks. It even handles the complex logic of reordering tasks by processing an array of IDs.
  2. A Persistent Layer (todos.json): No heavy database setup required. The agent implemented a simple file-based system that reads and writes to a JSON file, ensuring your tasks are there when you come back.
  3. A Dynamic Frontend (index.html): A single-page application using Vanilla JS. It features a drag-and-drop interface (using the HTML5 Drag and Drop API) and a themeable UI driven by CSS Variables.

Here is a glimpse of the core logic the agent implemented for the check/uncheck reordering feature:

// A snippet of the reordering logic generated by the agent
app.post('/reorder', (req, res) => {
    const { order } = req.body; // An array of IDs in the new order
    todos = order.map(id => todos.find(t => t.id === id));
    saveTodos();
    res.json(todos);
});

Final Thoughts

This experiment proved that “vibe coding” with local models is no longer a pipe dream. With 24GB of VRAM and a well-tuned model like Qwen, you can move from a single prompt to a polished, multi-feature application without ever sending a single byte of your code to a cloud provider.

It’s private, it’s fast, and most importantly, it’s incredibly fun.

Check out the full source code here: https://github.com/ryang3d/tiny-todo

Leave a Reply

Your email address will not be published. Required fields are marked *

error: Content is protected !!