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.10+
Web framework FastAPI
Server Uvicorn
Core client mirrorneuron-python-sdk
Packaging setuptools with setuptools-scm

Prerequisites

  • Python 3.10 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.1.tar.gz (18.8 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.1-py3-none-any.whl (11.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mirrorneuron_api-1.1.1.tar.gz
  • Upload date:
  • Size: 18.8 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.1.tar.gz
Algorithm Hash digest
SHA256 3f354c7ff59b40535f6a22c8aa3e53c6f0bf417dc3956fd2a2a21ee01c41b6d4
MD5 37eac28b20fe9ad91a829f3bf3862954
BLAKE2b-256 3a8e96be05f08640e71874ba83302a0320bed55ffbecfa33078e7b6ce983d99b

See more details on using hashes here.

Provenance

The following attestation bundles were made for mirrorneuron_api-1.1.1.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.1-py3-none-any.whl.

File metadata

File hashes

Hashes for mirrorneuron_api-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fb260eb50f27f26386a002f22739735bb5d1d78813b31354af4ba6b0b12d7ab7
MD5 5fa1312984f5154d6485feccdb05731e
BLAKE2b-256 9d96f61b0fb381da510b99c0282df1d3fdd99717ea059b21376a52b061aec32a

See more details on using hashes here.

Provenance

The following attestation bundles were made for mirrorneuron_api-1.1.1-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