Skip to main content

DSL-based intent execution system with iterative refinement, featuring AI-powered suggestions via Ollama, safe simulation, and automatic health validation.

Project description

ITERUN

DSL-based intent execution system with iterative refinement, AMEN boundary, and AI-powered assistance

Python 3.11+ License: MIT

AI Cost Tracking

PyPI Version Python License AI Cost Human Time Model

  • ๐Ÿค– LLM usage: $1.1909 (7 commits)
  • ๐Ÿ‘ค Human dev: ~$400 (4.0h @ $100/h, 30min dedup)

Generated on 2026-06-06 using openrouter/qwen/qwen3-coder-next


Overview

ITERUN is a system that allows you to:

  1. Define intents using a simple YAML-based DSL
  2. Simulate execution with dry-run planning
  3. Get AI suggestions using local LLMs via Ollama
  4. Iteratively refine your intent through feedback loops
  5. Execute safely with the AMEN boundary (explicit approval required)

Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  CLI / Web UI       โ”‚  โ† User interface
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
          โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Parser / Validator  โ”‚  โ† DSL โ†’ IR
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
          โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Intermediate Rep.   โ”‚  โ† Canonical state
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
          โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Planner / Simulator โ”‚  โ† Dry-run
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
          โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ AI Gateway (Ollama) โ”‚  โ† LLM suggestions
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
          โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Feedback Loop       โ”‚  โ† Iterate
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
          โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ AMEN Boundary       โ”‚  โ† Explicit approval
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
          โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Executor            โ”‚  โ† Real execution
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Quick Start

Installation

# Clone repository
git clone https://github.com/softreck/iterun.git
cd iterun

# Full setup (recommended)
make setup

# Or manual install
pip install -r requirements.txt
pip install litellm
cp .env.example .env

Configuration (.env)

Copy .env.example to .env and adjust:

# Server
HOST=0.0.0.0
PORT=8080

# AI Gateway
OLLAMA_BASE_URL=http://localhost:11434
DEFAULT_MODEL=llama3.2
MAX_MODEL_PARAMS=12.0

# Execution (no AMEN prompt by default)
SKIP_AMEN_CONFIRMATION=true
CONTAINER_PORT=8000

AI Gateway Setup (Ollama)

# Install Ollama
curl -fsSL https://ollama.com/install.sh | sh

# Start and pull model
make ollama-start
make ollama-pull

# Or manually
ollama serve
ollama pull llama3.2

Using Makefile

make help          # Show all commands
make setup         # Full setup
make web           # Start web server
make shell         # Interactive shell
make execute       # Execute example intent
make test          # Run all tests
make ollama-models # List available models
make clean         # Clean temp files

Shell Interface

# Start interactive shell
make shell
# Or: python -m cli.main

# Execute intent directly (no AMEN prompt)
make execute
# Or: python -m cli.main execute examples/user-api.intent.yaml

Interactive Shell Commands:

intent> new my-api          # Create new intent
intent> load file.yaml      # Load from file
intent> plan                # Run dry-run
intent> suggest             # Get AI suggestions
intent> apply               # Auto-apply AI suggestions
intent> chat                # Chat with AI
intent> iterate             # Apply manual changes
intent> amen                # Approve execution
intent> execute             # Execute approved intent
intent> show [json]         # Show current state
intent> models              # List AI models
intent> ai-health           # Check AI Gateway status
intent> help                # Show help
intent> exit                # Exit shell

Web Interface

# Start web server
python -m web.app

# Open browser at http://localhost:8080

AI Gateway

The AI Gateway uses LiteLLM to provide unified access to local LLMs via Ollama.

Supported Models (โ‰ค12B parameters)

Model Size Description
llama3.2 3B Default - Fast and efficient
llama3.2:1b 1B Ultra lightweight
llama3.1:8b 8B Balanced performance
mistral 7B Fast inference
mistral-nemo 12B Best quality under 12B
gemma2 9B Google Gemma 2
gemma2:2b 2B Lightweight
phi3 3.8B Microsoft Phi-3
qwen2.5 7B Alibaba Qwen 2.5
codellama 7B Code generation
codegemma 7B Google CodeGemma
deepseek-coder 6.7B DeepSeek Coder

Configuration

Environment variables:

export OLLAMA_BASE_URL="http://localhost:11434"
export DEFAULT_MODEL="llama3.2"
export MAX_MODEL_PARAMS="12.0"

DSL Format

INTENT:
  name: user-api
  goal: Create a REST API for user management

ENVIRONMENT:
  runtime: docker
  base_image: python:3.12-slim
  ports:
    - 8000

IMPLEMENTATION:
  language: python
  framework: fastapi
  actions:
    - api.expose GET /ping
    - api.expose GET /users
    - api.expose POST /users
    - api.expose DELETE /users/{id}

EXECUTION:
  mode: dry-run

Supported Actions

Action Format Description
api.expose api.expose METHOD /path Expose HTTP endpoint
db.create db.create table_name Create database table
db.add_column db.add_column table column type Add column to table
shell.exec shell.exec command Execute shell command
rest.call rest.call METHOD url Call external REST API
file.create file.create path Create file

API Reference

REST Endpoints

Method Endpoint Description
GET /api/intents List all intents
POST /api/intents/parse Parse DSL and create intent
GET /api/intents/{id} Get intent by ID
DELETE /api/intents/{id} Delete intent
POST /api/intents/{id}/plan Run dry-run
POST /api/intents/{id}/iterate Apply changes
POST /api/intents/{id}/amen Approve for execution
POST /api/intents/{id}/execute Execute approved intent
GET /api/intents/{id}/code Get generated code

AI Gateway Endpoints

Method Endpoint Description
GET /api/ai/status Check AI Gateway status
GET /api/ai/models List available models
POST /api/ai/complete Generate AI completion
POST /api/ai/chat Chat with AI
POST /api/intents/{id}/ai/suggest Get AI suggestions
POST /api/intents/{id}/ai/apply Auto-apply suggestions

Python API

from ir.models import IntentIR
from parser import parse_dsl
from planner import plan_intent
from ai_gateway import get_gateway, create_feedback_loop

# Parse DSL
ir = parse_dsl(dsl_content)

# Run dry-run
result = plan_intent(ir)
print(result.generated_code)

# Get AI suggestions
loop = create_feedback_loop()
suggestions = loop.analyze(ir, focus="security")
print(suggestions.suggestions)

# Apply AI suggestions
loop.iterate(ir, auto_apply=True)

# Or chat directly
gateway = get_gateway()
response = gateway.complete("Explain FastAPI middleware")
print(response["content"])

Testing

# Run all tests (58 tests)
pytest

# Run specific test suites
pytest tests/e2e/test_shell.py -v      # 17 tests
pytest tests/e2e/test_web.py -v        # 18 tests  
pytest tests/e2e/test_ai_gateway.py -v # 23 tests

# Run with coverage
pytest --cov=. --cov-report=html

Project Structure

iterun/
โ”œโ”€โ”€ ir/                 # Intermediate Representation models
โ”œโ”€โ”€ parser/             # DSL parser
โ”œโ”€โ”€ planner/            # Dry-run simulator
โ”œโ”€โ”€ executor/           # Execution engine
โ”œโ”€โ”€ ai_gateway/         # LiteLLM AI Gateway
โ”‚   โ”œโ”€โ”€ gateway.py      # Main gateway with Ollama models
โ”‚   โ””โ”€โ”€ feedback_loop.py # LLM-powered feedback loop
โ”œโ”€โ”€ cli/                # Shell interface
โ”œโ”€โ”€ web/                # Web interface (FastAPI)
โ”œโ”€โ”€ tests/e2e/          # E2E test suite
โ”‚   โ”œโ”€โ”€ test_shell.py
โ”‚   โ”œโ”€โ”€ test_web.py
โ”‚   โ””โ”€โ”€ test_ai_gateway.py
โ”œโ”€โ”€ examples/           # Example DSL files
โ”œโ”€โ”€ config.py           # Configuration loader
โ”œโ”€โ”€ Makefile            # Build automation
โ”œโ”€โ”€ .env.example        # Environment template
โ”œโ”€โ”€ requirements.txt
โ””โ”€โ”€ README.md

Workflow

  1. Define Intent โ†’ Write DSL or use web editor
  2. Parse โ†’ Convert DSL to IR (Intermediate Representation)
  3. Plan โ†’ Run dry-run simulation, review generated code
  4. Get AI Suggestions โ†’ Analyze with local LLM
  5. Iterate โ†’ Make changes, re-plan until satisfied
  6. Execute โ†’ Run with auto-validation and auto-fix
  7. Validate โ†’ Automatic health checks on all endpoints

Validation & Auto-Fix

After container deployment, the system automatically:

  1. Waits for container startup (configurable STARTUP_WAIT)
  2. Validates all exposed endpoints with HTTP requests
  3. Detects issues like connection refused, timeouts, HTTP errors
  4. Auto-fixes common problems:
    • Missing __main__ block
    • Wrong port configuration
    • Missing dependencies
  5. Restarts container with fixes
  6. Re-validates until success or max iterations reached

Configuration

# In .env
VALIDATE_AFTER_EXECUTE=true
AUTO_FIX_ENABLED=true
MAX_FIX_ITERATIONS=3
STARTUP_WAIT=2
VALIDATION_TIMEOUT=10

Example Output

Execution Logs:
  [12:38:55] Container started: 8f35e0a2fb27
  [12:38:55] Waiting 2s for container startup...
  [12:38:57] โœ“ http://localhost:8002 โ†’ 200
  [12:38:57] โœ“ http://localhost:8002/ping โ†’ 200
  [12:38:57] โœ“ http://localhost:8002/health โ†’ 200
  [12:38:57] โœ“ All endpoints validated successfully
โœ“ Execution completed in 2.56s

Validation:
  โœ“ All endpoints validated

API Endpoints

Method Endpoint Description
POST /api/intents/{id}/validate Validate running container
GET /api/containers/{id}/logs Get container logs

License

Licensed under Apache-2.0.

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

iterun-0.1.4.tar.gz (45.1 kB view details)

Uploaded Source

Built Distribution

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

iterun-0.1.4-py3-none-any.whl (45.8 kB view details)

Uploaded Python 3

File details

Details for the file iterun-0.1.4.tar.gz.

File metadata

  • Download URL: iterun-0.1.4.tar.gz
  • Upload date:
  • Size: 45.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for iterun-0.1.4.tar.gz
Algorithm Hash digest
SHA256 3fb2ff280f9da4a8731a3a83aa0caa84026d22e481e1d7136c6d106f3b4301f9
MD5 391b9bce6896633120b7f6454e6e35f4
BLAKE2b-256 efb6ba4e940addc84e0ab3b7abb9caa914bca72a4c7f406d307c675c28bd3d66

See more details on using hashes here.

File details

Details for the file iterun-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: iterun-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 45.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for iterun-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 60aee2005fa45b68c5058508fd8bf92804deff4ee07aedff429e953bd37be744
MD5 bc641639270e50482487525ee749b2c6
BLAKE2b-256 e2962b282942063c083c3ea34661141529910968ac08431c91e9bb25ef8e2a96

See more details on using hashes here.

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