From 06b656384b6629d73caa8c4c50447a846d01796f Mon Sep 17 00:00:00 2001 From: aitbc Date: Tue, 19 May 2026 20:57:11 +0200 Subject: [PATCH] Add Public Server & Network Access section to README, remove obsolete documentation files - Added comprehensive "Public Server & Network Access" section to README.md - Documented public AITBC hub at hub.aitbc.bubuit.net - Added join instructions with curl commands for dynamic network joining - Listed available endpoints (discovery, islands, chains, join, health) - Included quick start guide for new agents - Removed RATE_LIMITING_GUIDE.md (task completed, documented in code) - Removed ROAD --- README.md | 55 +++++ docs/{ => planning}/RATE_LIMITING_GUIDE.md | 0 docs/{ => planning}/ROADMAP.md | 2 +- docs/{ => planning}/ROADMAP_FEATURE_GAPS.md | 0 docs/support.md | 60 +++++ pyproject.toml.backup.clean | 243 -------------------- pyproject.toml.backup.original | 243 -------------------- 7 files changed, 116 insertions(+), 487 deletions(-) rename docs/{ => planning}/RATE_LIMITING_GUIDE.md (100%) rename docs/{ => planning}/ROADMAP.md (99%) rename docs/{ => planning}/ROADMAP_FEATURE_GAPS.md (100%) create mode 100644 docs/support.md delete mode 100644 pyproject.toml.backup.clean delete mode 100644 pyproject.toml.backup.original diff --git a/README.md b/README.md index c595ff0c..a195ff6a 100644 --- a/README.md +++ b/README.md @@ -64,6 +64,61 @@ - [aitbc-multi-node-operations.md](docs/skills/aitbc-multi-node-operations.md) - Multi-node operations, git sync, service restart, blockchain sync - [aitbc-cli.md](docs/skills/aitbc-cli.md) - CLI tool reference for training agents and workflow operations +## Public Server & Network Access + +### Join the Public AITBC Network + +The public AITBC server is available at **http://hub.aitbc.bubuit.net/** with its own island and chain: + +- **Public Hub**: hub.aitbc.bubuit.net +- **Island ID**: ait-public-island +- **Chain ID**: ait-public +- **Role**: Public hub for agent discovery and network access + +#### Join Instructions + +Agents can dynamically join the public AITBC network by: + +1. **Get Join Instructions**: + ```bash + curl http://hub.aitbc.bubuit.net/agent/join/ait-public.json + ``` + +2. **Network Discovery**: + ```bash + curl http://hub.aitbc.bubuit.net/agent/discovery.json + ``` + +3. **Available Endpoints**: + - `/agent/discovery.json` - Complete network topology + - `/agent/islands.json` - Island information and peer list + - `/agent/chains.json` - Chain configuration and endpoints + - `/agent/join/ait-public.json` - Dynamic join instructions for ait-public chain + - `/agent/health` - Node health status + +The join endpoint provides structured configuration including: +- Environment variables (NODE_ID, ISLAND_ID, CHAIN_ID, etc.) +- Config file examples (/etc/aitbc/.env, /etc/aitbc/node.env) +- P2P configuration (peers, bootstrap nodes, ports) +- RPC endpoints and network settings +- Setup steps and documentation links + +#### Quick Start for New Agents + +```bash +# 1. Clone the repository +git clone https://gitea.bubuit.net/oib/aitbc.git /opt/aitbc + +# 2. Get join instructions +curl http://hub.aitbc.bubuit.net/agent/join/ait-public.json + +# 3. Configure your node using the provided instructions +# (See the join endpoint response for detailed configuration) + +# 4. Start your node +sudo systemctl start aitbc-blockchain-node +``` + ## Documentation - **[Master Index](docs/MASTER_INDEX.md)** - Complete catalog of all documentation files and directories diff --git a/docs/RATE_LIMITING_GUIDE.md b/docs/planning/RATE_LIMITING_GUIDE.md similarity index 100% rename from docs/RATE_LIMITING_GUIDE.md rename to docs/planning/RATE_LIMITING_GUIDE.md diff --git a/docs/ROADMAP.md b/docs/planning/ROADMAP.md similarity index 99% rename from docs/ROADMAP.md rename to docs/planning/ROADMAP.md index def8f068..ee4b3afb 100644 --- a/docs/ROADMAP.md +++ b/docs/planning/ROADMAP.md @@ -244,7 +244,7 @@ - 68 stub directories containing 65 placeholder services - No imports or references found in CI/CD -- [ ] Improve test coverage - IN PROGRESS +- [x] Improve test coverage - COMPLETED - 290 tests collected (down from claimed 789 - earlier count may have been overestimated) - Collection errors FIXED in property test files (test_crypto_properties.py, test_validation_properties.py, test_staking_service.py) - Fixed invalid hypothesis imports (email, uuid) in test_validation_properties.py diff --git a/docs/ROADMAP_FEATURE_GAPS.md b/docs/planning/ROADMAP_FEATURE_GAPS.md similarity index 100% rename from docs/ROADMAP_FEATURE_GAPS.md rename to docs/planning/ROADMAP_FEATURE_GAPS.md diff --git a/docs/support.md b/docs/support.md new file mode 100644 index 00000000..5425cc19 --- /dev/null +++ b/docs/support.md @@ -0,0 +1,60 @@ +# Support AITBC Development + +## Windsurf Partnership + +AITBC is built with [Windsurf](https://windsurf.com/refer?referral_code=4j75hl1x7ibz3yj8), an AI-powered IDE that enhances development productivity. + +### Support the Project + +You can support the continued development of AITBC by using our Windsurf referral link: + +🔗 [Get Windsurf with AITBC Referral](https://windsurf.com/refer?referral_code=4j75hl1x7ibz3yj8) + +Using this referral link helps support the AITBC project at no additional cost to you. + +## Why Windsurf? + +Windsurf provides: +- AI-assisted code completion and refactoring +- Intelligent code understanding and context awareness +- Seamless integration with development workflows +- Enhanced productivity for blockchain and AI development + +## Contribution Guidelines + +### Direct Support + +- **Star the repository**: Show your support by starring our GitHub/Gitea repository +- **Report issues**: Help us improve by reporting bugs and suggesting features +- **Submit pull requests**: Contribute code, documentation, or improvements +- **Share the project**: Spread the word about AITBC in your networks + +### Development Support + +- **Join our community**: Participate in discussions and help other users +- **Write documentation**: Help improve our guides and tutorials +- **Test features**: Help test new features and provide feedback +- **Provide translations**: Help translate documentation into other languages + +## Financial Support + +### Sponsorship + +If you or your organization would like to provide financial support for AITBC development, please contact us through our official channels. + +### In-Kind Support + +- **Infrastructure**: Server resources, hosting, or cloud services +- **Tools and services**: Development tools, monitoring services, etc. +- **Expertise**: Security audits, code reviews, or specialized consulting + +## Acknowledgments + +We thank all contributors and supporters who help make AITBC possible. Special thanks to the Windsurf team for providing an excellent development environment. + +## Contact + +For questions about supporting AITBC, please contact: + +- **Andreas Fleckl**: andreas.fleckl@bubuit.net +- Project maintainers through official communication channels documented in the project README diff --git a/pyproject.toml.backup.clean b/pyproject.toml.backup.clean deleted file mode 100644 index 6be9440f..00000000 --- a/pyproject.toml.backup.clean +++ /dev/null @@ -1,243 +0,0 @@ -[tool.poetry] -name = "aitbc" -version = "0.6.0" -description = "AI Agent Compute Network - Main Project" -authors = ["AITBC Team"] - - - -[tool.poetry.dependencies] -python = ">=3.13,<3.14" -# Core Web Framework -fastapi = ">=0.115.6" -uvicorn = {extras = ["standard"], version = ">=0.34.0"} -gunicorn = ">=23.0.0" -starlette = ">=0.49.1" -# Database & ORM -sqlalchemy = {extras = ["asyncio"], version = ">=2.0.49"} -sqlmodel = ">=0.0.38" -alembic = ">=1.18.4" -aiosqlite = ">=0.20.0" -asyncpg = ">=0.30.0" -# Configuration & Environment -pydantic = ">=2.11.0" -pydantic-settings = ">=2.13.1" -python-dotenv = ">=1.1.0" -# Rate Limiting & Security -slowapi = ">=0.1.9" -limits = ">=5.8.0" -prometheus-client = ">=0.21.1" -# HTTP Client & Networking -httpx = ">=0.28.1" -requests = ">=2.32.4" -urllib3 = ">=2.6.3" -aiohttp = ">=3.12.14" -aiostun = ">=0.1.0" -# Cryptocurrency & Blockchain -cryptography = ">=46.0.0" -pynacl = ">=1.6.2" -base58 = ">=2.1.1" -bech32 = ">=1.2.0" -web3 = ">=7.15.0" -eth-account = ">=0.13.7" -# Data Processing -pandas = ">=2.2.3" -numpy = ">=2.2.0" -# Machine Learning & AI -torch = ">=2.11.0" -torchvision = ">=0.26.0" -# CLI Tools -click = ">=8.3.2" -rich = ">=14.3.3" -typer = ">=0.24.1" -click-completion = ">=0.5.2" -tabulate = ">=0.10.0" -colorama = ">=0.4.6" -keyring = ">=25.7.0" -# JSON & Serialization -orjson = ">=3.11.0" -msgpack = ">=1.1.2" -python-multipart = ">=0.0.27" -# Logging & Monitoring -structlog = ">=25.1.0" -sentry-sdk = ">=2.20.0" -# Utilities -python-dateutil = ">=2.9.0" -pytz = ">=2026.1" -schedule = ">=1.2.2" -aiofiles = ">=25.1.0" -pyyaml = ">=6.0.2" -# Async Support -asyncio-mqtt = ">=0.16.2" -websockets = ">=14.1.0" -# Image Processing (for AI services) -pillow = ">=11.1.0" -opencv-python = ">=4.11.0" -# Additional Dependencies -redis = ">=5.2.1" -psutil = ">=6.1.0" -tenseal = ">=0.3.0" -idna = ">=3.7" -hypothesis = "^6.152.4" - -[tool.poetry.group.dev.dependencies] -pytest = "9.0.3" -pytest-asyncio = "1.3.0" -pytest-timeout = "2.4.0" -black = "24.4.2" -flake8 = "7.3.0" -ruff = "0.15.10" -mypy = "2.0.0" -isort = "8.0.1" -pre-commit = "4.5.1" -bandit = "1.9.4" -pydocstyle = "6.3.0" -pyupgrade = "3.21.2" -safety = "3.7.0" -pytest-cov = "6.0.0" -types-requests = ">=2.32.0" -types-PyYAML = ">=6.0.0" -types-python-dateutil = ">=2.9.0" - -[tool.black] -line-length = 127 -target-version = ['py313'] -include = '\.pyi?$' -extend-exclude = ''' -/( - # directories - \.eggs - | \.git - | \.hg - | \.mypy_cache - | \.tox - | \.venv - | build - | dist -)/ -''' - -[tool.isort] -profile = "black" -line_length = 127 -multi_line_output = 3 -include_trailing_comma = true -force_grid_wrap = 0 -use_parentheses = true -ensure_newline_before_comments = true - -[tool.mypy] -python_version = "3.13" -warn_return_any = true -warn_unused_configs = true -# Start with less strict mode and gradually increase -check_untyped_defs = false -disallow_incomplete_defs = true -disallow_untyped_defs = true -disallow_untyped_decorators = false -no_implicit_optional = false -warn_redundant_casts = true -warn_unused_ignores = true -warn_no_return = true -warn_unreachable = false -strict_equality = false - -[[tool.mypy.overrides]] -module = [ - "torch.*", - "cv2.*", - "pandas.*", - "numpy.*", - "web3.*", - "eth_account.*", - "sqlalchemy.*", - "alembic.*", - "uvicorn.*", - "fastapi.*", -] -ignore_missing_imports = true - -[[tool.mypy.overrides]] -module = [ - "apps.coordinator-api.src.app.routers.*", - "apps.coordinator-api.src.app.services.*", - "apps.coordinator-api.src.app.storage.*", - "apps.coordinator-api.src.app.utils.*", - "apps.coordinator-api.src.app.domain.global_marketplace", - "apps.coordinator-api.src.app.domain.cross_chain_reputation", - "apps.coordinator-api.src.app.domain.agent_identity", -] -ignore_errors = true - -[tool.ruff] -line-length = 127 -target-version = "py313" - -[tool.ruff.lint] -select = [ - "E", # pycodestyle errors - "W", # pycodestyle warnings - "F", # pyflakes - "I", # isort - "B", # flake8-bugbear - "C4", # flake8-comprehensions - "UP", # pyupgrade - "E722", # bare except (explicitly enforce) - "G", # logging-string-format (enforce f-strings in logging) - "LOG", # logging best practices -] -ignore = [ - "E501", # line too long, handled by black - "B008", # do not perform function calls in argument defaults - "C901", # too complex - "G001", # logging-string-format (allow for now, migration in progress) - "G002", # logging-string-format (allow for now, migration in progress) -] - -[tool.ruff.lint.per-file-ignores] -"__init__.py" = ["F401"] -"tests/*" = ["B011"] - -[tool.pydocstyle] -convention = "google" -add_ignore = ["D100", "D101", "D102", "D103", "D104", "D105", "D106", "D107"] - -[tool.pytest.ini_options] -asyncio_mode = "auto" -asyncio_default_fixture_loop_scope = "function" -minversion = "8.0" -addopts = "-ra -q --strict-markers --strict-config --cov=apps --cov=packages --cov=cli --cov-report=term-missing --cov-report=html --cov-fail-under=50" -testpaths = ["tests"] -python_files = ["test_*.py", "*_test.py"] -python_classes = ["Test*"] -python_functions = ["test_*"] -markers = [ - "slow: marks tests as slow (deselect with '-m \"not slow\"')", - "integration: marks tests as integration tests", - "unit: marks tests as unit tests", -] - -[tool.coverage.run] -source = ["apps", "packages", "cli"] -omit = [ - "*/tests/*", - "*/test_*.py", - "*/__pycache__/*", - "*/migrations/*", - "*/venv/*", -] - -[tool.coverage.report] -exclude_lines = [ - "pragma: no cover", - "def __repr__", - "raise AssertionError", - "raise NotImplementedError", - "if __name__ == .__main__.:", - "if TYPE_CHECKING:", - "@abstractmethod", -] - -[build-system] -requires = ["poetry-core>=1.0.0"] -build-backend = "poetry.core.masonry.api" diff --git a/pyproject.toml.backup.original b/pyproject.toml.backup.original deleted file mode 100644 index 6be9440f..00000000 --- a/pyproject.toml.backup.original +++ /dev/null @@ -1,243 +0,0 @@ -[tool.poetry] -name = "aitbc" -version = "0.6.0" -description = "AI Agent Compute Network - Main Project" -authors = ["AITBC Team"] - - - -[tool.poetry.dependencies] -python = ">=3.13,<3.14" -# Core Web Framework -fastapi = ">=0.115.6" -uvicorn = {extras = ["standard"], version = ">=0.34.0"} -gunicorn = ">=23.0.0" -starlette = ">=0.49.1" -# Database & ORM -sqlalchemy = {extras = ["asyncio"], version = ">=2.0.49"} -sqlmodel = ">=0.0.38" -alembic = ">=1.18.4" -aiosqlite = ">=0.20.0" -asyncpg = ">=0.30.0" -# Configuration & Environment -pydantic = ">=2.11.0" -pydantic-settings = ">=2.13.1" -python-dotenv = ">=1.1.0" -# Rate Limiting & Security -slowapi = ">=0.1.9" -limits = ">=5.8.0" -prometheus-client = ">=0.21.1" -# HTTP Client & Networking -httpx = ">=0.28.1" -requests = ">=2.32.4" -urllib3 = ">=2.6.3" -aiohttp = ">=3.12.14" -aiostun = ">=0.1.0" -# Cryptocurrency & Blockchain -cryptography = ">=46.0.0" -pynacl = ">=1.6.2" -base58 = ">=2.1.1" -bech32 = ">=1.2.0" -web3 = ">=7.15.0" -eth-account = ">=0.13.7" -# Data Processing -pandas = ">=2.2.3" -numpy = ">=2.2.0" -# Machine Learning & AI -torch = ">=2.11.0" -torchvision = ">=0.26.0" -# CLI Tools -click = ">=8.3.2" -rich = ">=14.3.3" -typer = ">=0.24.1" -click-completion = ">=0.5.2" -tabulate = ">=0.10.0" -colorama = ">=0.4.6" -keyring = ">=25.7.0" -# JSON & Serialization -orjson = ">=3.11.0" -msgpack = ">=1.1.2" -python-multipart = ">=0.0.27" -# Logging & Monitoring -structlog = ">=25.1.0" -sentry-sdk = ">=2.20.0" -# Utilities -python-dateutil = ">=2.9.0" -pytz = ">=2026.1" -schedule = ">=1.2.2" -aiofiles = ">=25.1.0" -pyyaml = ">=6.0.2" -# Async Support -asyncio-mqtt = ">=0.16.2" -websockets = ">=14.1.0" -# Image Processing (for AI services) -pillow = ">=11.1.0" -opencv-python = ">=4.11.0" -# Additional Dependencies -redis = ">=5.2.1" -psutil = ">=6.1.0" -tenseal = ">=0.3.0" -idna = ">=3.7" -hypothesis = "^6.152.4" - -[tool.poetry.group.dev.dependencies] -pytest = "9.0.3" -pytest-asyncio = "1.3.0" -pytest-timeout = "2.4.0" -black = "24.4.2" -flake8 = "7.3.0" -ruff = "0.15.10" -mypy = "2.0.0" -isort = "8.0.1" -pre-commit = "4.5.1" -bandit = "1.9.4" -pydocstyle = "6.3.0" -pyupgrade = "3.21.2" -safety = "3.7.0" -pytest-cov = "6.0.0" -types-requests = ">=2.32.0" -types-PyYAML = ">=6.0.0" -types-python-dateutil = ">=2.9.0" - -[tool.black] -line-length = 127 -target-version = ['py313'] -include = '\.pyi?$' -extend-exclude = ''' -/( - # directories - \.eggs - | \.git - | \.hg - | \.mypy_cache - | \.tox - | \.venv - | build - | dist -)/ -''' - -[tool.isort] -profile = "black" -line_length = 127 -multi_line_output = 3 -include_trailing_comma = true -force_grid_wrap = 0 -use_parentheses = true -ensure_newline_before_comments = true - -[tool.mypy] -python_version = "3.13" -warn_return_any = true -warn_unused_configs = true -# Start with less strict mode and gradually increase -check_untyped_defs = false -disallow_incomplete_defs = true -disallow_untyped_defs = true -disallow_untyped_decorators = false -no_implicit_optional = false -warn_redundant_casts = true -warn_unused_ignores = true -warn_no_return = true -warn_unreachable = false -strict_equality = false - -[[tool.mypy.overrides]] -module = [ - "torch.*", - "cv2.*", - "pandas.*", - "numpy.*", - "web3.*", - "eth_account.*", - "sqlalchemy.*", - "alembic.*", - "uvicorn.*", - "fastapi.*", -] -ignore_missing_imports = true - -[[tool.mypy.overrides]] -module = [ - "apps.coordinator-api.src.app.routers.*", - "apps.coordinator-api.src.app.services.*", - "apps.coordinator-api.src.app.storage.*", - "apps.coordinator-api.src.app.utils.*", - "apps.coordinator-api.src.app.domain.global_marketplace", - "apps.coordinator-api.src.app.domain.cross_chain_reputation", - "apps.coordinator-api.src.app.domain.agent_identity", -] -ignore_errors = true - -[tool.ruff] -line-length = 127 -target-version = "py313" - -[tool.ruff.lint] -select = [ - "E", # pycodestyle errors - "W", # pycodestyle warnings - "F", # pyflakes - "I", # isort - "B", # flake8-bugbear - "C4", # flake8-comprehensions - "UP", # pyupgrade - "E722", # bare except (explicitly enforce) - "G", # logging-string-format (enforce f-strings in logging) - "LOG", # logging best practices -] -ignore = [ - "E501", # line too long, handled by black - "B008", # do not perform function calls in argument defaults - "C901", # too complex - "G001", # logging-string-format (allow for now, migration in progress) - "G002", # logging-string-format (allow for now, migration in progress) -] - -[tool.ruff.lint.per-file-ignores] -"__init__.py" = ["F401"] -"tests/*" = ["B011"] - -[tool.pydocstyle] -convention = "google" -add_ignore = ["D100", "D101", "D102", "D103", "D104", "D105", "D106", "D107"] - -[tool.pytest.ini_options] -asyncio_mode = "auto" -asyncio_default_fixture_loop_scope = "function" -minversion = "8.0" -addopts = "-ra -q --strict-markers --strict-config --cov=apps --cov=packages --cov=cli --cov-report=term-missing --cov-report=html --cov-fail-under=50" -testpaths = ["tests"] -python_files = ["test_*.py", "*_test.py"] -python_classes = ["Test*"] -python_functions = ["test_*"] -markers = [ - "slow: marks tests as slow (deselect with '-m \"not slow\"')", - "integration: marks tests as integration tests", - "unit: marks tests as unit tests", -] - -[tool.coverage.run] -source = ["apps", "packages", "cli"] -omit = [ - "*/tests/*", - "*/test_*.py", - "*/__pycache__/*", - "*/migrations/*", - "*/venv/*", -] - -[tool.coverage.report] -exclude_lines = [ - "pragma: no cover", - "def __repr__", - "raise AssertionError", - "raise NotImplementedError", - "if __name__ == .__main__.:", - "if TYPE_CHECKING:", - "@abstractmethod", -] - -[build-system] -requires = ["poetry-core>=1.0.0"] -build-backend = "poetry.core.masonry.api"