Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

anna-app-runtime-local

Local-dev in-memory runtime for Anna Apps. Reuses the production anna_app_rpc_dispatcher through WindowStoreProtocol so harness behaviour is byte-identical to nexus production.

How it shares code with production

This package does not vendor a copy of the dispatcher. Instead it:

  1. Imports dispatch, WindowStoreProtocol, HostRpcError from src.services.anna_app_rpc_dispatcher (matrix-nexus source).
  2. Provides InMemoryWindowStore — a WindowStoreProtocol impl that keeps state in dictionaries and queues SSE events in memory.
  3. Wires the production dispatch(store, …) against in-memory state.

Because the wheel imports src.services.… directly, the bridge process must be launched from a Python environment that has matrix-nexus on PYTHONPATH (typically: cd matrix-nexus && uv run python -m anna_app_runtime_local.bridge).

Public surface

from anna_app_runtime_local import LocalDispatcherSession, mint_dev_token

session = LocalDispatcherSession.create(
    user_id=1,
    app_slug="focus-flow",
    manifest_dict={...},  # parsed manifest.json
    view="main",
    entry_payload={"topic": "ECM"},
)
result = await session.call("storage", "set", {"key": "x", "value": 42})
events = session.drain_events()  # list[dict] for SSE relay

stdio bridge

python -m anna_app_runtime_local.bridge

Speaks JSON-RPC 2.0 over stdin/stdout (one envelope per line). Methods:

  • session.create → { session_id, window_uuid, token, view, view_meta }
  • session.call → forwards to dispatch(); returns { ok, result | error }
  • session.drain_events → flushes queued SSE events
  • session.close → drops the session
  • session.refresh_token → re-mints a dev token for an active session
  • executas.register → registers {tool_id, project_dir, command?} for tools.invoke; first call lazy-spawns uv run --project <dir> <tool_id> and reuses the warm subprocess.

The Node-side harness (anna-app-cli/src/harness/bridge.ts) speaks this protocol over python-shell.

Local HMAC tokens

mint_dev_token / verify_dev_token use a per-user key at ~/.anna-app/dev.key (mode 600, generated on first use). TTL defaults to 30 s — shorter than production's 120 s — to surface SDK refresh bugs early.

These tokens are not interoperable with the production JWT path; production's _is_tool_allowed already rejects tool-dev-… prefixes.

Metadata

Release files for anna-app-runtime-local 0.2.0a26

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for anna-app-runtime-local 0.2.0a26
File Size Uploaded Provenance
anna_app_runtime_local-0.2.0a26.tar.gz 54.1 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for anna-app-runtime-local 0.2.0a26
File Interpreter ABI Platform
anna_app_runtime_local-0.2.0a26-py3-none-any.whl Python 3 none any Details

Total release size: 98.4 kB

Release files / anna_app_runtime_local-0.2.0a26.tar.gz

Download URL anna_app_runtime_local-0.2.0a26.tar.gz
Size 54.1 kB
Tags Source
SHA-256 checksum
How to use checksums
72a7f04ad4a0e7b9017ebe42592e09d6de88cd3fffdb171f416078b75c5cbfc9
BLAKE2b-256 checksum
How to use checksums
4cd2f633f5cddfab3de0793969fe5b9b3c8fbe2e5352e8d474e236b74bd1f90f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / anna_app_runtime_local-0.2.0a26-py3-none-any.whl

Download URL anna_app_runtime_local-0.2.0a26-py3-none-any.whl
Size 44.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ac8d9ede0cdf21cdd568f9249e75bd2eb3c605ee8cda65c8530bb80488585ca1
BLAKE2b-256 checksum
How to use checksums
7abf2e2edb170c76781fa41ddccf65bb483e30d9d7f54f2bf2278d77d91ed711
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Security for anna-app-runtime-local 0.2.0a26

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page