Skip to main content

MirrorNeuron REST API

Project description

MirrorNeuron API

HTTP gateway for the MirrorNeuron runtime.

The API is a FastAPI/Uvicorn service that exposes runtime operations over REST and forwards them to the MirrorNeuron core through the Python SDK gRPC client.

Features

  • Health and runtime summary endpoints.
  • Job submission from JSON manifests or uploaded bundle ZIP files.
  • Job listing, status, event, graph, metrics, and dead-letter endpoints.
  • Job lifecycle controls for cancel, pause, resume, and cleanup.
  • Optional bearer-token protection for production mode.
  • Request-size and CORS configuration through environment variables.

Tech Stack

Area Tooling
Runtime Python 3.11+
Web framework FastAPI
Server Uvicorn
Core client mirrorneuron-python-sdk
Packaging setuptools with setuptools-scm

Prerequisites

  • Python 3.11 or newer.
  • A running MirrorNeuron core reachable over gRPC.
  • Redis and any runtime dependencies required by the core deployment.

Installation

The released-package installer installs this package automatically and exposes mn-api on your PATH.

Standalone install:

pip install mirrorneuron-api

Developer install:

python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[test]"

Configuration

All runtime configuration uses environment variables.

Variable Default Description
MN_ENV dev Runtime mode. Use prod for protected deployments.
MN_API_HOST localhost Bind host for the HTTP server.
MN_API_PORT 4001 Bind port for the HTTP server.
MN_API_TOKEN unset Required when MN_ENV=prod.
MN_CORE_HOST localhost Core host used to build the default gRPC target.
MN_GRPC_TARGET unset Full core gRPC target. Takes precedence over MN_CORE_GRPC_TARGET.
MN_CORE_GRPC_TARGET unset Fallback full core gRPC target.
MN_GRPC_TIMEOUT_SECONDS 10 SDK call timeout. Use 0 or none to disable.
MN_API_REQUEST_SIZE_LIMIT_BYTES 5242880 Maximum request body size.
MN_API_CORS_ALLOW_ORIGINS unset Comma-separated CORS allowlist.
MN_API_LOG_PATH ~/.mn/logs/api.log API log file path.
MN_LOG_LEVEL package default Log level used by shared logging setup.
MN_LOG_MAX_BYTES package default Rotating log size limit.
MN_LOG_BACKUP_COUNT package default Rotating log backup count.

Protected endpoints require:

Authorization: Bearer <MN_API_TOKEN>

Running

mn-api

The service listens on http://localhost:4001 by default.

Example production-style local run:

MN_ENV=prod \
MN_API_TOKEN=replace-me \
MN_GRPC_TARGET=localhost:50051 \
mn-api

API Endpoints

Base path: /api/v1

Method Route Description
GET /health Service health check.
GET /system/summary Runtime hardware and pool summary.
GET /metrics Runtime metrics summary.
POST /jobs Submit a workflow from a JSON manifest.
POST /bundles/upload Upload and submit a bundle ZIP.
GET /jobs List jobs.
DELETE /jobs Clear jobs.
GET /jobs/{job_id} Fetch job status.
GET /jobs/{job_id}/graph Fetch agent graph details.
GET /jobs/{job_id}/events Fetch job events.
GET /jobs/{job_id}/dead-letters Inspect dead-letter events.
POST /jobs/{job_id}/dead-letters/{index}/replay Replay a dead-letter event.
POST /jobs/{job_id}/cancel Cancel a job.
POST /jobs/{job_id}/pause Pause a job.
POST /jobs/{job_id}/resume Resume a job.

Example health check:

curl http://localhost:4001/api/v1/health

Example authenticated request:

curl \
  -H "Authorization: Bearer $MN_API_TOKEN" \
  http://localhost:4001/api/v1/system/summary

Testing

python3 -m pytest -q

Deployment

The recommended path is the released-package installer in mn-deploy, which installs the API from PyPI alongside the CLI, SDK, Web UI, and core OTP release.

For custom deployments:

  1. Install mirrorneuron-api.
  2. Start the MirrorNeuron core.
  3. Set MN_GRPC_TARGET.
  4. Set MN_ENV=prod and MN_API_TOKEN when exposing the API outside a trusted local environment.
  5. Run mn-api behind your process manager or service supervisor.

Troubleshooting

Symptom Check
MN_API_TOKEN error on startup MN_ENV=prod requires MN_API_TOKEN.
API starts but runtime calls fail Confirm the core is running and MN_GRPC_TARGET points to it.
Browser requests are blocked Set MN_API_CORS_ALLOW_ORIGINS for the Web UI origin.
Bundle uploads fail Check MN_API_REQUEST_SIZE_LIMIT_BYTES and bundle ZIP contents.

Contributing

Keep API changes aligned with the Python SDK and CLI command surface. Add tests for new routes, request validation, and error handling.

License

MIT.

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

mirrorneuron_api-1.1.2.tar.gz (18.9 kB view details)

Uploaded Source

Built Distribution

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

mirrorneuron_api-1.1.2-py3-none-any.whl (11.0 kB view details)

Uploaded Python 3

File details

Details for the file mirrorneuron_api-1.1.2.tar.gz.

File metadata

  • Download URL: mirrorneuron_api-1.1.2.tar.gz
  • Upload date:
  • Size: 18.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mirrorneuron_api-1.1.2.tar.gz
Algorithm Hash digest
SHA256 99fb921283c34ca5e8b32700fc55a3c36db60a18c15229d1c3cae8480d48dc69
MD5 66f5e4aa5f187447b39c3936d6b929c6
BLAKE2b-256 848dde8c1913d274f49013cb19d19dd38985576444f7d0269b1967f1bdbe0f23

See more details on using hashes here.

Provenance

The following attestation bundles were made for mirrorneuron_api-1.1.2.tar.gz:

Publisher: release.yml on MirrorNeuronLab/mn-api

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mirrorneuron_api-1.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for mirrorneuron_api-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 043ec1afcf9d088ed41f98f8f44b4c234950cdf0ff21d79cb43d4ff69c3b96b5
MD5 556912b1cc136a7427ca5e0ccaef9134
BLAKE2b-256 6b738f12d4c62760bd0514a0ba3781611109caf59e26345c0ff1dc81a167d1d7

See more details on using hashes here.

Provenance

The following attestation bundles were made for mirrorneuron_api-1.1.2-py3-none-any.whl:

Publisher: release.yml on MirrorNeuronLab/mn-api

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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