Catalog PyPI
Back to packageRELEASE DETAILS

0.1.0

PyPI

ai2apps

Local-first edge supermodel and Fusion inference runtime for Apple Silicon

apple-siliconexpert-cachefusioninferencellmmlxmoe
Published22 Aug 2026
Direct dependencies68
Transitive dependenciesNot calculated

README

Version 0.1.0 documentation

AI2Apps

A local-first AI application and Agent platform for personal AI nodes.

AI2Apps turns local and connected model runtimes into durable Apps, Agents, and versioned Services. It provides a server-owned Agent Harness, application shell, tool and capability gateway, package trust system, multi-user identity, and remote access above one or more model backends.

Apple Silicon and the embedded oMLX runtime are the first implementation. AI2Apps also keeps its platform contracts hardware-neutral so that external providers and future NVIDIA/CUDA or AMD/ROCm nodes can expose the same model and Service capabilities.

AI2Apps is not affiliated with, sponsored by, or endorsed by the oMLX project or its maintainers. The oMLX name identifies the origin of the embedded runtime. See NOTICE for attribution.

中文说明 · Platform architecture · Backend plan · Local Knowledge/RAG · Security baseline · Release gate

Product model

AI2Apps is organized around four product objects and one runtime layer:

User / API client
        ↓
App      interaction, UI, instances, Sessions, files and artifacts
        ↓
Agent    goals, instructions, model policy, tools and durable execution
        ↓
Service  stable, versioned and auditable capabilities
        ↓
Runtime  local oMLX/Fusion, Cloud, external or future federated providers
  • Apps own user interaction and persistent application state. Built-in Apps currently include Chat, Coder, Account, Agents, Models, Trust Center, Terminal, settings, logs, and benchmarks.
  • Agents run through an authoritative server-side Harness. Runs, steps, status, interactions, approvals, events, retries, delegation, pause, resume, cancellation, and final output are durable and restart-aware.
  • Services expose models, tools, workspace operations, processes, browser control, documents, images, research, terminal access, and external capabilities through stable identities instead of fixed physical URLs.
  • AI nodes keep application and Session data local while supporting Cloud models, remote/mobile access, installation membership, and controlled Service federation as the next node-to-node layer.
  • Model runtimes remain replaceable backends. Cache-MoE and Fusion are important local inference optimizations, not the boundary of the platform.

Implemented platform capabilities

The current alpha includes:

  • a SQLite-backed App, AppInstance, Session, Message, AgentRun, Step, Event, Workspace, Artifact, Service, Tool, capability, package, and identity control plane;
  • persistent asynchronous Agent execution with Tool calls, user interactions, capability approval, bounded delegation, recovery, and replayable events;
  • a Service Registry and Tool Gateway for embedded, sandboxed managed-process, and external Services;
  • signed and content-addressed .ai2service, .ai2agent, .ai2app, and local .ai2patch package flows with verification, lifecycle, rollback, and Safe Mode;
  • Session-scoped workspaces, ResourceHandles, artifacts, document parsing and source-located reads, process limits, Secret injection, and audit events;
  • Chat as a per-user singleton App with independently isolated thread Sessions;
  • Coder projects and threads for Codex, OpenCode, and Claude CLIs, including source validation, tests, browser preview, development bundles, TestFlight, and a bounded file editor;
  • local installation identity, multiple member roles, per-user ownership, Cloud device binding, unified billing identity, revocable local sessions, and role-aware App access;
  • a desktop shell, mobile-ready App contracts, managed remote access, and Cloud model bridging;
  • OpenAI-compatible model APIs backed by the existing oMLX runtime.

The project is still under active development. Node-to-node Service federation, complete OS-level sandbox coverage, a first-class local knowledge/retrieval Service, and additional hardware backend providers remain ongoing work. Design documents distinguish implemented behavior from target architecture.

Local inference and Fusion

The embedded oMLX backend retains model loading, attention, fused MoE kernels, continuous batching, paged KV caching, audio/VLM engines, embeddings, reranking, and MCP integration. AI2Apps adds local inference capabilities for large MoE models such as DeepSeek V4 Flesh:

  • configurable flat or hierarchical scope catalogs;
  • shared-expert scope probing and per-scope static expert banks;
  • device-side Top-K routing with exact and explicitly enabled lossy policies;
  • expert-major SSD storage and cache-aware fallback loading;
  • Session-safe KV/prefix-cache namespaces and adaptive L1 expert residency;
  • reproducible memory, quality, prefill, decode, miss, and I/O release gates.

See the Flesh engine, Fusion design, and MoE benchmark record.

Repository layout

ai2apps/                 Platform, App, Agent, Service and product code
  agents/                Durable Agent Runtime and built-in Agents
  api/                   Versioned platform APIs
  apps/                  App definitions, access policy and lifecycle
  packages/              Signed package trust and Service lifecycle
  services/              Service Registry, adapters and Tool Gateway
  storage/               SQLite schema, migrations and repositories
  workspace/ documents/  Session resources, artifacts and document tools
  web/                    Desktop/mobile Shell and built-in App UI
apps/omlx-mac/            Native macOS application shell
omlx/                     Embedded and modified oMLX model runtime
  engine/flesh.py         DeepSeek V4 Flesh request orchestration
  cache/                  KV and routed-expert storage
  patches/deepseek_v4/    Scope routing, expert banks and kernels
configs/                  Scope catalogs and model profiles
scripts/                  Conversion, profiling, packaging and benchmarks
docs/                     Architecture, product contracts and experiment records
tests/                    Platform, security, API and inference tests

The omlx Python namespace and OMLX_* variables remain compatibility interfaces for the embedded runtime. New integrations should use the ai2apps command and AI2APPS_* configuration where available. Runtime data currently remains under ~/.omlx so existing models and settings survive the product migration.

Install

The bundled local model backend currently requires an Apple Silicon Mac, Python 3.11–3.13, and Metal-capable macOS.

brew install uv
uv sync --dev
source .venv/bin/activate

ai2apps --version
ai2apps info

Alternatively, create a Python 3.11–3.13 virtual environment and run:

python -m pip install -e '.[dev]'

Start AI2Apps

ai2apps serve --model-dir ~/models --port 8000

If an API key is configured, send it as a Bearer token. The legacy omlx executable remains a compatibility alias; new documentation and integrations should use ai2apps.

DeepSeek V4 Flesh research overrides

Models prepared through AI2Apps use their verified Scope Pack automatically. Manual research environments can override the expert store and profile:

export AI2APPS_DEEPSEEK_V4_EXPERT_STORE=/path/to/expert-store
export AI2APPS_DEEPSEEK_V4_SCOPE_PROFILE=/path/to/scope-profile.json
export AI2APPS_DEEPSEEK_V4_SCOPE_NAME=general
export AI2APPS_DEEPSEEK_V4_SCOPE_PROBE_DEPTH=16
export AI2APPS_DEEPSEEK_V4_SCOPE_LOSSY_MODE=exact

ai2apps serve --model-dir /path/to/models

Lossy modes are opt-in. Use exact for quality-sensitive serving and evaluate other policies with representative prompts before deployment.

Development and release gates

Before developing an installable Service or model Package, read the Service/Package runtime and Sandbox development guide. For the Model Worker protocol, Adapter API, and checkpoint contract, see the Model Worker Package manual. A local Harness or terminal run does not reproduce installed Sandbox permissions; a real .ai2service installation and activation is required before release.

The active experimental branch is experiment/moe-cache. Preserve existing oMLX model, attention, router, scheduler, and fused-kernel behavior unless an AI2Apps feature requires a small, isolated compatibility patch. Platform code should remain under ai2apps and depend on model runtimes through adapters.

pytest -q
python scripts/bench_scope_once.py --help
python scripts/bench_moe_expert_store.py --help
ai2apps-release-gate --mode preflight --run-tests

Inference comparisons use identical prompts and generated tokens and record source commit, resident/peak memory, cold TPS, and steady TPS. The original static oracle gate requires exact Top-10 parity, zero runtime misses, lower resident memory, and at least 85% of full-resident steady-state TPS.

Platform changes must additionally preserve ownership isolation, capability enforcement, package verification, restart recovery, API compatibility, and bounded resource behavior.

Origin, license, and trademarks

AI2Apps is based on oMLX commit 49ec271 and retains upstream copyright and attribution notices. Modified files and the repository history identify AI2Apps changes.

This project is licensed under the Apache License 2.0. Copyright 2025 oMLX contributors; Copyright 2026 AI2Apps contributors. Apache-2.0 does not grant broad rights to upstream trade names or marks. AI2Apps does not use the oMLX name or logo as its product identity and makes no claim of upstream affiliation, sponsorship, certification, or endorsement.

Downloads & popularity

Awaiting observations

No metric observations yet

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

Declared dependencies 105

Native requirements
68 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
mlx
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
mlx==0.32.0runtime
mlx-lm
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
mlx-lm==0.31.3runtime
regex
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
regexruntime
mlx-embeddings
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
mlx-embeddings==0.1.0runtime
transformers
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
transformers<5.13,>=5.12.1runtime
mistral-common
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
mistral-common>=1.10runtime
tokenizers
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
tokenizers>=0.19.0runtime
huggingface-hub
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
huggingface-hub>=1.19.0runtime
numpy
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
numpy<2.4,>=1.24.0runtime
tqdm
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
tqdm>=4.66.0runtime
pyyaml
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
pyyaml>=6.0runtime
packaging
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
packaging>=24runtime
itsdangerous
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
itsdangerous>=2.0runtime
jinja2
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
jinja2>=3.0runtime
rich
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
rich>=13.0.0runtime
sentencepiece
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
sentencepieceruntime
tiktoken
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
tiktokenruntime
protobuf
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
protobufruntime
requests
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
requests>=2.28.0runtime
httpx
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
httpx<1,>=0.27.0runtime
cryptography
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
cryptography>=42.0.0runtime
socksio
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
socksio>=1.0.0runtime
tabulate
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
tabulate>=0.9.0runtime
psutil
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
psutil>=5.9.0runtime
setproctitle
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
setproctitle>=1.3.3runtime
fastapi
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
fastapi>=0.108.0runtime
uvicorn
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
uvicorn>=0.23.0runtime
websockets
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
websockets<16,>=14.0runtime
python-multipart
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
python-multipart>=0.0.5runtime
jsonschema
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
jsonschema>=4.0.0runtime
openai-harmony
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
openai-harmonyruntime
cohere_melody
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
cohere_melody>=0.9.0runtime
mlx-vlm
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
mlx-vlm==0.6.3runtime
Pillow
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
Pillow>=9.0.0runtime
qrcode
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
qrcode==8.2runtime
markitdown
Environment
{
  "extras": "docx,pdf,pptx",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
markitdown[docx,pdf,pptx]==0.1.6runtime
markdownify
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
markdownify<2,>=1.2.3runtime
openpyxl
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
openpyxl<4,>=3.1.2runtime
reportlab
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
reportlab<5,>=4.2.0runtime
pypdf
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
pypdf<7,>=5.0.0runtime
zeroconf
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
zeroconf<1,>=0.147runtime
regex
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
regex; extra == "control-plane"runtime
huggingface-hub
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
huggingface-hub>=1.19.0; extra == "control-plane"runtime
pyyaml
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
pyyaml>=6.0; extra == "control-plane"runtime
packaging
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
packaging>=24; extra == "control-plane"runtime
itsdangerous
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
itsdangerous>=2.0; extra == "control-plane"runtime
jinja2
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
jinja2>=3.0; extra == "control-plane"runtime
requests
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
requests>=2.28.0; extra == "control-plane"runtime
httpx
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
httpx<1,>=0.27.0; extra == "control-plane"runtime
cryptography
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
cryptography>=42.0.0; extra == "control-plane"runtime
socksio
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
socksio>=1.0.0; extra == "control-plane"runtime
tabulate
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
tabulate>=0.9.0; extra == "control-plane"runtime
psutil
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
psutil>=5.9.0; extra == "control-plane"runtime
setproctitle
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
setproctitle>=1.3.3; extra == "control-plane"runtime
fastapi
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
fastapi>=0.108.0; extra == "control-plane"runtime
uvicorn
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
uvicorn>=0.23.0; extra == "control-plane"runtime
websockets
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
websockets<16,>=14.0; extra == "control-plane"runtime
python-multipart
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
python-multipart>=0.0.5; extra == "control-plane"runtime
jsonschema
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
jsonschema>=4.0.0; extra == "control-plane"runtime
Pillow
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
Pillow>=9.0.0; extra == "control-plane"runtime
qrcode
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
qrcode==8.2; extra == "control-plane"runtime
markitdown
Environment
{
  "extras": "docx,pdf,pptx",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
markitdown[docx,pdf,pptx]==0.1.6; extra == "control-plane"runtime
markdownify
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
markdownify<2,>=1.2.3; extra == "control-plane"runtime
openpyxl
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
openpyxl<4,>=3.1.2; extra == "control-plane"runtime
reportlab
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
reportlab<5,>=4.2.0; extra == "control-plane"runtime
pypdf
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
pypdf<7,>=5.0.0; extra == "control-plane"runtime
zeroconf
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
zeroconf<1,>=0.147; extra == "control-plane"runtime
selenium
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
selenium<5,>=4.35.0; extra == "control-plane"runtime
mcp
Environment
{
  "extras": "",
  "marker": "extra == \"control-plane\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
mcp>=1.5.0; extra == "control-plane"runtime
selenium
Environment
{
  "extras": "",
  "marker": "extra == \"browser\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
selenium<5,>=4.35.0; extra == "browser"runtime
xgrammar
Environment
{
  "extras": "",
  "marker": "extra == \"grammar\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
xgrammar==0.2.3; extra == "grammar"runtime
apache-tvm-ffi
Environment
{
  "extras": "",
  "marker": "extra == \"grammar\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
apache-tvm-ffi==0.1.11; extra == "grammar"runtime
mcp
Environment
{
  "extras": "",
  "marker": "extra == \"mcp\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
mcp>=1.5.0; extra == "mcp"runtime
modelscope
Environment
{
  "extras": "",
  "marker": "extra == \"modelscope\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
modelscope>=1.10.0; extra == "modelscope"runtime
mlx-audio
Environment
{
  "extras": "sts,stt,tts",
  "marker": "extra == \"audio\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
mlx-audio[sts,stt,tts]==0.4.6; extra == "audio"runtime
sherpa-onnx
Environment
{
  "extras": "",
  "marker": "extra == \"audio\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
sherpa-onnx==1.13.4; extra == "audio"runtime
av
Environment
{
  "extras": "",
  "marker": "extra == \"audio\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
av==18.0.0; extra == "audio"runtime
paroquant
Environment
{
  "extras": "",
  "marker": "python_version >= \"3.11\" and extra == \"paroquant\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
paroquant==0.1.16; python_version >= "3.11" and extra == "paroquant"runtime
mcp
Environment
{
  "extras": "",
  "marker": "extra == \"bundle\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
mcp>=1.5.0; extra == "bundle"runtime
modelscope
Environment
{
  "extras": "",
  "marker": "extra == \"bundle\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
modelscope>=1.10.0; extra == "bundle"runtime
selenium
Environment
{
  "extras": "",
  "marker": "extra == \"bundle\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
selenium<5,>=4.35.0; extra == "bundle"runtime
scipy
Environment
{
  "extras": "",
  "marker": "extra == \"bundle\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
scipy>=1.11.0; extra == "bundle"runtime
librosa
Environment
{
  "extras": "",
  "marker": "extra == \"bundle\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
librosa>=0.10.0; extra == "bundle"runtime
miniaudio
Environment
{
  "extras": "",
  "marker": "extra == \"bundle\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
miniaudio>=1.59; extra == "bundle"runtime
numba
Environment
{
  "extras": "",
  "marker": "extra == \"bundle\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
numba>=0.59.0; extra == "bundle"runtime
pyloudnorm
Environment
{
  "extras": "",
  "marker": "extra == \"bundle\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
pyloudnorm>=0.1.0; extra == "bundle"runtime
sounddevice
Environment
{
  "extras": "",
  "marker": "extra == \"bundle\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
sounddevice>=0.4.6; extra == "bundle"runtime
misaki
Environment
{
  "extras": "",
  "marker": "extra == \"bundle\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
misaki>=0.9.4; extra == "bundle"runtime
num2words
Environment
{
  "extras": "",
  "marker": "extra == \"bundle\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
num2words>=0.5.14; extra == "bundle"runtime
spacy
Environment
{
  "extras": "",
  "marker": "extra == \"bundle\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
spacy>=3.8.4; extra == "bundle"runtime
phonemizer-fork
Environment
{
  "extras": "",
  "marker": "extra == \"bundle\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
phonemizer-fork>=3.3.2; extra == "bundle"runtime
espeakng-loader
Environment
{
  "extras": "",
  "marker": "extra == \"bundle\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
espeakng-loader>=0.2.4; extra == "bundle"runtime
webrtcvad
Environment
{
  "extras": "",
  "marker": "extra == \"bundle\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
webrtcvad>=2.0.10; extra == "bundle"runtime
sherpa-onnx
Environment
{
  "extras": "",
  "marker": "extra == \"bundle\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
sherpa-onnx==1.13.4; extra == "bundle"runtime
av
Environment
{
  "extras": "",
  "marker": "extra == \"bundle\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
av==18.0.0; extra == "bundle"runtime
mistral-common
Environment
{
  "extras": "audio",
  "marker": "extra == \"bundle\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
mistral-common[audio]>=1.10; extra == "bundle"runtime
pytest
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
pytest>=7.0.0; extra == "dev"runtime
pytest-asyncio
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
pytest-asyncio>=0.21.0; extra == "dev"runtime
black
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
black>=23.0.0; extra == "dev"runtime
ruff
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
ruff>=0.1.0; extra == "dev"runtime

Showing the first 100 declarations.

Distribution files

4 collected
ai2apps-0.1.0-cp311-cp311-macosx_15_0_universal2.whl

bdist_wheel · 48,466.33 KB · Python cp311

Source file
ai2apps-0.1.0-cp312-cp312-macosx_15_0_universal2.whl

bdist_wheel · 48,460.7 KB · Python cp312

Source file
ai2apps-0.1.0-cp313-cp313-macosx_15_0_universal2.whl

bdist_wheel · 48,460.78 KB · Python cp313

Source file
ai2apps-0.1.0.tar.gz

sdist · 47,063.03 KB · Python source

Source file

Metadata history

Meaningful changes
Current collected state Current

Observed since 21 Oct, 09:45 UTC

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

Record identity

package_version:5c22ee54ef38d3b74b79e5dadbe7c0a95ca4d79ff1434088417aaeadc6c1ac77

Other collected versions

View all collected versions →