zeekay
3da4e9740d
feat: add 26 chains to registry (10 -> 36 total)
...
L1: Gnosis, Celo, Fantom, Cronos, Moonbeam, Moonriver, Harmony,
Rootstock, Fuse, Metis
L2: zkSync Era, Scroll, Linea, Polygon zkEVM, Blast, Mantle, Mode,
Zora, World Chain, Abstract, Starknet
EVM: Canto, Kaia, Aurora, Boba, Astar
Each chain includes mainnet + testnet networks with chain_id,
explorer_url, native_currency, and public RPC defaults in .env.example.
Adds STARKNET variant to ChainType enum for non-EVM support.
2026-02-26 15:15:42 -08:00
zeekay
ef6ea57c6e
fix: deploy to hanzo namespace instead of bootnode to avoid duplicate resources
...
Replace kubectl apply of full manifests (which created conflicting
resources in the bootnode namespace) with kubectl set image targeting
the existing deployments in the hanzo namespace. This eliminates
duplicate ingresses and image pull failures.
2026-02-26 14:59:51 -08:00
zeekay
3e01c6c260
fix: await async headers() for Next.js 16 compatibility
2026-02-26 14:28:58 -08:00
zeekay
3ef7773718
feat: add /agents page and skillsOrg brand support
...
- New /agents marketing page for AI agent crypto integration
- Added skillsOrg field to BrandConfig for per-brand skills repos
- Added Agents link to navbar (desktop + mobile)
- Server-side brand detection via Host header in layout
2026-02-26 14:25:14 -08:00
zeekay
05a14c1f6b
Merge remote-tracking branch 'hanzo/main'
...
# Conflicts:
# api/bootnode/api/__init__.py
# api/bootnode/api/billing/__init__.py
# api/bootnode/core/billing/unified.py
# infra/cloud/deploy.sh
# infra/compose.yml
# infra/k8s/api-deployment.yaml
# infra/k8s/bootnode-deployment.yaml
# infra/k8s/bootnode-operator.yaml
# infra/k8s/hanzo-web3-deployment.yaml
# infra/k8s/indexer-deployment.yaml
# web/app/auth/callback/page.tsx
# web/app/dashboard/infrastructure/nodes/page.tsx
# web/app/dashboard/layout.tsx
# web/app/login/page.tsx
# web/components/unified-navigation.tsx
# web/lib/auth.tsx
# web/lib/brand.ts
# web/public/logo/lux-icon.svg
# web/tsconfig.tsbuildinfo
2026-02-10 20:51:48 -08:00
zeekay
ad6dc4e6eb
feat: migrate billing from Stripe to Hanzo Commerce + Square
...
Remove all direct Stripe integration. Bootnode now uses Hanzo Commerce
API as its payment gateway (Commerce handles Square internally).
- Remove stripe dependency from pyproject.toml
- Rewrite commerce.py client with correct Commerce API paths:
/api/v1/user (customers), /api/v1/subscribe (subscriptions),
/api/v1/checkout/* (payments), /api/v1/order (orders/invoices)
- Add unified.py: IAM + Commerce customer linking (hanzo.id SSO)
- Rewrite webhooks.py: Commerce event handler with HMAC verification
- Update sync.py: usage metering via Commerce (not Stripe)
- Update billing API endpoints: checkout, account, webhooks
- Config uses COMMERCE_* prefix (not HANZO_COMMERCE_*)
- Add test_billing.py: 46 tests covering CU, tiers, Commerce client,
webhooks, and unified billing
2026-02-10 20:50:18 -08:00
zeekay
60cb93aca6
feat: MPC threshold wallets, FHE encrypted balances, real staking integration
...
- Shamir's Secret Sharing (2-of-3 ECDSA) with AES-GCM encrypted share storage
- FHE module for confidential balance/staking computation (AES-GCM sim, concrete-python optional)
- 8 new MPC API endpoints: create, list, status, sign, shares, decrypt-share
- /v1/keys/status endpoint backing staking page KMS connection
- Staking page wired: real validators from nodes API, MPC wallet connection, Quick Stake signing
- MPCWalletModel with threshold, share holders, encrypted shares columns
- 115 total API routes, all tests passing
2026-02-10 18:57:27 -08:00
zeekay
108e2cada6
feat: DB-backed node infrastructure with globe visualization
...
- Add Cluster and Node SQLAlchemy models with full metrics columns
- Create DB-backed CRUD router (14 endpoints) replacing in-memory store
- Add SVG world map globe component with pulsing node dots and tooltips
- Seed real DOKS clusters (hanzo-k8s, lux-k8s) + multi-chain nodes on startup
- Wire seed_database into app lifespan for auto-population
- Add network filter and globe visualization to nodes dashboard page
- Keep staking/supported-chains/presets endpoints via lazy imports
2026-02-10 18:43:03 -08:00
zeekay
28555bb20d
fix: remove invalid --no-extras flag from CI uv sync
2026-02-10 18:20:09 -08:00
zeekay
bf6459f5b0
feat: brand-aware IAM auth, centralized API helpers, real chain icons, developer workbench
...
- Fix OAuth login to use per-brand IAM endpoints (lux.id, hanzo.id, zoo.id, iam.bootno.de)
- Correct Casdoor client IDs to match init_data.json
- Add NEXT_PUBLIC_IAM_* env var overrides for K8s chart values
- Centralize getApiUrl() and getAuthHeaders() in lib/api.ts
- Replace emoji chain icons with real PNG logos from Lux exchange
- Add developer workbench component to dashboard layout
- Add network monitoring, billing, and infrastructure pages
2026-02-10 18:14:49 -08:00
zeekay
a7b46f543d
fix: skip hanzo-kms optional dep in CI, update repo URL to bootnode/bootnode
2026-02-10 15:07:13 -08:00
zeekay
e765968129
chore: migrate image registry from hanzoai/bootnode to bootnode/bootnode
...
All container images now push to and pull from ghcr.io/bootnode/bootnode:*
CI, K8s manifests, compose files, and deploy scripts updated.
2026-02-10 14:59:40 -08:00
zeekay
91f4f82b49
Update CI
2026-02-10 14:59:18 -08:00
zeekay
67797d69b4
Update to latest K8S Operator
2026-02-10 14:57:33 -08:00
zeekay
8999f3c369
fix: dark theme, local auth redirect, and monitoring page
...
- Dashboard and navigation use dark-mode-aware CSS vars (bg-background,
bg-sidebar, border-border) instead of hardcoded bg-gray-50/bg-white
- isProductionMode() now recognizes 127.0.0.1 and private IPs as local
so login no longer redirects to lux.id on localhost
- Add /dashboard/infrastructure/monitoring page with node health
summary cards, CPU/memory/disk usage bars, 15s auto-refresh
- Quick login button uses [email protected] / admin credentials
2026-02-10 14:56:14 -08:00
zeekay
87f3f9fee5
fix: dark black theme and real LUX production wordmark
...
- Dark theme: pure black background (oklch 0 0 0), monochrome chart colors
- LUX logos: replaced simplified polygons with production wordmark from @luxfi/logo
- Sidebar: near-black (#0d0d0d), monochrome primary colors
2026-02-10 14:50:56 -08:00
zeekay
fb1e5d96c5
feat: add Lux validator fleet management system
...
Full-stack fleet lifecycle management for Lux blockchain validators
deployed via Helm to DOKS clusters.
Backend (Python/FastAPI):
- HelmDeployer: async helm/kubectl CLI wrapper with temp file cleanup,
per-release locking, and command injection protection
- LuxFleetManager: fleet CRUD, scale, rolling restart, node health
probes via luxd RPC (health + C-chain block height)
- Fleet API: authenticated REST endpoints (ApiKeyDep) with RFC 1123
input validation, kubeconfig error sanitization
- Pydantic models: 3 networks (mainnet/testnet/devnet), fleet status
enums, helm values translation
- 110 unit tests (0.30s, all passing)
Frontend (TypeScript/Next.js):
- Fleet dashboard: cluster selector, stats banner, fleet cards with
scale/restart/destroy operations, node status table, create dialog
- Interactive SVG world map: zero-dep Mercator projection with DOKS
region markers, pulsing animations, P2P mesh lines, click-to-zoom
- DOKS region data: 11 regions with coordinates and API client
- Dark theme throughout
2026-02-10 13:40:28 -08:00
zeekay
6f2f8443ec
fix: cloud.lux.network uses lux.id for IAM, not hanzo.id
2026-02-10 09:28:16 -08:00
zeekay
20cb05fd51
fix: hanzo-web3 uses universal web-latest image tag
...
Single universal image with runtime brand detection, not per-brand builds.
2026-02-10 09:01:43 -08:00
zeekay
f69a016d7c
fix: runtime API URL resolution and pin Docker base image
...
- Add apiUrl/wsUrl to brand config for runtime resolution
- Auth and OAuth callback now use brand's apiUrl instead of baked env var
- Pin node:22-alpine to specific digest for supply chain security
2026-02-09 20:48:43 -08:00
zeekay
27372f5ae1
refactor: replace React.useState/useEffect with destructured imports
...
Consistent with rest of codebase - use named imports instead of namespace.
2026-02-09 20:36:06 -08:00
zeekay
19415865d5
feat: white-label branding with Cmd+K, ecosystem footer, and auth fix
...
- Add runtime brand detection (single Docker image for all brands)
- Add Cmd+K command palette with brand-specific ecosystem links
- Add brand-specific footer ecosystem column with external links
- Fix login page React hook violation (useBrand called after return)
- Use brand IAM URL for auth redirect (all brands → hanzo.id)
- Add Lux Cloud brand logos
- Unify CI to build single universal web image
2026-02-09 20:05:27 -08:00
zeekay
51668b6dd3
fix: update image references from bootnode/ to ghcr.io/hanzoai/bootnode
...
Updated all container image references across compose, K8s manifests,
cloud deploy scripts, and tests to use the ghcr.io/hanzoai/bootnode
registry format.
2026-02-06 07:55:58 -08:00
zeekay
41ef347173
fix: add bootnode brand to metadata, set as default
...
The layout.tsx was missing bootnode case in brand switch,
causing it to fall through to Hanzo. Added bootnode and
changed default from Hanzo to Bootnode.
2026-02-05 21:06:13 -08:00
zeekay
4c5ae21b46
fix: build separate Docker images per brand
...
Build distinct images with NEXT_PUBLIC_BRAND baked in at build time:
- web-latest (bootnode brand for bootno.de)
- web-hanzo-latest (hanzo brand for web3.hanzo.ai)
Next.js NEXT_PUBLIC_* vars are embedded at build, not runtime.
2026-02-05 20:55:54 -08:00
zeekay
e669f502cd
fix: use hanzoai/bootnode as shared image registry
...
Both repos (hanzoai/bootnode and bootnode/bootnode) push to
ghcr.io/hanzoai/bootnode to maintain single source of truth
for container images.
2026-02-05 16:54:37 -08:00
zeekay
024a61f256
feat: dual deployment for Hanzo Web3 and Bootnode brands
...
- Split web deployment into hanzo-web3 and bootnode-web
- hanzo-web3: web3.hanzo.ai, auth via hanzo.id
- bootnode-web: bootno.de, auth via iam.bootno.de
- Updated CI to deploy both frontends
- Changed image registry to ghcr.io/bootnode/bootnode
- Updated ingress for both domains with separate TLS certs
2026-02-05 13:35:33 -08:00
zeekay
309b276749
fix: use ghcr.io registry for container images
...
CI pushes to ghcr.io/hanzoai/bootnode, but manifests were
referencing hanzoai/bootnode which defaults to docker.io.
This caused deployments to use stale images from docker.io.
2026-02-04 23:42:08 -08:00
zeekay
15c0545d82
chore: trigger fresh build
2026-02-04 23:30:31 -08:00
zeekay
bb3c6906f3
fix: redirect /login to hanzo.id in production
...
Instead of showing a login page with multiple identity providers,
redirect directly to hanzo.id for a cleaner authentication flow.
2026-02-04 23:09:42 -08:00
zeekay
1228396427
fix: add CDN cache headers to prevent stale content
...
- Add CDN-Cache-Control header (60s) for HTML pages
- Keep long cache (1 year) for immutable static assets
- Prevents Cloudflare from serving stale branded content
2026-02-04 11:48:10 -08:00
zeekay
d939c6b81f
chore: update bootnode domain to bootno.de
...
- Change bootnode brand domain from bootnode.dev to bootno.de
- Update status URL and domain detection
2026-02-04 11:37:43 -08:00
zeekay
d51aa5d371
fix: set NEXT_PUBLIC_BRAND=hanzo in Dockerfile
...
Ensures web3.hanzo.ai builds with Hanzo branding:
- Set NEXT_PUBLIC_BRAND=hanzo at build time
- Update client ID to hanzo-web3
2026-02-04 11:28:33 -08:00
zeekay
a11da9874a
fix: remove unpublished hanzo-kms/iam from optional deps
...
The hanzo-kms and hanzo-iam packages are not published to PyPI,
causing uv lock to fail. In production K8s, secrets are injected
as env vars directly by the KMS operator.
2026-02-04 11:16:07 -08:00
zeekay
c3347be8b4
fix: update branding from bootnode.dev to hanzo.ai
...
- Fix code-demo.tsx brand name check (Hanzo Web3 vs Hanzo)
- Update RPC domains to rpc.web3.hanzo.ai
- Replace assets.bootnode.dev with assets.web3.hanzo.ai
- Replace ipfs.bootnode.dev with ipfs.web3.hanzo.ai
- Update demo email from [email protected] to [email protected]
2026-02-04 11:14:28 -08:00
zeekay
385ff6f460
feat: add planet-scale caching and omnichain query layer
...
Cloudflare Edge Caching (near-$0 costs for free tier):
- Multi-tier cache: L0 (in-memory) + L1 (Redis) + L2 (Cloudflare edge)
- Cache shared across ALL accounts (blockchain data is public)
- Aggressive TTLs: immutable data (1yr), finalized blocks (1hr)
- Cloudflare Worker script for edge caching
- Cache bypass only for state-dependent calls (eth_call, eth_getBalance)
Omnichain Query Layer (100+ chains):
- Unified query client for blocks, transactions, addresses, tokens
- PostgreSQL for metadata, ClickHouse for analytics
- Qdrant vector search for semantic queries (similar contracts)
- Meilisearch full-text search (addresses, tokens, contracts)
- GraphQL API with Strawberry (subscriptions for real-time)
- Cross-chain queries (address across all chains)
Infrastructure Updates:
- Added Qdrant and Meilisearch to compose.yml
- ClickHouse schema for omnichain analytics (blocks, txs, DeFi, NFTs)
- Materialized views for hourly/daily aggregates
Integrates with lux/indexer for 100+ chain data.
2026-02-04 11:00:57 -08:00
zeekay
c60496518d
feat: add unified IAM + Commerce billing integration
...
- Link Hanzo IAM users to Commerce customers via hanzo_id
- Auto-create Commerce customer on first billing access
- New unified billing endpoints:
- GET /billing/account - unified user with IAM + Commerce data
- GET /billing/account/subscriptions - all subscriptions
- GET /billing/account/invoices - all invoices
- GET /billing/account/payment-methods - payment methods
- POST /billing/account/sync - sync IAM to Commerce
- POST /billing/account/subscribe - create subscription
- Support for hanzo.id, zoo.id, lux.id, pars.id orgs
2026-02-04 10:45:09 -08:00
zeekay
d3e0ea76a5
Merge hanzoai/bootnode: billing system and deployment targets
2026-02-04 09:45:04 -08:00
zeekay
e12b842f7d
feat: implement Alchemy-style billing and pluggable deployments
...
Billing System:
- Add compute unit costs for 100+ RPC methods (1-100 CU)
- Implement pricing tiers: Free (30M CU), PAYG ($0.40/M), Enterprise
- Real-time usage tracking with Redis + ClickHouse analytics
- Subscription model with billing cycles
- Billing API endpoints: /usage, /subscription, /invoices, /tiers
Hanzo Commerce Integration:
- HanzoCommerceClient for subscriptions and invoices
- Usage sync worker for PAYG metered billing
- Webhook handler for subscription lifecycle events
- HMAC signature verification for webhooks
Pluggable Deployment Targets:
- Abstract DeployTarget interface
- DockerDeployer - Docker Compose management
- ProcessDeployer - Local dev with subprocesses
- KubernetesDeployer - K8s deployments via python client
- Factory pattern with caching
- Infrastructure API: /services, /scale, /logs
Pricing Page:
- Updated to match Alchemy pricing structure
- Three tiers with feature comparison table
- FAQ section with compute unit explanation
ClickHouse Schema:
- billing_usage_daily with SummingMergeTree
- billing_usage_monthly materialized view
- cu_by_method for analytics dashboard
- rate_limit_events tracking
2026-02-04 09:44:50 -08:00
zeekay
2e2bf48d94
refactor: remove legacy bootnode code in favor of modern platform
...
Removed legacy components:
- app.py - Old Quart/Flask application
- main.py, manage.py - Legacy entry points
- requirements.txt, Makefile - Old build config
- bootnode/ - Legacy K8s/GCP orchestration
- util/ - Old utility modules
- casper/, casper-env/, casper-envoy/ - Obsolete Casper configs
- geth/ - Legacy Ethereum node configs
- config/ - Old K8s configs
- *.log, *.json - Build artifacts
The modern FastAPI platform in /api/ provides:
- Multi-chain RPC proxy with 100+ chains
- Token, NFT, and Transfer APIs
- ERC-4337 Smart Wallets and Bundler
- Webhooks with retry logic
- Hanzo IAM integration
- ClickHouse analytics
2026-02-03 22:38:08 -08:00
zeekay
b4f372430e
Merge hanzoai/bootnode branding updates
2026-02-03 22:34:54 -08:00
zeekay
42f2dbbe06
fix: update branding to Hanzo for production deployment
...
- Update layout.tsx with brand-aware metadata (title, OG, icons)
- Change default brand from bootnode to hanzo in brand.ts
- Update homepage, product pages with brand-aware text
- Replace api.bootnode.dev URLs with api.hanzo.ai
- Update llms.txt route to use brand system
- Update security, privacy pages with Hanzo branding
- Update code-demo, unified-navigation with brand logos
- Update footer status link to status.hanzo.ai
2026-02-03 22:34:09 -08:00
zeekay
59a5cbeaff
Merge hanzoai/bootnode platform into bootnode/bootnode
2026-02-03 13:08:04 -08:00
zeekay
365bc21bf9
feat: enhanced bootnode app with updated dependencies
...
- Update app.py with improvements
- Update requirements.txt dependencies
- Add .env.example template
2026-02-03 12:52:40 -08:00
zeekay
f586dfab86
fix: remove embedded repo references (separate projects)
2026-02-03 12:48:47 -08:00
zeekay
d55d0b03cb
feat: comprehensive bootnode platform updates
...
- Add brand assets and logos
- Add KMS integration for secure key management
- Add infrastructure configs (cloud providers, monitoring)
- Add indexer service with documentation
- Update K8s deployments and ingress
- Enhance dashboard pages (analytics, assets, infrastructure)
- Update auth and API components
- Add .gitignore for embedded repos
2026-02-03 12:48:01 -08:00
zeekay
38f6b31d44
fix: add e2e test script
2026-02-02 16:48:18 -08:00
zeekay
42a4d28986
fix: export init_db from db module
2026-02-02 16:45:11 -08:00
zeekay
bcee659321
fix: use asyncpg URL and add redis service in e2e tests
2026-02-02 16:42:23 -08:00
zeekay
73a3d23053
feat: production deployment with shared Hanzo infrastructure
...
- Add k8s configs for production deployment
- Use shared postgres/datastore in hanzo namespace
- Fix image registry to ghcr.io/hanzoai/bootnode
- Add deploy script with shared infra support
- Simplify compose.yml for local development
2026-02-02 16:39:52 -08:00