Metadata-Version: 2.4
Name: manta_node
Version: 0.6b5.dev793
Summary: Node side software of the Manta platform. It is responsible for the communication with the Manta Core and the execution of the tasks.
Author-email: Hugo Miralles <hugo.miralles@manta-tech.io>, Matthew Thompson <matthew.thompson@manta-tech.io>
License-Expression: AGPL-3.0-or-later
Project-URL: Homepage, https://github.com/mantatech/manta-node-python
Project-URL: Repository, https://github.com/mantatech/manta-node-python
Classifier: Programming Language :: JavaScript
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Embedded Systems
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: grpcio-tools
Requires-Dist: betterproto[compiler]==2.0.0b7
Requires-Dist: pydantic<3.0.0,>=2.12.5
Requires-Dist: docker
Requires-Dist: rich
Requires-Dist: cryptography>=50.0.0
Requires-Dist: blake3
Requires-Dist: aiodocker>=0.26.0
Requires-Dist: pyyaml
Requires-Dist: psutil
Requires-Dist: msgpack
Requires-Dist: aiomqtt<3.0,>=2.5.1
Requires-Dist: manta-common-core==0.6b5.dev769
Requires-Dist: toml
Requires-Dist: tomli; python_version < "3.11"
Requires-Dist: tomli-w
Requires-Dist: keyring
Requires-Dist: wireguard-tools
Requires-Dist: pyroute2
Requires-Dist: icmplib
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-asyncio; extra == "test"
Provides-Extra: docs
Requires-Dist: furo; extra == "docs"
Provides-Extra: code-analytics
Requires-Dist: ruff; extra == "code-analytics"
Requires-Dist: pytest-cov; extra == "code-analytics"
Requires-Dist: coverage-badge; extra == "code-analytics"
Provides-Extra: all
Requires-Dist: manta_node[code-analytics,docs,test]; extra == "all"
Dynamic: license-file

# Manta Node Python

![Version](https://img.shields.io/badge/version-0.6b5-orange)
![Python version](https://img.shields.io/badge/python-3.9%20%7C%203.10%20%7C%203.11%20%7C%203.12%20-blue)
![Coverage Badge](.github/coverage/coverage.svg)
![Ruff](https://img.shields.io/badge/code_style-ruff-2a1833)

## Overview

Distributed edge execution agent for the Manta platform. Manages containerized task execution on compute nodes and provides local services to running tasks.

## Quick Start

```bash
# Install
pip install -e ".[all]"

# Run node
python -m manta_node --manager-host localhost --manager-port 50051 --token <jwt_token>

# Run multiple nodes
python -c "from manta_node import start_nodes; import asyncio; asyncio.run(start_nodes(3, 'localhost', 50051, '<jwt_token>'))"
```

## Dependency pinning

A released `manta-node` wheel pins `manta-common-core` to the exact build the
release was tested with, so installing any `manta-node` version gives the same
`manta-common-core` wherever and whenever it is installed. The source
`pyproject.toml` keeps a range for development and version bumps; only the
published wheel carries the exact pin.

This is stricter than a range: installing `manta-node` beside a package that
requires a different `manta-common-core` (for example `manta-sdk` in one
virtualenv) can fail to resolve. Production nodes run alone in their own
version directory, so this affects only mixed local environments. It fails
loudly at install time, not silently at run time.

## Documentation

📚 **Full documentation is available at [docs.manta-tech.io](https://docs.manta-tech.io/)**

- [Node Operator Guide](https://docs.manta-tech.io/node-guide/index.html)
- [Node Configuration](https://docs.manta-tech.io/node-guide/configuration/index.html)
- [Getting Started](https://docs.manta-tech.io/getting-started/index.html)
- [Platform Overview](https://docs.manta-tech.io/core-concepts/index.html)

For developers working on this component:

- **[Node Architecture](https://github.com/mantatech/manta-deploy/blob/main/docs/components/node/ARCHITECTURE.md)** - Container orchestration, service implementation (lives in `mantatech/manta-deploy`, where [manta-deploy#256](https://github.com/mantatech/manta-deploy/pull/256) placed it; no accepted ADR decides that placement)
- **[CLAUDE.md](./CLAUDE.md)** - Development guidelines

## Architecture

- **Container Management**: Docker-based task execution
- **gRPC Services**: LocalServicer and WorldServicer for task communication
- **MQTT Integration**: Asynchronous command reception
- **Resource Monitoring**: Real-time metrics collection

## Testing

```bash
python -m pytest tests/ --cov=manta_node
```

## Docker Setup

For Linux users encountering permission issues:

```bash
# Follow Docker post-installation steps
# https://docs.docker.com/engine/install/linux-postinstall/
sudo usermod -aG docker $USER
```

## License

GNU Affero General Public License
