Catalog PyPI
Back to packageRELEASE DETAILS

0.1.4

PyPI

aiforge99

AIForge — a terminal-based autonomous AI agent with TUI and CLI

agentaiautomationclicoding-agentllmtui
Published2 May 2026
Direct dependencies14
Transitive dependenciesNot calculated

README

Version 0.1.4 documentation

AIForge

AIForge is a terminal-based autonomous AI agent with an interactive TUI and full CLI — designed for developers who want an AI coding assistant that runs locally, talks to any LLM, and operates directly on their file system.

aiforge tui       # launch full TUI (chat + file browser + status)
aiforge run "create a Flask REST API"   # one-shot task
aiforge           # interactive REPL

Features

  • Interactive TUI — 3-panel layout: file browser, chat, live status. Press Ctrl+F to toggle the file panel, Escape to cancel a running task.
  • CLI REPL — persistent prompt-toolkit shell with session history, built-in commands (:help, :tools, :sessions, :workspace, …)
  • Autonomous agent — plan → execute → observe loop with stop policy, retry logic, and proper JSON memory
  • 15 built-in tools — file read/write/edit/create/delete/search, shell.run, git commit/diff/rollback, project.workspace/analyze, network.fetch/scrape/search
  • Multi-provider — ZAPI, OpenAI, OpenRouter, Ollama (local), with automatic retry on 5xx errors
  • Session history — every task logged; inspect with aiforge sessions show <id>
  • Portable workspace — resolves via AIFORGE_WORKSPACE env → config → cwd; no hardcoded paths

Installation

pip install aiforge

Requires Python 3.11+.


Quick Start

1. Configure a provider

aiforge setup          # interactive wizard
# or directly:
aiforge keys set zapi YOUR_API_KEY
aiforge models use zapi qwen-3-235b-a22b-instruct-2507

Supported providers: ZAPI, OpenAI, OpenRouter, Ollama (no key needed).

2. Launch

# Full TUI (recommended)
aiforge tui

# One-shot task
aiforge run "write a Python web scraper for example.com"

# Interactive REPL
aiforge

3. Set your workspace

aiforge workspace set /path/to/your/project
# or
export AIFORGE_WORKSPACE=/path/to/your/project

TUI Keybindings

KeyAction
Ctrl+QQuit
Ctrl+FToggle file panel
Ctrl+LClear chat
Ctrl+RRefresh file tree
EscapeCancel running task

CLI Commands

aiforge doctor              check environment health
aiforge run <task>          run a one-shot agent task
aiforge tools list          show all available tools
aiforge tool <name> k=v     invoke a tool directly
aiforge sessions            list sessions
aiforge sessions show <id>  inspect a session's task log
aiforge workspace show      print active workspace
aiforge workspace set <p>   persist workspace path
aiforge providers list      show provider status
aiforge providers test      send a test request to verify provider
aiforge models list         list known models per provider
aiforge models use <p> <m>  select active model
aiforge keys set <p> <key>  save provider API key to .env
aiforge config get [key]    read config value
aiforge config set key val  write config value

REPL Commands

In the REPL (plain aiforge) or TUI input, prefix with ::

:help              built-in commands
:tools             list registered tools
:sessions          list sessions
:session <id>      inspect session (prefix match ok)
:workspace         show workspace
:workspace set <p> change workspace
:model             active model
:providers         provider status
:test [name]       test a provider
:clear             clear screen/chat
:quit              exit

Configuration

Config lives at <workspace>/.aiforge/config.json. Use aiforge config set to edit, or directly:

{
  "default_provider": "zapi",
  "providers": {
    "zapi": {
      "enabled": true,
      "model": "qwen-3-235b-a22b-instruct-2507"
    }
  }
}

API keys go in .env:

ZAPI_API_KEY=your_key
OPENAI_API_KEY=your_key
OPENROUTER_API_KEY=your_key

License

MIT

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 14

Native requirements
14 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
click
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
click>=8.1.7runtime
rich
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
rich>=13.7.0runtime
pydantic
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
pydantic>=2.6.1runtime
httpx
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
httpx>=0.26.0runtime
python-dotenv
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
python-dotenv>=1.0.1runtime
pyyaml
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
pyyaml>=6.0.1runtime
prompt-toolkit
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
prompt-toolkit>=3.0.43runtime
textual
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
textual>=0.80.0runtime
openai
Environment
{
  "extras": "",
  "marker": "extra == \"openai\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
openai<2.0.0,>=1.12.0; extra == "openai"runtime
pytest
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
pytest; extra == "dev"runtime
ruff
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
ruff; extra == "dev"runtime
mypy
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
mypy; extra == "dev"runtime
build
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
build; extra == "dev"runtime
twine
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
twine; extra == "dev"runtime

Distribution files

2 collected
aiforge99-0.1.4-py3-none-any.whl

bdist_wheel · 137.63 KB · Python py3

Source file
aiforge99-0.1.4.tar.gz

sdist · 97.09 KB · Python source

Source file

Repository

PENDING
goodxvampire/aiforge

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 21 Oct, 10:43 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:ded1c5dcd9470fc10f5646885dede755b500f43f960d26735e43196304ac1a50

Other collected versions

View all collected versions →