Metadata-Version: 2.4
Name: manta_node
Version: 0.6b0.dev556
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.6b0,>=0.6b0.dev0
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.6b0-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>'))"
```

## 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` per [ADR-0013](https://github.com/mantatech/manta-deploy/blob/main/docs/adr/0013-documentation-organization.md))
- **[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
