HermitUI Agent

Hand it files and a task. See every step.

The agent writes Python, runs it inside your browser tab, reads the output, and continues until the task is complete. It uses your own model server, asks before modifying your files, and clears all data when you close the tab.

Open the agent Download the file One HTML file, around 11 MB with Python inside.
A real run with Qwen3.8 27B on a local llama.cpp server, sped up with the wait cut out.

It asks before it touches your files

Reading files and writing new ones runs on its own. A step that overwrites, deletes or moves one of your files, or tries to reach the network, stops and shows you what it wants to change and why.

You approve, reject, or rewind to any earlier step. The workspace is saved after every step, so a bad turn costs nothing.

If it gets stuck and sends the same step a third time, that step is skipped and the agent is told why. A fourth try pauses the run for you.

    A real run with Qwen3.8 27B on a local llama.cpp server, sped up with the wait cut out.

    It shows you the plan

    On a longer task the agent writes down a short plan and keeps it pinned above the steps, ticking each one off as it goes. You see where it is heading, plus what it just did. A note from you changes its course, and the plan changes with it.

    Set supervision to Plan first and it halts once the plan is written. Nothing in your files changes until you approve it.

      A real run with Qwen3.8 27B on a local llama.cpp server, sped up with the wait cut out. The task: a small library-loans app with a CLI, tests and a README, from a written spec.

      Everything happens in the tab

      Python in WebAssembly

      The agent's code runs in Pyodide, a build of CPython for the browser, inside a worker. It sees the files you put in the workspace and nothing else on your computer.

      Your model, your server

      It works with any OpenAI-compatible endpoint: llama.cpp, Ollama, LM Studio or vLLM on your own machine, or a cloud API if you choose one.

      Nothing is kept

      No account, no storage, no telemetry. Close the tab and the workspace is gone. To keep a session, export it to a zip file and import it later.

      Network blocked, within limits

      Agent code stays off the network on a best-effort basis: 17 known ways out are tested and closed. That is a denylist, not a guarantee, so keep real secrets out of the workspace.

      Files it reads and writes

      pandas, numpy and matplotlib load on first use. Eleven other libraries are built into the file, so documents work without any extra setup.

      Excel
      openpyxl, XlsxWriter
      Word
      python-docx
      PowerPoint
      python-pptx
      OpenDocument
      odfpy
      Charts
      matplotlib, seaborn
      Markdown and HTML
      Markdown, markdownify
      Data
      CSV, JSON, SQLite, XML with xmltodict
      Odds and ends
      PDF with matplotlib or PyMuPDF, tabulate, qrcode

      Get started

      1. Start a model server

        It must accept requests from a browser. With llama.cpp:

        llama-server -m model.gguf --jinja --port 9931
      2. Open the file

        Double-clicking it works. Python starts offline in about a second. Set the server address in Settings if it isn't on port 9931.

      3. Add files and describe the task

        Drop files or a folder into the workspace, type what you want done, and press Start.

      The model needs to spot and fix its own mistakes. Our test tasks pass with Qwen3.8 27B at reasoning effort Low.

      What leaves your computer

      Opening the file triggers no network request. Your task, the parts of your files the agent reads, and what its code prints go to the model server you set, along with the API key if you set one.

      Packages like numpy and pandas download from jsDelivr the first time agent code imports them. jsDelivr sees your IP address and the package name, never your task or your files.