<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/my-local-ai-assistant-has-a-reviewer-agent-that-can-block-my-own-code-siwzmdyeq" -->

---
title: My local AI assistant has a reviewer agent that can...
description: A personal local AI assistant called Eva runs on a laptop with a local model through Ollama, with a reviewer agent that can block its own author's code before...
canonical: https://daily.dev/posts/my-local-ai-assistant-has-a-reviewer-agent-that-can-block-my-own-code-siwzmdyeq
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: My local AI assistant has a reviewer agent that can block my own code | daily.dev
og:description: A personal local AI assistant called Eva runs on a laptop with a local model through Ollama, with a reviewer agent that can block its own author's code before...
og:url: https://daily.dev/posts/my-local-ai-assistant-has-a-reviewer-agent-that-can-block-my-own-code-siwzmdyeq
og:image: https://api.daily.dev/og/posts/siWzmDYEq.png
og:image:alt: My local AI assistant has a reviewer agent that can block my own code
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# My local AI assistant has a reviewer agent that can block my own code

**[Build With GenAI](https://daily.dev/sources/buildwithgenai)** · [@dio77799](https://daily.dev/dio77799) · 3 min read · 21 upvotes · 0 comments

## Summary

A personal local AI assistant called Eva runs on a laptop with a local model through Ollama, with a reviewer agent that can block its own author's code before it merges. Four roles, planner, developer, QA and reviewer, write to a shared handoff file, and the reviewer has read-only tools so it can't edit what it judges. The reviewer flagged real issues: tool errors sending local paths back into the model's context, and an unlocked counter in a multi-threaded server. Tool calling needed a bigger model: llama3.2:3b answered in about 15 seconds but picked tools badly, so the chat runs on qwen3:8b, which gets the calls right but takes around a minute per answer on CPU. After 7 queries the counter shows 0.0049 kWh, an estimate based on an assumed 40 W figure.

## Content

![Eva's agent office, real panel](https://dio77799.github.io/portafolio/sistemas/eva/eva-oficina.png)

Eva is a personal assistant that runs on my laptop: a local model through Ollama, a small web panel, and a chat that can call tools to read my tasks, check my projects and summarize the day. Nothing leaves the machine. It uses only Python's standard library, so there are no third-party packages to audit.

The part worth sharing is how it gets built.

## Four roles, one handoff file

Every change goes through a planner, a developer, QA and a reviewer. Each writes its section in one handoff file per workstream. The reviewer only has read tools, so it cannot edit the code it judges, and nothing is merged until it gives a verdict. The panel shows that pipeline as an office with a status light per agent. The image above is the real panel.

What the reviewer flagged that I would have shipped:

- Tool errors were going back into the model's context, local paths included. Fixed: errors stay out of the prompt now.
- If Ollama dies mid-chat, the panel shows a raw traceback. Still open, low severity.
- A counter written from a multi-threaded server has no lock, so two chats at once can lose a count. Accepted as known debt.

None of this is dramatic. These are the boring bugs that pile up when the same person writes and approves the code.

## Tool calling needs a bigger model

llama3.2:3b answered in about 15 seconds but picked tools badly or skipped them. qwen3:8b is slower and gets the calls right, so the chat runs on 8B. A quick answer from the wrong tool is still a wrong answer.

## What it costs

Eva times the real compute of every query and converts it to energy. After 7 queries: 7.4 minutes of compute, 0.0049 kWh, about L 0.02. The 40 W figure is assumed, not read from a meter, so it is an estimate. On a CPU-only laptop the 8B model takes around a minute per answer, tool rounds included. Cheap and private, but slow.

![Energy counter from the panel](https://dio77799.github.io/portafolio/sistemas/eva/eva-contador.png)

## Local is not secure by default

The panel listens only on 127.0.0.1. Every POST needs a per-run token and a local Host header, and the chat can only run whitelisted, low-impact actions. Anything a tool returns is treated as data, never as an instruction.

It is a personal project in progress, not a product. So far the reviewer has been the most useful part of it.

#ai #llm #ollama #agents #python #localai #codereview #privacy

## Similar posts on daily.dev

- [Coding From the Himalayas With an Offline AI Agent](https://daily.dev/posts/coding-from-the-himalayas-with-an-offline-ai-agent-kxvmgyfwv) · Latent Space · 0 upvotes · 0 comments
- [Self-Hosting AI Code Review: Local Models for Better Code Quality](https://daily.dev/posts/self-hosting-ai-code-review-local-models-for-better-code-quality-ktiohtydz) · SitePoint · 0 upvotes · 0 comments
- [Local AI Models for Coding 2026: Ollama Setup and Best Models](https://daily.dev/posts/local-ai-models-for-coding-2026-ollama-setup-and-best-models-sohghmj3p) · Alex CloudStar · 1 upvotes · 0 comments
- [Build Your First AI Agent for Free: A Local SRE Assistant with Ollama and Python](https://daily.dev/posts/build-your-first-ai-agent-for-free-a-local-sre-assistant-with-ollama-and-python-y2th1lnyz) · Medium · 2 upvotes · 0 comments
- [Can a Local LLM Run My AI Assistant?](https://daily.dev/posts/can-a-local-llm-run-my-ai-assistant--k8pjpamza) · Towards Data Science · 0 upvotes · 0 comments

---

Tags: [#python](https://daily.dev/tags/python), [#ai-agents](https://daily.dev/tags/ai-agents), [#code-review](https://daily.dev/tags/code-review), [#local-ai](https://daily.dev/tags/local-ai), [#ollama](https://daily.dev/tags/ollama)

[View this post on daily.dev](https://daily.dev/posts/my-local-ai-assistant-has-a-reviewer-agent-that-can-block-my-own-code-siwzmdyeq)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"DiscussionForumPosting","mainEntityOfPage":"https://daily.dev/posts/my-local-ai-assistant-has-a-reviewer-agent-that-can-block-my-own-code-siwzmdyeq","headline":"My local AI assistant has a reviewer agent that can block my own code","text":"A personal local AI assistant called Eva runs on a laptop with a local model through Ollama, with a reviewer agent that can block its own author's code before it merges. Four roles, planner, developer, QA and reviewer, write to a shared handoff file, and the reviewer has read-only tools so it can't edit what it judges. The reviewer flagged real issues: tool errors sending local paths back into the model's context, and an unlocked counter in a multi-threaded server. Tool calling needed a bigger model: llama3.2:3b answered in about 15 seconds but picked tools badly, so the chat runs on qwen3:8b, which gets the calls right but takes around a minute per answer on CPU. After 7 queries the counter shows 0.0049 kWh, an estimate based on an assumed 40 W figure.","url":"https://daily.dev/posts/my-local-ai-assistant-has-a-reviewer-agent-that-can-block-my-own-code-siwzmdyeq","datePublished":"2026-11-07T05:44:59.502Z","dateModified":"2026-11-07T05:45:24.447Z","author":{"@type":"Person","name":"James V","url":"https://daily.dev/dio77799","image":"https://media.daily.dev/image/upload/s--D_CwPJ3R--/f_auto,pg_1/v1794081525/avatars/avatar_SEp70EmWGM0hHeihGBCha?_a=BAMAMiiw0","description":"Informatics student | Software developer | Cybersecurity \u0026 Networks | Applied AI \u0026 automation","interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"EndorseAction"},"userInteractionCount":1000}},"interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":21},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"isPartOf":{"@type":"WebPage","url":"https://daily.dev/squads/buildwithgenai","name":"Build With GenAI"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Build With GenAI","item":"https://daily.dev/squads/buildwithgenai"},{"@type":"ListItem","position":3,"name":"My local AI assistant has a reviewer agent that can block my own code"}]}
```

