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, ITERUN 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.4785 (10 commits)
  • ๐Ÿ‘ค Human dev: ~$455 (4.5h @ $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 ITERUN 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
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
          โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ ITERUN 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 ITERUN prompt by default)
SKIP_ITERUN_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 ITERUN 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> iterun                # 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}/iterun 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.7.tar.gz (50.9 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.7-py3-none-any.whl (54.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: iterun-0.1.7.tar.gz
  • Upload date:
  • Size: 50.9 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.7.tar.gz
Algorithm Hash digest
SHA256 35dde9cbe80c49151de05b51354a3f4f5685db676c8f4c9c3f1564cc49e695b8
MD5 e158ed1f4d32c4bd9683d29337e1e4c3
BLAKE2b-256 9ca1a1bcf65dc368a3513056084f1e64364bd9b8af345577a74c39f0afdf83b6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: iterun-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 54.4 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.7-py3-none-any.whl
Algorithm Hash digest
SHA256 9e7b963fd7ea3b28377f84cf2b78cbfdf546fbbac41f5aef72853a5e412851c9
MD5 2a5095ec98be0ef27a85c5f8951d4827
BLAKE2b-256 531aab42597f7779f1efea4a779a0a363c8c8a71ed992f8e19d8f5aa9ba4ff65

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