Add Public Server & Network Access section to README, remove obsolete documentation files
Some checks failed
Deploy to Testnet / deploy-testnet (push) Successful in 1m16s
Documentation Validation / validate-docs (push) Failing after 11s
Documentation Validation / validate-policies-strict (push) Successful in 3s
Multi-Node Stress Testing / stress-test (push) Successful in 5s
Cross-Node Transaction Testing / transaction-test (push) Successful in 3s
Build Debian Miner Binary / build-miner (push) Failing after 13m55s

- 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
This commit is contained in:
aitbc
2026-05-19 20:57:11 +02:00
parent 83a03be376
commit 06b656384b
7 changed files with 116 additions and 487 deletions

View File

@@ -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

View File

@@ -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

60
docs/support.md Normal file
View File

@@ -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

View File

@@ -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"

View File

@@ -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"