Skip to main content

Control-Anything — analyze anything, control anything via LLM. SSMCE agent tool generator: one function, multi-channel emission (API/CLI/MCP/REST/UI/OpenCLI) + plugin discovery + parallel serve. Formerly api-anything / invoco.

Project description

Control-Anything

Analyze anything, control anything — strongest unofficial way to hand any software surface to an LLM. Define once, ship as Python API / CLI / MCP server / REST / Web UI / OpenCLI spec — pick which channels to enable per deployment.

Rename history: api-anything 0.1.0-0.3.2invoco 0.1.0-0.3.1control-anything 0.1.0+ (this series, 2026-04-20). Semantic intent: reflect the real product — controlling anything via LLM, not just "call" (invoco) or "REST API" (api-anything). See CHANGELOG.md full rename note.

Python License Status


The idea: SSMCE

Single Source, Multi-Channel Emission. You write the function once; control-anything is the upstream orchestrator that hands it to Typer, FastAPI, FastMCP, Gradio, and OpenCLI spec emitters so every consumer (humans, agents, remote systems, beginners) gets the shape they need.

from control_anything import expose

@expose(channels=["api", "cli", "mcp", "ui"])
def blender_add_cube(x: float = 0, y: float = 0, z: float = 0) -> str:
    """Add a cube to the scene."""
    import bpy  # Blender official Python API (Tier 1 upstream)
    bpy.ops.mesh.primitive_cube_add(location=(x, y, z))
    return f"cube@({x},{y},{z})"

The same function becomes:

Channel Surface Consumer
api from control_anything_blender import add_cube engineers
cli control-anything-blender add-cube 1 2 3 shell / agents / interactive humans
mcp FastMCP server over stdio Claude Code / Cursor / any MCP client
rest POST /blender/add_cube remote agents / web backends
ui localhost:7860 auto-form beginners, visual exploration
opencli OpenCLI spec JSON + AGENT.md ecosystem discovery

0.1.0 (first release under the new name) ships the full SSMCE surface: expose() decorator, registry, ChannelArtifact + build_channel() + emit(), and control-anything serve --channels a,b,c parallel serve — all preserved feature-complete from the previous invoco 0.3.1.


Install

pip install control-anything

No mandatory dependencies. Add channel support as needed:

pip install 'control-anything[cli]'     # Typer
pip install 'control-anything[mcp]'     # FastMCP
pip install 'control-anything[rest]'    # FastAPI + Uvicorn
pip install 'control-anything[ui]'      # Gradio
pip install 'control-anything[all]'     # everything

0.1.0 quick tour

invoco --version
invoco info --json
invoco list       # lists exposed functions in the current interpreter
from invoco import expose, registry

@expose
def greet(name: str) -> str:
    """Say hi."""
    return f"hello {name}"

print(registry()["greet"].channels)  # ['api', 'cli'] — default channels

Positioning

  • Upstream ecosystems we stand on, not compete with: CLI-Anything (HKUDS), OpenCLI spec, Python bindings (bpy, cv2, qgis), vendor SDKs (anthropic, openai, boto3).
  • Our layer: tier detection + routing + multi-channel emit. Invoco decides how a function reaches every audience, not whether the audience exists.
  • Two audiences, one source: power users import / agents call MCP or CLI / beginners open the auto-generated UI. Nobody writes the function twice.

Roadmap

  • 0.1.0expose() decorator + registry + CLI skeleton. ✅ shipped.
  • 0.2 — channel emitters: Typer CLI, FastMCP, FastAPI, Gradio UI.
  • 0.3 — OpenCLI spec emit + AGENT.md generation + tier-detection port from upstream api-anything lineage.
  • 0.4 — CLI-Anything bridge (wrap HKUDS generated CLIs as typed Python APIs).
  • 0.5+ — UIA generator for closed-source Windows apps (Tier 3A exclusive).

History

Invoco 0.1.0 supersedes the api-anything preview line (last published 0.3.1, will be deprecated once the channel emitters ship). Core tier-detection and UIA code from api-anything will be rewired under Invoco's SSMCE model in 0.3+.

License

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

control_anything-0.1.0.tar.gz (45.8 kB view details)

Uploaded Source

Built Distribution

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

control_anything-0.1.0-py3-none-any.whl (33.4 kB view details)

Uploaded Python 3

File details

Details for the file control_anything-0.1.0.tar.gz.

File metadata

  • Download URL: control_anything-0.1.0.tar.gz
  • Upload date:
  • Size: 45.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for control_anything-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e5f1617a42722d08ef35e0e3d3ebd3852cdd64c52740ec26ce8a883ba6136353
MD5 40c2c93e0a2ff5390092ee7db2fdcf14
BLAKE2b-256 585fb24f82bf0e1f47e1090d8057b9a46a5c569933f9fb8fc08f80fdfa894dee

See more details on using hashes here.

File details

Details for the file control_anything-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for control_anything-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cdfb711a4a44db954fee25a7921c0178aab27b5bfaf9816faa1230474d3aae5b
MD5 3453a65e1737eab4a51cdeaf95774fe7
BLAKE2b-256 0b24dbd6d090d293276e7c4b6bb0ae1c48ed2cc49eae1b42c814b02f3f25784a

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