Yukta is pre-beta (
0.0.1-SNAPSHOT). Defaults and limits may change before v0.1.0.Workflow graph
| Limit | Value | Changed by | Explained in |
|---|---|---|---|
| Nodes per workflow | 500 | Fixed | Validation and versions |
| Edges per workflow | 2000 | Fixed | Validation and versions |
| Sub-workflow nesting depth | 5 | Fixed | Sub-workflows |
| Saved versions per workflow | 20 | Fixed | Validation and versions |
| Retry attempts per message | 1 to 10, default 3 once retry is set | engine.retry.maxAttempts | Failure handling |
| Retry delay | 200 ms first, doubling, capped at 10000 ms | engine.retry.backoffMs, maxBackoffMs | Failure handling |
| Edge buffer size | 1 to 100000 | engine.edgeBuffer.size | Per-node engine options |
| Join rule | ALL_SUCCESS | engine.trigger | Failure handling |
| Error handling | FAIL | engine.onError | Failure handling |
| Pool of a placed node | default | engine.placement.pool | Remote workers |
Admission
| Limit | Default | Changed by | Explained in |
|---|---|---|---|
| Concurrent executions, total | Off | yukta.execution.max-concurrent | Admission and limits |
| Concurrent executions per workflow | Off | yukta.execution.max-concurrent-per-workflow | Admission and limits |
| Concurrent executions per session | Off | yukta.execution.max-concurrent-per-session | Admission and limits |
| Behaviour at the limit | QUEUE | yukta.execution.on-limit | Admission and limits |
| Waiting starts | 100 | yukta.execution.queue-capacity | Admission and limits |
| Waiting starts per workflow | Off | yukta.execution.queue-capacity-per-workflow | Admission and limits |
| Priority | 0 | yukta.priority in the start payload | Admission and limits |
| Idempotency window | 10 minutes | yukta.start.idempotency-ttl | Admission and limits |
| Idempotency keys kept | 100,000 | yukta.start.idempotency-max-keys | Admission and limits |
| Supervisor command rate | 20 per second | yukta.supervisor.max-commands-per-second | Supervisors |
| Supervisor event buffer | 256 events, then events are dropped | Fixed | Supervisors |
Time
| Limit | Default | Changed by | Explained in |
|---|---|---|---|
| Queue wait | Off | yukta.execution.queue-timeout | Time limits |
| Run deadline | 3600 s | yukta.session.execution-timeout-seconds | Time limits |
| Node idle timeout | The plugin’s default, 30 s for many | timeoutSeconds on the node | Time limits |
| Element timeout | None | engine.elementTimeoutMs | Time limits |
| Node deadline | None | engine.deadlineMs | Time limits |
WAIT_FOR_SIGNAL wait | 3600 s | timeoutSeconds on the node | Approvals and signals |
| Signal sent before its node waits | Kept 10 minutes, at most 100 | Fixed | Approvals and signals |
| Server stop grace | 30 s | yukta.execution.shutdown-timeout | Deployment |
DRAIN stop | 30 s | yukta.stop.drain-timeout | Run controls |
| Script run time | 10 s | yukta.script.timeout-ms | Security |
| Script statements | 50,000,000 | yukta.script.max-statements | Security |
History, streams and results
| Limit | Default | Changed by | Explained in |
|---|---|---|---|
| Ended execution state kept | 10 minutes | yukta.tracker.cleanup-ttl | Configuration |
| Sessions held in memory | No limit | yukta.tracker.max-sessions | Configuration |
| Progress snapshots per execution | 200 | yukta.streaming.status-history-max-per-run | Observability |
| Executions with progress history | 1000 | yukta.streaming.status-history-max-executions | Observability |
| Progress history lifetime | 5 minutes | yukta.streaming.status-history-ttl-minutes | Observability |
| Result events replayed per execution | 1000 | yukta.results.retained-events | Observability |
| Result retention after last use | 1 hour | yukta.results.retention | Observability |
| Executions with results | 200 | yukta.results.max-executions | Observability |
| Log retention | 30 minutes, clamped to 1 minute to 24 hours | yukta.logs.store.retention.default-period-minutes | Observability |
| Pending log lines | 10,000, then dropped | Fixed | Capacity and performance |
| Echoed node output in logs | 2,048 characters | Fixed | Troubleshooting |
| Live log buffer per stream | 1024 lines | Fixed | Streams |
| Stream keep-alive | Every 15 s | Fixed | Streams |
| List page size | Default 500, maximum 1000 | limit query parameter | REST API overview |
| Audit list size | Default 100, 1 to 500 | limit query parameter | Security |
Durability
| Limit | Default | Changed by | Explained in |
|---|---|---|---|
| Runs kept in the execution log | 500 | yukta.execution-log.retained-runs | Persistence |
| Log compaction | After 10,000 events | yukta.execution-log.compact-after | Persistence |
Log fsync | Off | yukta.execution-log.fsync | Persistence |
| Log writer queue | 10,000 events | Fixed | Persistence |
| Executions kept restartable | 10 | yukta.restart.retained-executions | Checkpoints and resume |
| Checkpoint messages per node (memory) | 200 | yukta.restart.messages-per-node | Checkpoints and resume |
| Checkpoint bytes per node (memory) | 4 MiB (4194304) | yukta.restart.bytes-per-node | Checkpoints and resume |
| Checkpoint spill directory | Off | yukta.restart.spill-dir | Checkpoints and resume |
| Auto-resume | Off | yukta.restart.auto-resume | Checkpoints and resume |
| Resumes per run | 1 | Fixed | Checkpoints and resume |
KV_STORE entries | 10,000 | maxEntries on the node | Plugins |
| Prepared workflow cache | 10 minutes unused | workflow.cache.ttl.ms | Configuration |
| PostgreSQL statement time limit | 30 s for the log and checkpoints, 10 s for history and the lease | Fixed | Persistence |
Request size and API
| Limit | Default | Changed by | Explained in |
|---|---|---|---|
| Request body | 1 MiB | spring.codec.max-in-memory-size (YUKTA_LIMITS_MAX_BODY) | Security |
| MCP body for limited keys | 1 MiB | Fixed | Security |
| Listening address | 127.0.0.1 | server.address (YUKTA_SERVER_ADDRESS) | Security |
| Port | 8080 | server.port | Deployment |
AI and plugin safety
| Limit | Default | Changed by | Explained in |
|---|---|---|---|
| Allowed process commands | None, nothing runs | yukta.process.allowed-commands | Security |
| Allow any command | Off | yukta.process.allow-any | Security |
| MCP tool allow-list | Any tool | yukta.mcp-client.allowed-tools | Security |
| MCP tool argument size | 65536 bytes | yukta.mcp-client.max-argument-bytes | Security |
| Prompt size | No limit | yukta.llm.max-input-chars | Security |
| Prompt and answer filters | None | yukta.llm.deny-input-patterns, deny-output-patterns | Security |
| Model request rate | Off | yukta.llm.rate-limit.<provider> | AI and agents |
Workers and high availability
| Limit | Default | Changed by | Explained in |
|---|---|---|---|
| Worker lease | 15 s | yukta.workers.lease | Remote workers |
| Worker capacity | 4 attempts | yukta.workers.capacity | Remote workers |
| Worker pools | default | yukta.workers.pools | Remote workers |
| Worker plugin types | None, runs nothing | yukta.workers.plugin-types | Remote workers |
| Worker drain timeout | 30 s | yukta.workers.drain-timeout | Remote workers |
| Worker reconnect pause | 1 s growing to 30 s | Fixed | Remote workers |
| Leader lease | 15 s, renewed every 5 s | yukta.ha.lease | High availability |