DEV Community

Mahmudur Rahman Labib
Mahmudur Rahman Labib

Posted on

I Was Too Lazy to Open Five AI Tabs, So I Built AgentWebUI 🦥

Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady Submission 🦥

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady

Did you know the chainsaw was originally invented to help with childbirth?

Two Scottish doctors in the late 1700s looked at a hard, slow, painful job and thought: there has to be a lazier way. A few centuries later, we use it to cut down trees and star in horror movies.

That's the thing about laziness. It's not a character flaw. It's the R&D department of the human race.

So here's my confession. My AI workflow had become a part-time job. Claude Code in one terminal. Codex in another. A local Llama in Ollama. DeepSeek in a browser tab I kept losing. Every task started with the same ritual: which tab was I in, and where did I put that conversation?

OpenWebUI was supposed to fix this. Instead, I spent an afternoon trying to plug an agent into it and ended up with a lot of YAML and no agent.

So, like any respectable sloth, I did the laziest possible thing. I asked two friends who are almost as lazy as me, and together we built one tool so none of us would ever have to do that again.

What I Built

AgentWebUI is a lightweight, self-hosted, agent-first web UI. One server, one sidebar, every AI model and agent you use.

You open it, it says "Good evening", and it asks you one question: ask anything, or hand a task to an agent? That second option is the whole point. You don't do the work. You delegate it, then go lie down.

What it lets you be lazy about:

  • Switching tools. Claude Code, Codex, local Llama and DeepSeek all live in the same chat list. Pick one from a dropdown.
  • Paying twice. Plug in the Claude or Codex subscription you already pay for. No separate API key ritual.
  • Setup. It's Docker plus an env file. Fill in the blanks, run one command, done.
  • Waiting. It's extremely lightweight, so it starts fast and doesn't eat your laptop.
  • Remembering. Projects, files, search (⌘K) and a "Jump back in" row mean you never hunt for that one chat again.

Who gets to be lazier? Any developer juggling more than one AI tool. Which, in 2026, is every developer.

Demo

Try it live: agentwebui.hackershostel.com

On the home screen, the sidebar holds a DeepSeek chat, a Claude Code workspace, Codex, OpenAI and Gemini, all in one list. The model picker says llama3.2:3b, running locally. That's five tools' worth of tabs I no longer have to open.

Code

GitHub logo HackersHostel / AgentWebUI

The lightest web UI for OpenAI-compatible model APIs and ACP agents.

AgentWebUI

Tests

One small web page to chat with AI models and with command-line agents, on your own server. Open it and chat there is no setup screen and no accounts. Everything is configured in .env. The package and command are still named agentwebui-lite.

  • Models: any OpenAI-compatible API (OpenAI, OpenRouter, NVIDIA, Groq, Ollama, LM Studio, vLLM, …).
  • Agents: anything that speaks the Agent Client Protocol over stdio: Claude Code, Codex, Hermes, Pi, Gemini CLI, OpenCode, … Pick the agent, then its model and effort, then the folder it works in. It streams its thinking, plan, tool calls and diffs, and asks before it acts.

The server is about 3,000 lines of Python with one dependency (aiohttp) and uses about 40 MB of memory. The web client is Preact through htm with no build step. Nothing loads from the internet unless you pick a font other than Geist.

…

Setup, written for people who also don't want to read setup instructions:

git clone https://github.com/HackersHostel/AgentWebUI.git
cd AgentWebUI
cp .env.example .env   # fill in your models and agents
docker compose up -d
Enter fullscreen mode Exit fullscreen mode

Then open it in your browser and go back to lying down.

How I Built It

The design rule was simple: agents are the main character, chat is the supporting cast. In most UIs it's the other way around.

  • Open-weight models at the core. Llama 3.2 3B runs locally, and open-weight DeepSeek models sit right next to it. Same input box, same history.
  • Agents as first-class citizens. Agents get their own section, run inside project workspaces, and show up in the chat list like any other conversation.
  • Bring-your-own subscription. Claude Code and Codex connect through the subscriptions you already have.
  • Docker + env files. Every model endpoint and agent connection is config, not code. Moving from laptop to home server is a copy-paste.
  • Lightweight on purpose. No feature makes it in unless it earns its weight.

Why Does Open Innovation Matter?

Because the laziest model is the one you never have to ask permission to use.

  • It runs on my machine. A local Llama answers even when the Wi-Fi doesn't. Quick questions never leave the laptop.
  • My files stay mine. Agents work on my own projects, on my own server, not in someone else's cloud.
  • Swap models without drama. New open-weight model drops? Change the env file, restart, done. No vendor lock-in, no rewrite.
  • Cheap tasks cost nothing. Small jobs go to free local models. The paid subscriptions only get the heavy lifting.

A closed, single-vendor tool can't do this. It wants you in its tab. AgentWebUI is just one tab, and it's yours.

The Lazy Payoff

A scientific study, conducted by me, on my own laziness:

Task Before With AgentWebUI
Find the right AI tool Open 4 tabs, 2 terminals, sigh One dropdown
Find yesterday's chat Check every app's history ⌘K
Try a new open model New tool, new install, new login Edit env file, restart
Hand off a coding task Open a terminal, set up the agent Pick Claude Code, type the task

The chainsaw doctors would be proud. Hard job in, lazy solution out.

Prize Categories

Entering for the overall prize.


Built with @tahrimwalid and @mahedi, who are almost as lazy as me.

If you're a developer with more AI tabs than browser memory, give AgentWebUI a spin. Then do what the sloths do: delegate, relax, and let the agents earn their keep. 🦥

Top comments (0)