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.0a29

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.0a29
File Size Uploaded Provenance
anna_app_runtime_local-0.2.0a29.tar.gz 55.4 kB Without provenance Details

Built distribution (wheel)

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

Total release size: 100.3 kB

Release files / anna_app_runtime_local-0.2.0a29.tar.gz

Download URL anna_app_runtime_local-0.2.0a29.tar.gz
Size 55.4 kB
Tags Source
SHA-256 checksum
How to use checksums
d338fceb0e1391fc817f60a4a8772f060d0af869f0f139c7b4f30c90b3b01c39
BLAKE2b-256 checksum
How to use checksums
d480d02712e7c977ae3fb6d25d5c53dd300bfc9fac7880d02a6aae0b7033f8a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.17

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

Download URL anna_app_runtime_local-0.2.0a29-py3-none-any.whl
Size 44.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
02eae4b4af13c61074f7a08c3f46742568f559953323fa39f06246a497ce48f5
BLAKE2b-256 checksum
How to use checksums
da383e9e9b50a2b5734a568eb4797a6055abca382daa92f6b7599f45d3cea9d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.17

Security for anna-app-runtime-local 0.2.0a29

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