Files
oib c8be9d7414 feat: add marketplace metrics, privacy features, and service registry endpoints
- Add Prometheus metrics for marketplace API throughput and error rates with new dashboard panels
- Implement confidential transaction models with encryption support and access control
- Add key management system with registration, rotation, and audit logging
- Create services and registry routers for service discovery and management
- Integrate ZK proof generation for privacy-preserving receipts
- Add metrics instru
2025-12-22 10:33:23 +01:00

7.6 KiB
Raw Blame History

AITBC Monorepo Directory Layout (Windsurf Workspace)

One workspace for all AITBC elements (client · coordinator · miner · blockchain · poolhub · marketplace · wallet · docs · ops). No Docker required.

aitbc/
├─ .editorconfig
├─ .gitignore
├─ README.md                         # Toplevel overview, quickstart, workspace tasks
├─ LICENSE
├─ windsurf/                         # Windsurf prompts, tasks, run configurations
│  ├─ prompts/                       # Highlevel task prompts for WS agents
│  ├─ tasks/                         # Saved task flows / playbooks
│  └─ settings.json                  # Editor/workbench preferences for this repo
├─ scripts/                          # CLI scripts (bash/python); dev + ops helpers
│  ├─ env/                           # venv helpers (create, activate, pin)
│  ├─ dev/                           # codegen, lint, format, typecheck wrappers
│  ├─ ops/                           # backup, rotate logs, journalctl, users
│  └─ ci/                            # sanity checks usable by CI (no runners assumed)
├─ configs/                          # Centralized *.conf used by services
│  ├─ nginx/                         # (optional) reverse proxy snippets (hostlevel)
│  ├─ systemd/                       # unit files for host services (no docker)
│  ├─ security/                      # fail2ban, firewall/ipset lists, tls policy
│  └─ app/                           # applevel INI/YAML/TOML configs shared across apps
├─ docs/                             # Markdown docs (specs, ADRs, guides)
│  ├─ 00-index.md
│  ├─ adr/                           # Architecture Decision Records
│  ├─ specs/                         # Protocol, API, tokenomics, flows
│  ├─ runbooks/                      # Ops runbooks (rotate keys, restore, etc.)
│  └─ diagrams/                      # draw.io/mermaid sources + exported PNG/SVG
├─ packages/                         # Shared libraries (languagespecific)
│  ├─ py/                            # Python packages (FastAPI, utils, protocol)
│  │  ├─ aitbc-core/                 # Protocol models, validation, common types
│  │  ├─ aitbc-crypto/               # Key mgmt, signing, wallet primitives
│  │  ├─ aitbc-p2p/                  # Node discovery, gossip, transport
│  │  ├─ aitbc-scheduler/            # Task slicing/merging, scoring, QoS
│  │  └─ aitbc-sdk/                  # Client SDK for Python integrations
│  └─ js/                            # Browser/Node shared libs
│     ├─ aitbc-sdk/                  # Client SDK (fetch/ws), typings
│     └─ ui-widgets/                 # Reusable UI bits for web apps
├─ apps/                             # Firstclass runnable services & UIs
│  ├─ client-web/                    # Browser UI for users (requests, wallet, status)
│  │  ├─ public/                     # static assets
│  │  ├─ src/
│  │  │  ├─ pages/
│  │  │  ├─ components/
│  │  │  ├─ lib/                     # uses packages/js/aitbc-sdk
│  │  │  └─ styles/
│  │  └─ README.md
│  ├─ coordinator-api/               # Central API orchestrating jobs ↔ miners
│  │  ├─ src/
│  │  │  ├─ main.py                  # FastAPI entrypoint
│  │  │  ├─ routes/
│  │  │  ├─ services/                # matchmaking, accounting, ratelimits
│  │  │  ├─ domain/                  # job models, receipts, accounting entities
│  │  │  └─ storage/                 # adapters (postgres, files, kv)
│  │  ├─ migrations/                 # SQL snippets (no migration framework forced)
│  │  └─ README.md
│  ├─ miner-node/                    # Worker node daemon for GPU/CPU tasks
│  │  ├─ src/
│  │  │  ├─ agent/                   # job runner, sandbox mgmt, health probes
│  │  │  ├─ gpu/                     # CUDA/OpenCL bindings (optional)
│  │  │  ├─ plugins/                 # task kinds (LLM, ASR, vision, etc.)
│  │  │  └─ telemetry/               # metrics, logs, heartbeat
│  │  └─ README.md
│  ├─ wallet-daemon/                 # Local wallet service (keys, signing, RPC)
│  │  ├─ src/
│  │  └─ README.md
│  ├─ blockchain-node/               # Minimal chain (assetbacked by compute)
│  │  ├─ src/
│  │  │  ├─ consensus/
│  │  │  ├─ mempool/
│  │  │  ├─ ledger/                  # state, balances, receipts linkage
│  │  │  └─ rpc/
│  │  └─ README.md
│  ├─ pool-hub/                      # Client↔miners pool + matchmaking gateway
│  │  ├─ src/
│  │  └─ README.md
│  ├─ marketplace-web/               # Web app for offers, bids, stats
│  │  ├─ public/
│  │  ├─ src/
│  │  └─ README.md
│  └─ explorer-web/                  # Chain explorer (blocks, tx, receipts)
│     ├─ public/
│     ├─ src/
│     └─ README.md
├─ protocols/                        # Canonical protocol definitions
│  ├─ api/                            # OpenAPI/JSONSchema for REST/WebSocket
│  ├─ receipts/                       # Job receipt schema, signing rules
│  ├─ payouts/                        # Mint/burn, staking, fees logic (spec)
│  └─ README.md
├─ data/                             # Local dev datasets (small, sample only)
│  ├─ fixtures/                       # seed users, nodes, jobs
│  └─ samples/
├─ tests/                            # Crossproject test harness
│  ├─ e2e/                            # endtoend flows (client→coord→miner→wallet)
│  ├─ load/                           # coordinator & miner stress scripts
│  └─ security/                       # key rotation, signature verif, replay tests
├─ tools/                            # Small CLIs, generators, mermaid->svg, etc.
│  └─ mkdiagram
└─ examples/                         # Minimal runnable examples for integrators
   ├─ quickstart-client-python/
   ├─ quickstart-client-js/
   └─ receipts-sign-verify/

Conventions

  • Languages: FastAPI/Python for backends; plain JS/TS for web; no Docker.
  • No global venvs: each apps/* and packages/py/* can have its own .venv/ (created by scripts/env/*).
  • Systemd over Docker: unit files live under configs/systemd/, with servicespecific overrides documented in docs/runbooks/.
  • Static assets belong to each web app under public/. Shared UI in packages/js/ui-widgets.
  • SQL: keep raw SQL snippets in apps/*/migrations/ (aligned with your “no migration framework” preference). Use psqln alias.
  • Security: central policy under configs/security/ (fail2ban, ipset lists, TLS ciphers). Keys never committed.

Minimal READMEs to create next

Create a short README.md in each apps/* and packages/* with:

  1. Purpose & scope
  2. How to run (dev)
  3. Dependencies
  4. Configs consumed (from /configs/app)
  5. Systemd unit name & port (if applicable)

Suggested first tasks (Way of least resistance)

  1. Bootstrap coordinator-api: scaffold FastAPI main.py, /health, /jobs, /miners routes.
  2. SDKs: implement packages/py/aitbc-sdk & packages/js/aitbc-sdk with basic auth + job submit.
  3. miner-node prototype: heartbeat to coordinator and noGPU "echo" job plugin.
  4. client-web: basic UI to submit a test job and watch status stream.
  5. receipts spec: draft protocols/receipts and a sign/verify example in examples/.