diff --git a/.dockerignore b/.dockerignore index 01c9443..71ffafa 100644 --- a/.dockerignore +++ b/.dockerignore @@ -8,6 +8,9 @@ test-ledger/ vendor/ frontend/ +# Dev Tools (not needed in production image) +tools/ + # OS & Editor Junk .DS_Store .vscode/ diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8b93606..cff1c51 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,7 +17,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: '1.22' + go-version: '1.25.3' cache: true - name: Verify Dependencies diff --git a/.gitignore b/.gitignore index 1916157..82c8a43 100644 --- a/.gitignore +++ b/.gitignore @@ -15,5 +15,4 @@ *.out __pycache__/ -test-ledger/ -config/alertmanager.yml \ No newline at end of file +test-ledger/ \ No newline at end of file diff --git a/README.md b/README.md index 2d4f132..6381c93 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,9 @@ SentinelSOL/ ├── .env.example # Local configuration template ├── docker-compose.yml # Local orchestrator ├── docker-compose.prod.yml # Out-of-Band (OOB) Server orchestrator +├── tools/ +│ └── mock-jito/ +│ └── main.go # Simulated Jito metrics for demo ├── Dockerfile # Multi-stage Go compilation └── Makefile # Infrastructure abstraction commands ``` @@ -91,8 +94,9 @@ docker-compose up -d --build | Service | URL | |---------|-----| -| **SentinelSOL Frontend** | `http://localhost:3001` | | **Grafana Dashboard** | `http://localhost:3000` | +| **Prometheus** | `http://localhost:9090` | +| **SentinelSOL Frontend** | [sentinelsol-sre.vercel.app](https://sentinelsol-sre.vercel.app/) | **Full setup:** diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 677ae78..7fca4cb 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -4,13 +4,22 @@ services: network_mode: "host" environment: - RPC_URL=${RPC_URL} + depends_on: + prometheus: + condition: service_healthy prometheus: image: prom/prometheus:latest volumes: - ./config/prometheus.yml:/etc/prometheus/prometheus.yml - ./config/alerts.rules.yml:/etc/prometheus/alerts.rules.yml + - prometheus_data:/prometheus network_mode: "host" + healthcheck: + test: ["CMD", "wget", "-q", "--tries=1", "--spider", "http://localhost:9090/-/healthy"] + interval: 10s + timeout: 5s + retries: 3 alertmanager: image: prom/alertmanager:latest @@ -26,7 +35,8 @@ services: grafana: image: grafana/grafana:latest depends_on: - - prometheus + prometheus: + condition: service_healthy env_file: - .env environment: @@ -35,4 +45,7 @@ services: - ./config/grafana/provisioning/datasources:/etc/grafana/provisioning/datasources - ./config/grafana/provisioning/dashboards:/etc/grafana/provisioning/dashboards - ./config/grafana/dashboards:/var/lib/grafana/dashboards - network_mode: "host" \ No newline at end of file + network_mode: "host" + +volumes: + prometheus_data: diff --git a/frontend/components/sentinel/about.tsx b/frontend/components/sentinel/about.tsx index d1266b1..29337e0 100644 --- a/frontend/components/sentinel/about.tsx +++ b/frontend/components/sentinel/about.tsx @@ -21,7 +21,7 @@ export function About() { telemetry layer. By predicting hardware exhaustion and monitoring ShredStream latency, it protects operators from stake pruning and Jito MEV loss before failures occur. Built for the Colosseum - Frontier Hackathon. + Hackathon 2026.

diff --git a/frontend/components/sentinel/hero.tsx b/frontend/components/sentinel/hero.tsx index c136c0c..a2a8d70 100644 --- a/frontend/components/sentinel/hero.tsx +++ b/frontend/components/sentinel/hero.tsx @@ -35,7 +35,7 @@ export function Hero() { The Solana Foundation Delegation Program is actively pruning underperforming nodes. Bad performance now equals immediate removal and loss of delegated stake. SentinelSOL was engineered to give operators a predictive edge, catching hardware degradation and network exhaustion before it results in on-chain delinquency and stake-stripping.

- Read the Blockworks Report ↗ + Read the Blockworks Report ↗