# Limits, defaults, and roadmap

> Runtime limits and defaults for Helix functions, storage, queues, and AI calls, plus one list of every feature that is planned but not yet shipped.

This page is the single index of what Helix can do today. Much of this documentation covers the platform as designed, and several whole subsystems described elsewhere on this site are not in the product yet. When you're unsure whether something is available, check here first and trust this page over any other.

## Runtime defaults and limits

### Functions

| Item | Value |
|---|---|
| Production runtime | Node.js 20+ on AWS Lambda, one Lambda per project with internal routing |
| CLI requirement | Node.js 24.18.0 or later |
| Function timeout | 30 s default, configurable per function; the maximum is not yet published |
| Streamed response size | 20 MB maximum (Lambda response streaming; first byte can arrive before the function finishes) |
| Buffered response size | 6 MB maximum |
| Memory | Managed by the platform, not configurable per function |
| Scaling | Lambda concurrency; scales to zero when idle, no configuration required |

Return a `Response` with a `ReadableStream` body to stream; the runtime handles the Lambda streaming setup. Note that the `output` schema is not applied to streaming responses. See the [function definition reference](/documentation/reference/functions/).

### Storage

| Item | Value |
|---|---|
| KV `getKeys` page size | 100 keys per page by default (`limit` option) |
| Files `list` page size | 100 files per page by default (`limit` option) |
| Signed URL expiry | 3600 s (1 h) by default (`expiresIn` option) |
| File size via signed URLs | No limit on individual files; uploads and downloads bypass Lambda |
| File size via `ctx.files.put()` | Bounded by Lambda memory and execution time |

### Queues

Defaults for `defineQueueConsumer`; all are configurable per consumer.

| Option | Default |
|---|---|
| `retries` | 3 |
| `backoff` | `'exponential'` |
| `backoffDelay` | 1000 ms |
| `timeout` | 30000 ms (30 s) |
| `concurrency` | 1 |
| `rateLimit` | Off unless set (`maxPerSecond`) |
| `fifo` | `false` |

### AI gateway

| Item | Value |
|---|---|
| Prompt cache lifetime | 1 h by default, scoped to project, model, and prompt hash |
| Budget warning (80%) | Email notification to project admins |
| Budget critical (95%) | Email plus Slack notification, if configured |
| Budget exceeded (100%) | All AI requests blocked until the budget resets or is increased |

### Data retention

| Item | Value |
|---|---|
| Execution logs | 30 days |

The 30-day figure comes from the July 2026 launch material. Retention for the org-wide activity trail, whether either is exportable, and any redaction policy for execution payloads are all still being confirmed with engineering; see [audit and compliance](/documentation/governance/audit-and-compliance/).

## What ships today

The whole surface you can build against right now:

| Capability | What you get |
|---|---|
| CLI | 11 commands: `auth`, `deploy`, `dev`, `env`, `init`, `login`, `logout`, `whoami`, `mcp`, `project`, `deployment`, `workspace`. See the [CLI reference](/documentation/reference/cli/) |
| Build loop | Claude Code driving the project through the CLI's MCP server, which the workflow requires |
| Storage | One project-scoped [key-value store](/documentation/guides/key-value-store/) |
| Third-party access | Authenticated calls through [aliases](/documentation/guides/connected-services/), so credentials never enter code |
| Triggers | HTTP only |
| Apps | TypeScript single-page apps, served behind login |
| Dashboards | The [builder dashboard](/documentation/governance/dashboard/) and, for org admins, the [Admin console](/documentation/governance/admin-console/) |

## Whole subsystems that are not shipped

These are real platform direction, which is why you will meet them in design material and in conversation, but none of them exist in the product today. This site documents them only here, in this table, until they ship.

| Subsystem | Status | What to do instead today |
|---|---|---|
| Managed Postgres, Drizzle, pgvector | Design | Use the key-value store, or call an external database through an authenticated HTTP API |
| Queues | Design | Do the work inline in the request |
| File storage | Design | No substitute; the key-value store caps values at 250 KB |
| AI gateway (`ctx.ai()`) | Design | Create an API Token authentication for the provider and call it with `ctx.http.authed()` |
| Scheduled and cron triggers | Planned | Call an HTTP function from an external scheduler |
| Project-exposed MCP tools | Design | The CLI's own MCP server ships and is unaffected |
| Custom domains and SSL | Design | Apps are served on their generated Helix app URL |
| SSO and IdP configuration | Design | Access is org membership plus per-project Access Control |
| In-code role rules, org policies, org middleware, agent guardrails, AI budgets | Design | The Admin console gives visibility; enforcement controls are not there yet |
| Roughly 28 further CLI commands | Design | The [CLI reference](/documentation/reference/cli/) lists every command that exists |

## Smaller gaps within shipped features

| Feature | Status | Context |
|---|---|---|
| Queue batch consumption | Planned | A `batch` option on `defineQueueConsumer` would deliver arrays of messages for high-throughput consumers; today every message is processed individually. |
| RabbitMQ and Kafka queue backends | Planned | The `rabbitmq` and `kafka` types appear in the `queues` type definition, but external queues support `redis` only today. |
| `mssql` external databases | Planned | The `mssql` type appears in the `databases` type definition, but supported external databases are `postgres` and `mysql` today. |
| `sqlite` external databases | Not planned | There is no remote use case for SQLite as an external connection. |
| Memcached and DynamoDB external KV | Planned | `kvStores` accepts `type: 'redis'` only today. |
| KV `getItems` batch read | Planned | A batch read for known keys, matching unstorage; today, use `getKeys` for keys and `getItem` per key. |
| On-premise deployment | Planned | A Kubernetes-based runtime would replace AWS Lambda with the same project structure and the same `helix deploy` command. |
| FTP and SFTP transport | Planned | `ctx.http` is HTTP-only; file transfer protocols would arrive as a separate context method with credential injection still handled by Helix. |
| Full `ctx.identity` population | Staged | In production, `ctx.identity.user.id` is reliable today; `email`, `name`, `groups`, `roles`, and `org` arrive with the full Helix Identity rollout. |
| Production scheduled jobs (cron) | Shipping soon | Listed as shipping soon in the July 2026 launch material; `helix dev` runs schedules locally today. |
| Org-wide single-pane visibility | Shipping soon | The organization-wide dashboard view is listed as shipping soon in the July 2026 launch material. |
| Configurable data residency | Planned | All data is hosted in the USA region today; region-pinning controls are specified but not yet available. |

:::note{title="Staged identity fields"}
Write code against the full `IdentityContext` shape now, but treat `user.id` as the only field guaranteed in production until the Helix Identity rollout completes. In `helix dev`, the injected dev identity always populates every field.
:::

For where these features live in the configuration surface, see the [helix.config.ts reference](/documentation/reference/configuration/).

---

Canonical: https://helix.tray.ai/documentation/reference/limits/
Any link on this page is available as markdown by appending .md to its URL.
Full corpus: https://helix.tray.ai/documentation/llms-full.txt