Skip to main content

An intelligent tool-making package that leverages LLMs to analyze projects and generate tools

Project description

LLM Tool Maker

CI PyPI version Python versions License: MIT

An intelligent tool-making system that uses LLMs to analyze projects, generate tools, and execute them in a sandboxed environment — all through a modern web dashboard or CLI.

Quick Start

# 1. Install
pip install llm-tool-maker

# 2. Initialize (detects Ollama, creates DB, writes .env)
llm-tool-maker init

# 3. Launch the dashboard
llm-tool-maker ui

That's it. No PostgreSQL, no external services — just your local Ollama instance. The dashboard opens at http://localhost:5000.

Features

Feature Description
Zero-setup persistence SQLite by default (stdlib, no dependencies). Opt-in PostgreSQL for production.
Pluggable LLMs Ollama (local), OpenAI, or Anthropic — swap via --provider
Sandboxed execution Subprocess runner with module whitelist, no network, configurable timeout, auto-retry with dep install
Autonomous pipeline 6-stage DB-backed pipeline: Analyse → Plan → Validate → Implement → Test → Review, with auto-fix loop
Web dashboard 6-page glass-morphism UI (Dashboard, Pipeline, Execute, Analyze, Provider, Config, Docs)
Dependency management AST-based import scanning, 200+ stdlib modules, 50+ module→package mappings, auto-install
Remote API client ToolMakerClient lets you consume Tool Maker as a REST service
Docker Compose One-command deployment with Ollama + PostgreSQL + the app

Installation

# From PyPI
pip install llm-tool-maker

# With PostgreSQL support (optional)
pip install 'llm-tool-maker[postgres]'

# All extras
pip install 'llm-tool-maker[all]'

# From source
git clone https://github.com/codewithwest/project_tool-maker.git
cd project_tool-maker
uv sync

Usage

CLI

llm-tool-maker init            # One-time setup (checks Ollama, creates DB, writes .env)
llm-tool-maker ui              # Launch web dashboard
llm-tool-maker analyze <path>  # Scan a project
llm-tool-maker pipeline <goal> # Run full autonomous pipeline
llm-tool-maker run <file>      # Execute a tool file
llm-tool-maker config show     # View configuration
llm-tool-maker migrate up      # Run DB migrations
llm-tool-maker --help          # All commands

Python API

from tool_maker import ToolMaker

# Use local Ollama (default)
tm = ToolMaker(llm_provider="ollama", model="llama3.2")

# Or OpenAI
tm = ToolMaker(llm_provider="openai", api_key="sk-...", model="gpt-4o-mini")

# Or Anthropic
tm = ToolMaker(llm_provider="anthropic", api_key="sk-...", model="claude-sonnet-4-20250514")

# Analyze, generate, execute
info = tm.analyze_project("/path/to/project")
result = tm.create_and_execute_tool("Parse CSV files and return row count")

Remote API Client

Use Tool Maker as a remote service from any Python project:

from tool_maker import ToolMakerClient

client = ToolMakerClient("http://localhost:5000")
tools = client.list_tools()
result = client.execute("print('hello world')")
client.run_pipeline("Build a CLI tool that counts lines of code")

API-only Mode

Serve just the REST API (no Jinja templates):

llm-tool-maker ui --api-only

Database

Zero-config: SQLite is used automatically when no TOOLMAKER_DB_DSN is set. The database file lives at ~/.config/tool-maker/data.db.

PostgreSQL (for production):

export TOOLMAKER_DB_DSN="postgresql://user:pass@localhost:5432/toolmaker"
llm-tool-maker ui

Migrations run automatically on startup.

Docker

docker compose up

This starts Ollama, PostgreSQL, and the app — reachable at http://localhost:5000.

Environment Variables

Variable Default Description
TOOLMAKER_DB_DSN "" (SQLite) PostgreSQL DSN. Empty = SQLite backend.
TOOLMAKER_DB_PATH ~/.config/tool-maker/data.db SQLite database file path
OLLAMA_BASE_URL http://localhost:11434 Ollama server URL
OLLAMA_MODEL llama3.2 Default LLM model
SANDBOX_TIMEOUT 30 Tool execution timeout in seconds
MAX_FIX_ATTEMPTS 3 Auto-fix loop retry limit
TOOL_MAKER_CONFIG ~/.config/tool-maker/config.toml Config file path

Web Dashboard

Pages

  • Dashboard — overview, live terminal, quick stats
  • Pipeline — run the 6-stage autonomous pipeline with progress tracking
  • Execute — IDE-style editor with sidebar (Saved + Database tools), command bar, tabbed results
  • Analyze — scan a project and inspect its structure
  • Provider — configure LLM provider and test prompts
  • Config — manage database, migrations, sandbox whitelist, dependency approvals
  • Docs — view release notes and README, rendered as formatted markdown

Project Structure

src/tool_maker/
├── __init__.py          # Public API exports
├── client.py            # ToolMakerClient (remote HTTP client)
├── config.py            # ToolMakerConfigFile
├── tool_maker.py        # Main orchestrator
├── tool_fixer.py        # LLM-driven tool fixer
├── analyzer/            # AST-based project scanner
├── cli/                 # CLI argument parsing and handlers
├── db/                  # SQLite + PostgreSQL backends, models, migrations
├── llm/                 # Ollama, OpenAI, Anthropic providers
├── planner/             # Planner, validator, executor, reviewer
├── tool/                # Generator, executor, sandbox, fixer, deps
└── ui/                  # Flask web app (routes, templates, static)

Development

uv sync
uv run ruff check .
uv run pytest

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

llm_tool_maker-0.3.0.tar.gz (140.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

llm_tool_maker-0.3.0-py3-none-any.whl (88.2 kB view details)

Uploaded Python 3

File details

Details for the file llm_tool_maker-0.3.0.tar.gz.

File metadata

  • Download URL: llm_tool_maker-0.3.0.tar.gz
  • Upload date:
  • Size: 140.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for llm_tool_maker-0.3.0.tar.gz
Algorithm Hash digest
SHA256 fa40063e34cdf12c9d5f8e19fdc958b88ba229aa54a807980fa7aac9115d0240
MD5 ce3f73a7a37543141b7f1bd316dfb281
BLAKE2b-256 c33f05f58636cecc9d1e4acfe82650ba2abed6687eae6634dfdd95fbd40aa146

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_tool_maker-0.3.0.tar.gz:

Publisher: release.yml on codewithwest/project_tool-maker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llm_tool_maker-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: llm_tool_maker-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 88.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for llm_tool_maker-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0a5194b184f69170eab209c54a432c626e2b611d97e79ea2e510ec1bd325eb86
MD5 b8025dbf8ab451bd51865419162e4d4d
BLAKE2b-256 a3dcbbe0db9d6869d3a9854221f63c0353fffee57ac09ba20a682d88f0e42330

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_tool_maker-0.3.0-py3-none-any.whl:

Publisher: release.yml on codewithwest/project_tool-maker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page