Referencia de capacidades y límites

La spec completa y siempre actual de cada producto de koigrid — versiones, features y límites de plan. Se genera desde la fuente de verdad en código, así que nunca se desincroniza de lo que la plataforma hace de verdad.

Apps

Sources
container image OR git repo (Dockerfile or nixpacks buildpacks)
Build
sandboxed (rootless BuildKit / kaniko in gVisor); ~280s timeout. Heavy builds (e.g. next build ~4GB) may need NODE_OPTIONS=--max-old-space-size; OOM reports build_oom
Deploys
zero-downtime (new container promoted only if healthy) + rollback to exact image
Custom domains
CNAME/ALIAS + automatic TLS (Let’s Encrypt)
Env vars
encrypted at rest (envelope, AES-256-GCM), injected on redeploy
Volumes
persistent block storage per app (survives redeploys)
Isolation
gVisor syscall sandbox (untrusted code cannot escape)
Runtime
RAM/CPU limits, health checks, per-app logs; multi-runner with auto-failover

Databases

PostgreSQL versions
15, 16, 17 (default 17)
pgvector
pre-installed (embeddings / vector search, AI-native)
Extensions
pg_trgm, unaccent, uuid-ossp, pgcrypto, citext, hstore, pg_stat_statements — CREATE EXTENSION, or POST /databases/:id/extensions {name, schema?} to install into a specific schema (e.g. "extensions" for ex-Supabase apps)
High availability
leader + standby, automatic failover (Patroni + etcd)
Connection pooling
PgBouncer (incluido)
Logical replication / CDC
enabled — CREATE SUBSCRIPTION (in) + publications (out)
Roles
manage Postgres roles per database (least-privilege create/list/drop/reset-password) — POST /databases/:id/roles. Never superuser; passwords never hit argv/logs. Use for GRANT + SET ROLE (scoped access) + object ownership.
Data API
auto REST over your tables (PostgREST/Supabase-style) — GET/POST /databases/:id/data/:table with select/filter/order/limit. Read/write data over HTTP without a Postgres driver. Identifiers validated, values parameterized (injection-safe). AI-first.
Backups
automatic daily + on-demand, point-in-time restore (wal-g)
Read replicas
hot-scaling, separate read endpoint (readUri) on HA
Branching
branch the production database (full-copy clone at "now" or a PITR point) to test migrations safely — POST /databases/:id/branches. Reset a branch back to production’s current state (POST .../reset, connection unchanged), ephemeral TTL + delete protection. A branch is a real cluster (counts vs plan).
Password rotation
automatic scheduled password rotation (AWS Secrets Manager rotation substitute), ZERO-DOWNTIME. Alternating dual-role over a reloadable pooler → the old credential stays valid until the next rotation (overlap), so live apps never break. Enable: POST /databases/:id/rotation/migrate ONCE (switch the pooler to reloadable file mode), then PUT /databases/:id/rotation {intervalDays} (or POST .../rotation/rotate to rotate now). Apps wiring ${{db.x.DATABASE_URL}} auto-redeploy with the fresh credential.
TLS
verificado (sslmode=verify-ca con CA propia — sin rejectUnauthorized:false)

Cron jobs

Schedule
5-field cron with timezone/DST (cron-parser)
Types
container (docker run per job in gVisor) OR http (koigrid hits a URL on schedule — headers encrypted)
Runtime
RAM/CPU limits + timeout; captured logs + exit code
Output
captured logs + exit code; manual trigger available
Env vars
encrypted at rest, injected per run

Cache / Redis

Redis version
7
High availability
master + replica(s) + 3 Sentinels + master-aware HAProxy, auto-failover
Eviction policies
noeviction, allkeys-lru/lfu/random, volatile-lru
Persistence
RDB + AOF
Backups
RDB snapshots → S3, daily + on-demand, restore to a new cluster
Security
TLS (rediss://) + password (requirepass/masterauth)

Storage

S3-compatible
MinIO — PutObject, GetObject, ListObjectsV2, HeadObject, DeleteObject, presigned URLs
Clients (zero code change)
the standard AWS SDK works as-is (virtual-hosted bucket.s3.koigrid.com supported) — set AWS_ENDPOINT_URL_S3 + keys. Also aws-cli, rclone; path-style works too
Endpoint
https://s3.koigrid.com
Access keys
per-org scoped keys (secret shown once)
Bandwidth
included per plan, flat rate (no egress surprise)

Observability

Events
timeline of every action, per org (GET /events)
Metrics
daily consumption series + cost (GET /metrics)
Alarms
threshold alarms → emit alarm.triggered (GET/POST /alarms)
Anomaly detection
statistical spike detection (>Nσ from baseline, no fixed threshold) on cost/usage (GET/POST /anomalies)
Scope
observability:read / observability:write

Email

Model
bring-your-own SMTP (Resend/SES/Postmark/Postfix…) — koigrid relays only
Config
SMTP per org, encrypted at rest, verified on save
Sending
POST /email/send with rate limit per plan + delivery ledger
Cost
zero email cost/reputation for koigrid; no per-domain limits

Checks

Check types
URL / heartbeat + API check with assertions (v2: browser via Playwright)
Assertions
HTTP status (200/2xx/list), latency < X ms, body contains/regex/JSON path, header equals/contains
Scheduling
interval per plan (Free ≥5 min, paid ≥1 min) + run-once (test now)
Reliability
anti-flaky retries + per-check timeout; status up/down/degraded
Auth
encrypted custom headers (Authorization, x-api-key) for protected endpoints
Alerts
email + webhook (Slack/PagerDuty/Discord) on down and recovery — only on state change
History
per-run status + latency; uptime %, average + p95 latency
Agent-native
full CRUD + run-once by API/CLI — monitoring-as-code

Share

API: /api/v1/ · docs /docs · /share · full endpoints + scopes in /llms.txt and OpenAPI.

Links

API: /api/v1/ · docs /docs · /links · full endpoints + scopes in /llms.txt and OpenAPI.

Feature Flags

API: /api/v1/flags · docs /docs · /flags · full endpoints + scopes in /llms.txt and OpenAPI.

Status Pages

API: /api/v1/status-pages · docs /docs · /status-pages · full endpoints + scopes in /llms.txt and OpenAPI.

Heartbeats

API: /api/v1/heartbeats · docs /docs · /heartbeats · full endpoints + scopes in /llms.txt and OpenAPI.

Config & Secrets

API: /api/v1/config · docs /docs · /config · full endpoints + scopes in /llms.txt and OpenAPI.

Web Analytics

API: /api/v1/analytics/sites · docs /docs · /analytics · full endpoints + scopes in /llms.txt and OpenAPI.

Error Tracking

API: /api/v1/errors · docs /docs · /errors · full endpoints + scopes in /llms.txt and OpenAPI.

Speed Insights

API: /api/v1/speed-insights · docs /docs · /speed-insights · full endpoints + scopes in /llms.txt and OpenAPI.

Sandboxes

API: /api/v1/sandboxes · docs /docs · /sandboxes · full endpoints + scopes in /llms.txt and OpenAPI.

Image Optimization

API: /api/v1/images/config · docs /docs · /images · full endpoints + scopes in /llms.txt and OpenAPI.

Firewall

API: /api/v1/waf/rules · docs /docs · /firewall · full endpoints + scopes in /llms.txt and OpenAPI.

Webhooks

API: /api/v1/webhooks · docs /docs · /webhooks · full endpoints + scopes in /llms.txt and OpenAPI.

Log Drains

API: /api/v1/log-drains · docs /docs · /log-drains · full endpoints + scopes in /llms.txt and OpenAPI.

Spend Management

API: /api/v1/spend · docs /docs · /spend-management · full endpoints + scopes in /llms.txt and OpenAPI.

Bot Management

API: /api/v1/bots/policy · docs /docs · /bot-management · full endpoints + scopes in /llms.txt and OpenAPI.

OpenTelemetry

API: /api/v1/otel · docs /docs · /opentelemetry · full endpoints + scopes in /llms.txt and OpenAPI.

DNS

API: /api/v1/dns/zones · docs /docs · /dns · full endpoints + scopes in /llms.txt and OpenAPI.

Queues

Model
durable message queue on Postgres (SQS-like) — send / receive / ack
Delivery
at-least-once with a visibility timeout (received messages hidden until ack or timeout)
No double delivery
concurrent consumers claim different messages (FOR UPDATE SKIP LOCKED)
Dead-letter
built in — a message past maxReceives is dead-lettered (no separate DLQ/redrive policy)
Send options
delaySeconds (up to 15 min) + dedupeId (idempotent sends)
Limits
body up to 256 KB, receive up to 10 at a time (SQS-parity)
Lock-in
none — portable Postgres model, not the AWS-specific SQS API

Workflows

Model
durable execution — ordered steps with journaled outputs (Step-Functions-like activities / Inngest steps)
Durability
a run survives crashes and redeploys — completed steps are never re-run (journal in Postgres)
Durable sleep
pause a run from seconds to 90 days; it wakes and continues
Retries
per-step exponential backoff up to maxAttempts, then the run fails
At-least-once steps
a claimed step has a lease — if the worker dies, another re-claims it
Worker model
any worker/agent drives it: POST /next → run → complete/fail/sleep. No SDK lock-in
Lock-in
none — open API + Postgres, not Amazon States Language

Container Registry

Protocol
standard OCI Distribution API (/v2) — docker, crane, skopeo, buildkit all work
Auth
HTTP Basic — password = a koigrid token with registry:read / registry:write
Login
docker login koigrid.com -u token -p <koigrid-token>
Storage
blobs + manifests on koigrid Storage (S3/MinIO), content-addressed by digest
Isolation
images scoped per org (no cross-tenant access)
Deploy from it
push an image, then deploy it as a koigrid App — one platform
Lock-in
none — standard protocol + portable object storage

Audit Log

What
immutable record of who did what — every security/config change, per org (CloudTrail-like)
Actor
user (web/API) or agent (API token) — resolved to email/token name, with source IP
Coverage
curated from the platform event log — members, tokens, resources, deploys, DNS, firewall, billing, integrations
Filters
by category, action type, actor, resource type and date range
Export
CSV download (RFC-4180, formula-injection-safe) for compliance/SIEM
Access
owners and admins only (scope audit:read); reads never expose secrets
Lock-in
none — open API + CSV; portable, not a proprietary trail

Managed WordPress

API: /api/v1/wordpress/accounts · docs /docs · /wordpress · full endpoints + scopes in /llms.txt and OpenAPI.

Límites por plan

Plan$/moAppsDatabasesRedisCron jobsStorageDB diskBandwidth
free011121 GB1 GB100 GB
starter123111025 GB10 GB500 GB
pro3583350100 GB50 GB2048 GB
scale89201010200500 GB200 GB5120 GB