api.strale.io

https://api.strale.io/x402/dockerfile-generate

Shares a payout wallet with 268 other endpoints — its adoption is attributed from that shared wallet's traffic, not earned exclusively.

Generate optimized, production-ready Dockerfiles. Multi-stage builds, Alpine base, non-root user, layer caching. Supports Node, Python, Go, Rust, Java.

62
reliability

Reliability & health

Uptime and response time from our own unpaid probes, plus the reliability score built from them.

Uptime

100.0% avg
0% 50% 100% Jul 22Aug 1Aug 10Aug 20

Response time

p50 27ms · p95 37ms
0ms 50ms 100ms Jul 22Aug 1Aug 10Aug 20
Data table
Reliability history per time bucket over the last 30 days (daily).
Bucket Uptime Probes Response time
7/22/2026, 12:00:00 AM 100% 1 28ms
7/23/2026, 12:00:00 AM 100% 1 44ms
7/24/2026, 12:00:00 AM 100% 1 28ms
7/25/2026, 12:00:00 AM 100% 1 27ms
7/26/2026, 12:00:00 AM 100% 1 27ms
7/27/2026, 12:00:00 AM 100% 1 34ms
7/28/2026, 12:00:00 AM 100% 1 29ms
7/29/2026, 12:00:00 AM 100% 1 25ms
7/30/2026, 12:00:00 AM 100% 1 26ms
7/31/2026, 12:00:00 AM 100% 1 27ms
8/1/2026, 12:00:00 AM 100% 1 27ms
8/2/2026, 12:00:00 AM 100% 1 27ms
8/3/2026, 12:00:00 AM 100% 1 29ms
8/4/2026, 12:00:00 AM 100% 1 28ms
8/5/2026, 12:00:00 AM 100% 1 28ms
8/6/2026, 12:00:00 AM 100% 1 25ms
8/7/2026, 12:00:00 AM 100% 1 25ms
8/8/2026, 12:00:00 AM 100% 1 25ms
8/9/2026, 12:00:00 AM 100% 1 25ms
8/10/2026, 12:00:00 AM 100% 1 30ms
8/11/2026, 12:00:00 AM 100% 1 30ms
8/12/2026, 12:00:00 AM 100% 1 25ms
8/13/2026, 12:00:00 AM 100% 1 27ms
8/14/2026, 12:00:00 AM 100% 1 26ms
8/15/2026, 12:00:00 AM 100% 1 26ms
8/16/2026, 12:00:00 AM 100% 1 29ms
8/17/2026, 12:00:00 AM 100% 1 29ms
8/18/2026, 12:00:00 AM 100% 9 30ms
8/19/2026, 12:00:00 AM 100% 20 27ms
8/20/2026, 12:00:00 AM 100% 12 29ms
62
Composite reliability — the weighted average of the dimensions below, on a 0–100 scale.
Availability
100

How often it was reachable when we probed it (weight 35%).

Latency
100

How quickly it answers when it is up — fast scores high (weight 20%).

Security
100

Whether it serves over working TLS / https (weight 15%).

Transparency
61

Whether the operator disclosed what it does — description, schema, identity (weight 15%).

Activity
1

Observed on-chain payments to this endpoint's wallet — transactions, volume, and distinct paying wallets over the last month (weight 15%; not yet measured when we have not seen its wallet settle).

Confidence 100% — how much probe evidence backs this score. A thin history is flagged, not hidden.

See the scoring methodology for exactly how each number is computed.

Payment

Currencies
USDC
Networks
base
Facilitator
unknown
SDK
unknown

Operator

Company
inferred — unknown
Jurisdiction
Registrar
Domain registered
Hosting network
RLWY-HIKARI-01
Hosting country

Operator context is derived from public RDAP/TLS records and unverified. Company and country are only available for endpoints that publish them (an OV/EV TLS certificate or a non-redacted domain record); most endpoints are CDN-fronted and disclose neither.

On-chain activity (base)

2,279
payments (30d)
156.52
USD volume (30d)
15
paying wallets (30d)

Payments per day

last payment 8/20/2026
0 100 200 Jul 22Aug 6Aug 13Aug 20
Data table
Settled payments per day.
Day Payments Volume (USD) Paying wallets
7/22/2026 139 11.67 5
7/23/2026 76 6.23 3
7/24/2026 195 13.53 1
8/1/2026 151 9.32 3
8/2/2026 35 1.91 1
8/4/2026 5 0.43 3
8/5/2026 3 0.43 3
8/6/2026 73 4.3 1
8/7/2026 162 7.35 2
8/8/2026 40 3.01 1
8/9/2026 146 13.32 1
8/10/2026 131 13.05 1
8/11/2026 62 5.21 1
8/12/2026 106 8 2
8/13/2026 97 4.86 2
8/14/2026 40 2.14 2
8/15/2026 124 6 1
8/16/2026 56 3.12 1
8/17/2026 186 17.59 1
8/18/2026 190 11.85 2
8/19/2026 195 9.42 1
8/20/2026 67 3.77 1

This payout wallet is shared: figures cover all 269 endpoints paid at it, since payments cannot be attributed to one of them. Only payments settled on chains and facilitators we index.

Linked by wallet — likely same operator

On-chain agent identity and the x402 endpoint that shares its settlement wallet.

Response schema
{
  "example": {
    "build_args": [],
    "dockerfile": "# Stage 1: Dependencies\nFROM node:18-alpine AS dependencies\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci --only=production && npm cache clean --force\n\n# Stage 2: Builder\nFROM node:18-alpine AS builder\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci\nCOPY . .\nRUN npm run build --if-present\n\n# Stage 3: Runtime\nFROM node:18-alpine AS runtime\nWORKDIR /app\n\n# Install dumb-init for proper signal handling\nRUN apk add --no-cache dumb-init\n\n# Create non-root user\nRUN addgroup -g 1001 -S nodejs && adduser -S nodejs -u 1001\n\n# Copy production dependencies from dependencies stage\nCOPY --from=dependencies --chown=nodejs:nodejs /app/node_modules ./node_modules\n\n# Copy application code from builder stage\nCOPY --from=builder --chown=nodejs:nodejs /app/package*.json ./\nCOPY --from=builder --chown=nodejs:nodejs /app/dist ./dist\nCOPY --from=builder --chown=nodejs:nodejs /app/public ./public\n\n# Switch to non-root user\nUSER nodejs\n\n# Expose port\nEXPOSE 3000\n\n# Healthcheck\nHEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \\\n  CMD node -e \"require('http').get('http://localhost:3000/health', (r) => {if (r.statusCode !== 200) throw new Error(r.statusCode)})\"\n\n# Use dumb-init to handle signals properly\nENTRYPOINT [\"dumb-init\", \"--\"]\n\n# Start application\nCMD [\"node\", \"dist/index.js\"]",
    "dockerignore_recommended": [
      "node_modules",
      "npm-debug.log",
      ".git",
      ".gitignore",
      ".env",
      ".env.local",
      ".DS_Store",
      "dist",
      "build",
      ".next",
      "coverage",
      ".nyc_output",
      "*.log",
      ".vscode",
      ".idea",
      "*.swp",
      "*.swo",
      "*~",
      ".eslintcache",
      "yarn-error.log",
      ".npm",
      ".eslintignore",
      "README.md",
      "LICENSE",
      ".editorconfig",
      "docker-compose*.yml",
      "Dockerfile*",
      ".dockerignore",
      ".github",
      ".gitlab-ci.yml",
      ".circleci",
      "test",
      "tests",
      "jest.config.js",
      "vitest.config.js",
      ".mocharc.json"
    ],
    "estimated_image_size": "120-150MB",
    "framework": "express",
    "language": "en",
    "multi_stage": true,
    "security_notes": [
      "Non-root user (nodejs:1001) runs the application",
      "Multi-stage build reduces final image size by excluding dev dependencies",
      "Alpine Linux base image minimizes attack surface",
      "dumb-init handles PID 1 and signal forwarding correctly",
      "Only production dependencies copied to final stage",
      "Read-only filesystem recommended in production via security context",
      "No package manager or build tools in final image",
      "HEALTHCHECK validates application responsiveness"
    ],
    "stages": [
      "dependencies",
      "builder",
      "runtime"
    ]
  },
  "properties": {
    "dockerfile": {
      "type": "string"
    },
    "estimated_image_size": {
      "type": "string"
    },
    "security_notes": {
      "type": "array"
    },
    "stages": {
      "type": "array"
    }
  },
  "type": "object"
}