AI Agents

Local multi-agent orchestration with durable memory and review gates.

AI Agents turns scraping, stock analysis, scheduling, and small coding tasks into bounded local-agent workflows that can be routed, reviewed, logged, and remembered across sessions.

What it solves

Local LLMs are useful for bounded work, but they need a system around them: task boundaries, typed inputs and outputs, review rules, retries, logging, and shared memory.

AI Agents keeps Claude Code in the planner/reviewer role while a configured LM Studio model handles worker tasks through an OpenAI-compatible API. The point is not agent novelty; it is controlled delegation that stays inspectable.

Who this is for

  • Developers testing local LLM task delegation
  • People who want scheduled scraping or market reports
  • Builders comparing structured memory and semantic recall
  • Teams thinking about safe coding-agent review boundaries

What it does

AI Agents is a Python-based orchestration project for running a small team of focused local agents. An OrchestratorAgent starts shared services, schedules recurring work, dispatches tasks, handles retries, and records task outcomes.

A TaskRouter decides when coding work is safe to delegate, and a CodeReviewer gate prevents generated code from being written without review. Shared memory combines SQLite records with ChromaDB semantic search so agents can recall facts, preferences, task history, and previous context.

Workflow covered

  1. Plan and route - classify the task, decide which agent should handle it, and keep unsafe work local.
  2. Execute and review - run scraping, market, scheduled, or coding work through typed agents with logs, retries, and reviewer gates.
  3. Remember and improve - store structured task outcomes and searchable context so later sessions can reuse what the system learned.

Technical highlights / stack

Language/runtime
Python AsyncIO Pydantic pytest
Model interface
LM Studio OpenAI-compatible API Claude Code
Memory
SQLite ChromaDB Semantic search
Workers
APScheduler Playwright BeautifulSoup yfinance

Why it matters

The useful part of agent systems is not pretending the model is autonomous. It is making delegation explicit enough that humans can trust the boundary, inspect the work, and improve the system after failures.

Technical notes

Typed routing Task policies live in routing code and configuration so delegation rules can evolve without scattered conditionals.
Reviewer gate Coding output is treated as proposed work until a reviewer approves the write path.
Shared memory SQLite keeps durable structured records while ChromaDB adds fuzzy recall for context that is hard to query exactly.
Scheduled jobs APScheduler jobs make recurring stock reports and health checks visible instead of hiding them in ad-hoc scripts.

Hard parts

  • Drawing a hard boundary between work a local model can safely produce and work Claude should handle directly.
  • Making delegated code generation useful without treating it as automatically trusted output.
  • Keeping memory centralized so agents share context without reaching into database internals.
  • Designing schedules, retries, and logs so long-running work fails clearly instead of disappearing.

Engineering takeaways

  • Local models work best when the task boundary is narrow and the expected output format is typed.
  • Agent memory needs both structured records and semantic search; one without the other misses important context.
  • Coding-agent safety belongs in policy and review gates, not in trust that a prompt will behave.
  • Explicit agents, routes, review, and logs are easier to trust than hidden framework magic.

Current scope

Works now

  • On-demand scraping tasks
  • Bounded coding delegation
  • Scheduled stock analysis
  • Orchestrator health checks

Core systems

  • OrchestratorAgent
  • TaskRouter
  • CodeReviewer
  • Shared memory service

Still improving

  • Delegation policy tuning
  • PostgreSQL production path
  • More durable job dashboards
  • Better task outcome summaries

What to do next

Review the source if you are interested in local model orchestration, typed task boundaries, memory layers, and human review gates around generated work.