{"id":51541724,"url":"https://github.com/maxwellmelo/prometeu","last_synced_at":"2026-07-09T14:01:30.965Z","repository":{"id":365225640,"uuid":"1270586917","full_name":"maxwellmelo/prometeu","owner":"maxwellmelo","description":"Distributed LLM inference on 2011-era home hardware using llama.cpp RPC","archived":false,"fork":false,"pushed_at":"2026-06-16T13:05:53.000Z","size":98,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-16T13:12:56.194Z","etag":null,"topics":["cloudflare-tunnel","distributed-inference","fastapi","llama-cpp","llm","proxmox","qwen","self-hosted"],"latest_commit_sha":null,"homepage":"https://prometeu.mx3dev.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maxwellmelo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-15T21:29:32.000Z","updated_at":"2026-06-16T11:32:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/maxwellmelo/prometeu","commit_stats":null,"previous_names":["maxwellmelo/prometeu"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/maxwellmelo/prometeu","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxwellmelo%2Fprometeu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxwellmelo%2Fprometeu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxwellmelo%2Fprometeu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxwellmelo%2Fprometeu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxwellmelo","download_url":"https://codeload.github.com/maxwellmelo/prometeu/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxwellmelo%2Fprometeu/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35301501,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-09T02:00:07.329Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloudflare-tunnel","distributed-inference","fastapi","llama-cpp","llm","proxmox","qwen","self-hosted"],"created_at":"2026-07-09T14:01:29.896Z","updated_at":"2026-07-09T14:01:30.955Z","avatar_url":"https://github.com/maxwellmelo.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Prometeu\n\n\u003e Community infrastructure for distributed inference of open source LLMs.\n\n[![License: Apache 2.0](https://img.shields.io/badge/license-Apache_2.0-blue?style=flat-square)](LICENSE)\n[![Powered by Prometeu](https://img.shields.io/badge/powered_by-Prometeu-7c3aed?style=flat-square)](https://github.com/maxwellmelo/prometeu)\n\n**Prometeu** turns ordinary machines into a collaborative inference network for open source language models. Many people have unused CPU, RAM, small GPUs, laptops, home servers, VPS instances, lab machines, or workstations. Alone, those resources may look small. Together, they become real capacity for serving open LLMs through a transparent, auditable, community-owned stack.\n\nPrometeu exists to give power back to communities that believe in open source LLMs, democratic access, and infrastructure that can be inspected, self-hosted, improved, and shared. People who cannot or do not want to pay high monthly fees need a collective alternative: a network where users can also contribute, idle capacity becomes access, and every operational component is open.\n\n---\n\n## Table of contents\n\n- [Mission](#mission)\n- [What Prometeu does](#what-prometeu-does)\n- [How it works](#how-it-works)\n- [Architecture](#architecture)\n- [Core capabilities](#core-capabilities)\n- [Usage flows](#usage-flows)\n- [Inference API](#inference-api)\n- [Participant nodes](#participant-nodes)\n- [Model pools](#model-pools)\n- [Reciprocity and authentication](#reciprocity-and-authentication)\n- [Security](#security)\n- [Observability](#observability)\n- [Installation](#installation)\n- [Testing and development](#testing-and-development)\n- [Roadmap](#roadmap)\n- [Contributing](#contributing)\n- [Attribution and license](#attribution-and-license)\n\n---\n\n## Mission\n\nOpen source LLMs only fulfill their promise when communities also control the infrastructure needed to run them.\n\nAn open model without accessible inference capacity still leaves many people outside. Prometeu addresses that gap by building a community layer for:\n\n- **sharing inference capacity** across participants;\n- **serving open source models** through a simple API;\n- **routing requests to volunteer nodes** with available resources;\n- **measuring real contribution** with signed receipts;\n- **giving contributors higher usage headroom**;\n- **protecting users from poisoned weights** with a hash-pinned allowlist;\n- **supporting full self-hosting** without black boxes;\n- **laying groundwork for a public open AI network** maintained by people, projects, independent labs, and local communities.\n\nPrometeu does not try to win by raw throughput alone. It aims to win by sovereignty, shared cost, transparency, and collective capacity.\n\nPrometeu should not be constrained to tiny models. Small models are only the bootstrap path. As community capacity grows, the network must make medium, large, and very large open models visible, measurable, and eventually runnable through dynamic pools.\n\n---\n\n## What Prometeu does\n\nPrometeu is a full stack for distributed LLM inference:\n\n| Capability | Description |\n|---|---|\n| `/v1` gateway | HTTP entrypoint for apps, CLIs, bots, and UIs using a common chat/completions format. |\n| P2P mesh | Nodes connect through a mesh with Ed25519 identity and encrypted Iroh transport. |\n| Node registry | Participants announce capacity, active models, limits, and health state. |\n| Pool orchestration | Coordinator receives a model request, sizes it, selects peers, warms the pool, and tracks state. |\n| Peer-direct routing | Gateway can route inference to the volunteer node serving the requested model. |\n| GGUF sizer | Reads GGUF metadata and estimates RAM / peer count requirements. |\n| Inference sandbox | Dedicated runner user with systemd/cgroup resource limits. |\n| Curated allowlist | Only approved models with known hashes can be loaded by participant nodes. |\n| Reciprocity | Nodes that serve tokens receive more usage headroom. |\n| Ed25519 auth | Challenge/response proves key ownership without trusting claimed identity. |\n| Signed receipts | Sessions produce signed CBOR receipts with counters. |\n| Metrics | `/metrics` exposes Prometheus data. |\n| Watchdog | Periodically checks pools and alerts only on real incidents. |\n| Self-hosting | Scripts support running coordinator, workers, gateway, and node daemon. |\n\n---\n\n## How it works\n\nPrometeu separates three roles.\n\n### 1. Inference user\n\nA user sends a request to `/v1/chat/completions` with a target model. The gateway applies limits, meters usage, and routes the request to a pool or node able to answer.\n\n```mermaid\nsequenceDiagram\n    participant U as User/App\n    participant G as Gateway\n    participant P as Pool/Node\n    participant M as Model\n\n    U-\u003e\u003eG: POST /v1/chat/completions\n    G-\u003e\u003eG: rate limit + metering\n    G-\u003e\u003eP: route to active peer/pool\n    P-\u003e\u003eM: inference\n    M--\u003e\u003eP: tokens\n    P--\u003e\u003eG: stream/response\n    G--\u003e\u003eU: tokens\n```\n\n### 2. Node contributor\n\nA contributor installs the local daemon. The node detects hardware, sets local limits, announces capacity, and can serve allowlisted models.\n\n```mermaid\nsequenceDiagram\n    participant N as Participant node\n    participant C as Coordinator\n    participant A as Allowlist\n    participant R as Sandbox runner\n\n    N-\u003e\u003eC: heartbeat with capacity\n    C-\u003e\u003eN: request model load\n    N-\u003e\u003eA: verify model_id + sha256\n    N-\u003e\u003eR: start runner with limits\n    R--\u003e\u003eN: model ready\n    N--\u003e\u003eC: READY + session receipts\n```\n\n### 3. Coordinator operator\n\nAn operator runs the gateway/coordinator, catalog, registry, Redis, metrics, and policy layer. This can power a public community network, local collective, school lab, research cluster, project-specific network, or self-hosted deployment.\n\n---\n\n## Architecture\n\n```text\n                    ┌─────────────────────────────┐\n                    │ Apps / UIs / CLIs / Bots     │\n                    └──────────────┬──────────────┘\n                                   │ HTTP /v1\n                                   ▼\n┌────────────────────────────────────────────────────────────┐\n│ Gateway / Coordinator                                      │\n│ - inference routing                                        │\n│ - rate limiting and metering                               │\n│ - pool orchestration                                       │\n│ - GGUF sizing                                              │\n│ - hash-pinned allowlist                                    │\n│ - Ed25519 auth                                             │\n│ - reciprocity ledger                                       │\n│ - registry and metrics                                     │\n└──────────────┬─────────────────────┬───────────────────────┘\n               │                     │\n               │ Registry/Redis      │ P2P mesh / peer-direct\n               ▼                     ▼\n      ┌────────────────┐     ┌──────────────────────────┐\n      │ Node state     │     │ Participant nodes         │\n      │ Pools          │     │ - local daemon            │\n      │ Receipts       │     │ - dashboard :8787         │\n      │ Ledger         │     │ - sandbox runner          │\n      └────────────────┘     │ - llama.cpp server/RPC     │\n                             │ - signed receipts         │\n                             └──────────────────────────┘\n```\n\nMain components:\n\n| Component | Role |\n|---|---|\n| `gateway/` | FastAPI coordinator: `/v1`, pools, registry, allowlist, auth, metrics, reciprocity. |\n| `mesh/` | Rust binary with Iroh P2P, Ed25519 identity, TCP bridge, and signed receipts. |\n| `node/` | Participant daemon, local dashboard, installer, sandbox runner. |\n| `node-agent/` | Lightweight telemetry/capacity agent. |\n| `scripts/` | Build, installation, workers, watchdog, and distribution proof tooling. |\n| `tests/` | pytest suite covering router, sizer, pools, reciprocity, and allowlist. |\n| `web/` | Minimal web chat interface, no build step. |\n| `assets/` | Branding and badge assets. |\n| `docs/` | Technical notes and design decisions. |\n\n---\n\n## Core capabilities\n\n### Inference gateway\n\n- `/v1/chat/completions` endpoint;\n- streaming support;\n- proxy to inference servers that support common chat/completions semantics;\n- token metering for streaming and non-streaming responses;\n- limits by IP and authenticated identity;\n- automatic attribution header.\n\n### P2P mesh\n\n- Iroh transport;\n- persistent Ed25519 identity;\n- `NodeId` derived from the public key;\n- CBOR handshake;\n- bidirectional TCP bridge;\n- registry-based discovery;\n- no router port-forwarding required in common NAT scenarios.\n\n### Pool orchestration\n\n- model request by `model_id`;\n- automatic resource sizing;\n- peer selection based on RAM/capacity;\n- remote instruction to load a model;\n- states: `REQUESTED`, `WARMING`, `READY`, `DEGRADED`, `FAILED`, `STOPPED`;\n- periodic watchdog for incidents.\n\n### Node daemon\n\n- local dashboard at `http://localhost:8787`;\n- hardware fingerprint: CPU, RAM, disk, GPU/VRAM when available;\n- model selection from catalog;\n- local resource limits;\n- heartbeat into registry;\n- sandbox runner with dedicated user;\n- cgroup/systemd limits;\n- preflight blockers before serving.\n\n### Model quality and quantization policy\n\nPrometeu prioritizes **Q8** quantization for runnable models because quality matters. Lower quantization can help during bootstrap, but it should not define the long-term network.\n\nPolicy:\n\n- prefer `Q8_0` when the model publishes it;\n- use lower quantization only when Q8 is unavailable or explicitly approved for constrained pools;\n- show large models in the catalog even before the current network can run them;\n- expose capacity gaps so the community knows what is needed to unlock larger models.\n\nModel tiers:\n\n| Tier | Typical size | Role |\n|---|---:|---|\n| Tiny | 0.5B–3B | bootstrap, fast tests, low-resource nodes |\n| Small | 4B–8B | early community pools |\n| Medium | 12B–34B | growing network target |\n| Large | 70B+ | high-capacity community pools |\n| MoE | 8x7B+ | scheduler/research target |\n| Embed | varied | RAG/search infrastructure |\n| Vision | varied | multimodal roadmap |\n| Code | varied | developer tooling |\n\n### Curated catalog security\n\n- allowlist with `model_id`, source, and expected `sha256`;\n- off-list models rejected;\n- hash mismatches rejected;\n- no fallback to unverified downloads;\n- primary defense against poisoned weights.\n\n### Reciprocity\n\n- contribution measured by tokens served;\n- consumption measured by tokens used;\n- signed receipts feed the ledger;\n- contributors receive higher headroom;\n- anonymous users keep a baseline floor;\n- designed as a soft quota, not a paywall.\n\n---\n\n## Usage flows\n\n### I want to use an open source LLM\n\n1. Choose a model available in the catalog.\n2. Send a request to `/v1/chat/completions`.\n3. Receive a JSON response or token stream.\n4. For more headroom, run a participant node and authenticate your key.\n\n### I want to contribute capacity\n\n1. Install `prometeu-node`.\n2. Set CPU/RAM/bandwidth limits.\n3. Choose allowlisted models.\n4. Node announces capacity.\n5. Coordinator sends workload when demand exists.\n6. Node generates signed receipts.\n7. Your reciprocity standing grows.\n\n### I want to run my own network\n\n1. Run gateway/coordinator.\n2. Configure Redis/registry.\n3. Publish a curated allowlist.\n4. Install participant nodes.\n5. Point apps to your coordinator `/v1` endpoint.\n6. Monitor `/metrics`.\n\n---\n\n## Inference API\n\nPrometeu uses a common HTTP chat/completions format under `/v1`.\n\nExample with `curl`:\n\n```bash\ncurl -X POST http://localhost:3000/v1/chat/completions \\\n  -H 'content-type: application/json' \\\n  -d '{\n    \"model\": \"qwen\",\n    \"messages\": [\n      {\"role\": \"user\", \"content\": \"Explain distributed inference in one sentence.\"}\n    ],\n    \"stream\": false\n  }'\n```\n\nStreaming example:\n\n```bash\ncurl -N -X POST http://localhost:3000/v1/chat/completions \\\n  -H 'content-type: application/json' \\\n  -d '{\n    \"model\": \"qwen\",\n    \"messages\": [\n      {\"role\": \"user\", \"content\": \"Write a short manifesto for open AI.\"}\n    ],\n    \"stream\": true\n  }'\n```\n\nUseful endpoints:\n\n| Endpoint | Purpose |\n|---|---|\n| `POST /v1/chat/completions` | Chat/completions inference. |\n| `GET /api/catalog/llms?sort=updated` | Discover latest GGUF models from the public catalog. |\n| `GET /api/catalog/llms?sort=downloads` | Discover popular GGUF models from the public catalog. |\n| `GET /api/catalog/allowlist` | List verified/runnable model candidates and expected hashes. |\n| `POST /api/pools/request` | Request model pool creation/warmup. |\n| `GET /api/pools` | List pools and states. |\n| `GET /api/registry/nodes` | List registered nodes. |\n| `GET /api/mesh/peers` | List announced P2P peers. |\n| `POST /api/auth/challenge` | Create nonce for an Ed25519 public key. |\n| `POST /api/auth/verify` | Verify signature and issue short-lived token. |\n| `GET /api/reciprocity/standing` | Check reciprocity standing. |\n| `GET /metrics` | Prometheus metrics. |\n\nUse `http://localhost:3000` locally or replace it with your own coordinator URL.\n\n---\n\n## Participant nodes\n\nA participant node is a machine that donates controlled capacity to the network.\n\nInstall from the repository:\n\n```bash\ngit clone https://github.com/maxwellmelo/prometeu.git\ncd prometeu\nsudo bash node/install.sh http://YOUR_COORDINATOR:3000\n```\n\nAfter installation:\n\n- local dashboard: `http://localhost:8787`;\n- hardware detected automatically;\n- runner created with dedicated user;\n- limits applied with systemd/cgroups;\n- heartbeat sent to coordinator;\n- models load only after allowlist verification;\n- signed receipts record served work.\n\nTypical node config:\n\n```json\n{\n  \"coordinator_url\": \"http://YOUR_COORDINATOR:3000\",\n  \"cpu_quota\": \"200%\",\n  \"memory_max\": \"6G\",\n  \"bandwidth_mbps\": 20,\n  \"allow_public_inference\": true\n}\n```\n\n`bandwidth_mbps` is currently declared but not yet shaped; real bandwidth enforcement is on the roadmap.\n\n---\n\n## Model pools\n\nA pool is a group of peers prepared to serve a model.\n\nFlow:\n\n1. Client requests a model.\n2. Coordinator checks the allowlist.\n3. Sizer estimates required resources.\n4. Registry finds eligible peers.\n5. Coordinator instructs peers to load the model.\n6. Peers download and verify the GGUF.\n7. Pool warms until quorum.\n8. Gateway routes inference.\n\nExample:\n\n```bash\ncurl -X POST http://localhost:3000/api/pools/request \\\n  -H 'content-type: application/json' \\\n  -d '{\n    \"model_id\": \"org/model/file.gguf\",\n    \"source\": \"hf\",\n    \"context\": 4096\n  }'\n```\n\nCheck state:\n\n```bash\ncurl http://localhost:3000/api/pools\n```\n\nStates:\n\n| State | Meaning |\n|---|---|\n| `REQUESTED` | Request received. |\n| `WARMING` | Peers are loading/verifying the model. |\n| `READY` | Pool ready to serve. |\n| `DEGRADED` | Pool works but lost capacity or partial quorum. |\n| `FAILED` | Pool failed. |\n| `STOPPED` | Pool intentionally stopped. |\n\n---\n\n## Reciprocity and authentication\n\nPrometeu uses reciprocity because community infrastructure must balance usage and contribution.\n\n### Ledger\n\n- **Contribution**: tokens served by your node, proven by signed receipts.\n- **Consumption**: tokens used through `/v1`.\n- **Standing**: relationship between contribution and consumption.\n- **Quota**: soft limit derived from standing.\n\nAnonymous users receive a baseline floor. Contributors receive more headroom. Above the limit, the gateway may return `429` with `Retry-After`.\n\n### Ed25519 auth\n\nIdentity is not a password. Identity is a public key.\n\nFlow:\n\n```bash\n# 1. request challenge\ncurl -X POST http://localhost:3000/api/auth/challenge \\\n  -H 'content-type: application/json' \\\n  -d '{\"public_key\":\"\u003cbase64-ed25519-pub\u003e\"}'\n\n# 2. sign nonce with secret key and verify\ncurl -X POST http://localhost:3000/api/auth/verify \\\n  -H 'content-type: application/json' \\\n  -d '{\n    \"public_key\":\"\u003cbase64-ed25519-pub\u003e\",\n    \"nonce\":\"\u003cnonce\u003e\",\n    \"signature\":\"\u003cbase64-signature\u003e\"\n  }'\n\n# 3. check standing with bearer token\ncurl http://localhost:3000/api/reciprocity/standing \\\n  -H 'authorization: Bearer TOKEN'\n```\n\nProperties:\n\n- single-use nonce;\n- short-lived token;\n- invalid signature rejected;\n- replay rejected;\n- no trust-on-first-use.\n\n---\n\n## Security\n\nPrometeu assumes a community environment, so trust is treated as scarce.\n\nCurrent controls:\n\n- **Hash-pinned allowlist**: every model must exist in the curated catalog and match its expected sha256.\n- **Sandbox runner**: inference runs as a dedicated user with CPU/RAM limits.\n- **Preflight blockers**: node refuses to serve if required safety prerequisites are missing.\n- **Ed25519 identities**: peers and users can prove key ownership.\n- **Signed receipts**: sessions generate signed proof of service.\n- **Rate limiting**: `/v1` has basic abuse protection.\n- **Metrics**: operational state is exposed for auditability.\n- **NOTICE/header**: downstream use preserves attribution.\n\nCurrent non-goals:\n\n- running models outside the curated catalog;\n- trusting a hash supplied by the client;\n- accepting a model when the hash differs;\n- counting uptime as contribution without real served work;\n- hiding pool failures.\n\nPlanned:\n\n- mTLS between coordinator and peers;\n- real bandwidth shaping;\n- stronger reputation commitments;\n- public transparency dashboard.\n\n---\n\n## Observability\n\nPrometeu exposes `/metrics` for Prometheus.\n\nMetrics include:\n\n- pools by state;\n- reciprocity consumption;\n- recorded contribution;\n- normalized route labels to avoid unbounded cardinality;\n- node state through the registry;\n- watchdog behavior that stays silent when healthy and alerts on incidents.\n\nExample:\n\n```bash\ncurl http://localhost:3000/metrics\n```\n\nWatchdog behavior:\n\n- runs periodically;\n- alerts on `FAILED`;\n- alerts on `DEGRADED`;\n- alerts on under-quorum non-terminal pools;\n- does not alert on intentional `STOPPED` pools.\n\n---\n\n## Installation\n\n### General requirements\n\n- Debian/Ubuntu Linux recommended;\n- Python 3.11+;\n- Redis;\n- systemd for sandbox/cgroups;\n- build tools for llama.cpp;\n- Rust toolchain if building `mesh/`;\n- disk space for GGUF models.\n\n### Run local coordinator\n\n```bash\ngit clone https://github.com/maxwellmelo/prometeu.git\ncd prometeu\npython3 -m venv .venv\n. .venv/bin/activate\npip install -r gateway/requirements.txt\nuvicorn gateway.app:app --host 0.0.0.0 --port 3000\n```\n\nIf local module names differ, check `gateway/` and installation scripts in `scripts/`.\n\n### Build inference backend\n\n```bash\nsudo bash scripts/build-llama-cpp.sh\n```\n\n### Install classic worker\n\n```bash\nsudo bash scripts/install-worker.sh\n```\n\n### Install full stack by script\n\n```bash\nsudo bash scripts/install.sh\n```\n\n### Install participant node\n\n```bash\nsudo bash node/install.sh http://YOUR_COORDINATOR:3000\n```\n\n### Prove distribution\n\n```bash\nbash scripts/prove-distribution.sh http://YOUR_COORDINATOR:3000\n```\n\nExpected output shows CPU/network/TCP activity on nodes during generation.\n\n---\n\n## Testing and development\n\nRun suite:\n\n```bash\ncd prometeu\npython3 -m venv .venv\n. .venv/bin/activate\npip install -r gateway/requirements.txt pytest\npytest tests/ -q\n```\n\nSuite covers:\n\n- routing;\n- GGUF sizer;\n- pools;\n- allowlist;\n- reciprocity;\n- Ed25519 authentication;\n- critical metrics.\n\nBefore opening a PR:\n\n```bash\npytest tests/ -q\n```\n\nIf you change HTTP contracts, add tests. If you touch security behavior, add rejection tests, not only happy-path tests.\n\n---\n\n## Roadmap\n\n### Done\n\n- `/v1` gateway with streaming and metering.\n- Per-IP rate limiting.\n- TTL-based node registry.\n- Capacity telemetry.\n- Iroh P2P mesh.\n- Ed25519 identity.\n- TCP bridge over mesh.\n- Signed CBOR receipts.\n- Pool orchestration.\n- Pool state machine.\n- GGUF sizer.\n- Node daemon with local dashboard.\n- CPU/RAM/disk/GPU detection.\n- Sandbox runner with cgroups.\n- Model catalog.\n- Hash-pinned allowlist.\n- Peer-direct routing.\n- Signed-challenge auth.\n- Reciprocity ledger.\n- Prometheus `/metrics`.\n- Pool watchdog.\n- Automated test suite.\n\n### In progress / planned\n\n- Real bandwidth shaping per node.\n- Public transparency dashboard.\n- mTLS between coordinator and peers.\n- Reputation with slashable commitments.\n- Better node onboarding UX.\n- Dashboard sections for latest discovered models, popular models, verified runnable models, and capacity targets.\n- Larger curated catalog with Q8-first policy and explicit lower-quantization fallback only when Q8 is unavailable.\n- Capacity planner showing which medium/large models become runnable as more peers join.\n- Peer health scoring.\n- Automatic recovery for degraded pools.\n\n### Research\n\n- Partial layer downloads.\n- True layer-level weight sharding.\n- Heterogeneous CPU/GPU workers.\n- Large and very large models through dynamic community pools.\n- Latency/region-aware scheduling.\n- Stronger remote execution verification.\n\n---\n\n## Contributing\n\nPrometeu needs help across many areas:\n\n| Area | Examples |\n|---|---|\n| Security | threat model, hardening, mTLS, sandboxing, supply chain. |\n| Distributed systems | scheduler, pool recovery, peer scoring, gossip/discovery. |\n| Inference | llama.cpp, GGUF sizing, streaming, batching, quantization. |\n| Frontend | node dashboard, public panel, onboarding UX. |\n| DevOps | systemd, CI, releases, packages, observability. |\n| Documentation | tutorials, guides, diagrams, integration examples. |\n| Community | model curation, tests on diverse hardware, translations. |\n\nHow to contribute:\n\n1. Open an issue with clear context.\n2. Run tests before submitting a PR.\n3. Keep changes small when possible.\n4. Document new endpoints or behavior.\n5. Do not add a model to the allowlist without a source and verifiable hash.\n6. Do not commit tokens, keys, credentials, or sensitive URLs.\n\n---\n\n## Attribution and license\n\nPrometeu uses [Apache License 2.0](LICENSE) with an attribution clause in [NOTICE](NOTICE).\n\nIf you use, modify, redistribute, embed, publish an interface, operate a derived API, or build on top of Prometeu, you must preserve attribution.\n\nMain requirements:\n\n1. User-facing interfaces must show **Powered by Prometeu** with a visible link to this repository.\n2. Derived APIs must preserve this header:\n\n```text\nX-Powered-By: Prometeu (https://github.com/maxwellmelo/prometeu)\n```\n\n3. Redistributions must include [NOTICE](NOTICE).\n4. Publications, model cards, and materials using Prometeu must cite the project.\n\nBadge:\n\n```markdown\n[![Powered by Prometeu](https://img.shields.io/badge/powered_by-Prometeu-7c3aed?style=flat-square)](https://github.com/maxwellmelo/prometeu)\n```\n\n---\n\nPrometeu exists so open source LLM communities can share capacity instead of waiting for access to be granted from above.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxwellmelo%2Fprometeu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxwellmelo%2Fprometeu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxwellmelo%2Fprometeu/lists"}