### Supported path prefixes: ## | Prefix | Default path | Details ## | ${DATA_DIR} | ~/.local/share/obelisk | https://docs.rs/directories/5.0.1/directories/struct.ProjectDirs.html#method.data_dir ## | ${CACHE_DIR} | ~/.cache/obelisk | https://docs.rs/directories/5.0.1/directories/struct.ProjectDirs.html#method.cache_dir ## | ${CONFIG_DIR}| ~/.config/obelisk | https://docs.rs/directories/5.0.1/directories/struct.ProjectDirs.html#method.config_dir ## Server configuration api_listening_addr = "127.0.0.1:5005" # Address and port on which the API server will listen. # sqlite.file = "${DATA_DIR}/obelisk.sqlite" # Path to sqlite database. Supports path prefixes. # oci.wasm_directory = "${CACHE_DIR}/wasm" # Path to directory where wasm files downloaded from an OCI registry are stored. Supports path prefixes. ## Comment out the `codegen_cache` table to disable the codegen cache. [codegen_cache] # directory = "${CACHE_DIR}/codegen" # Path to directory where generated code is cached. Supports path prefixes. ### WASM Component configuration ## Common settings for all components # name = "name" # Each component must be named. ## Location can be a file path or an OCI registry reference. # location.path = "path/to/wasm" # location.oci = "docker.io/repo/image:tag" # content_digest = "sha256:AA.." # Optional. If specified, the WASM file must have a matching hash. ## Common executor settings # exec.batch_size = 5 # Number of executions to lock for every event loop tick. # exec.lock_expiry.secs = 1 # Each execution is locked for 1s by default. # exec.tick_sleep.millis = 200 # Sleep between event loop ticks. ### WASM Activity components configuration # [[activity_wasm]] ## Common settings for all components - see above. ## Common executor settings - see above. ## Specific settings for activity_wasm: # default_max_retries = 5 # When calling the activity directly, `default_max_retries` is applied. # default_retry_exp_backoff.millis = 100 # Exponential backoff setting. ## Guest std stream forwarding to host: one of "stdout","stderr","none". Default is "none". # forward_stdout="stderr" # forwards stdout to host's stderr # forward_stderr="stderr" # forwards stderr to host's stderr ## Environment variables: Set to a specific value or forward from the host. Default is empty. # env_vars = ["ENV1", "ENV2=somevalue"] ### Workflow components configuration # [[workflow]] ## Common settings for all components - see above. ## Common executor settings - see above. ## Joining strategy: When workflow requests a child execution result, it can either be interrupted, or kept in the memory. ## When "interrupt" is selected, after every child execution result the whole event history must be replayed. # join_next_blocking_strategy = "await" # Default strategy is "await"/ # child_max_retries_override = 10 # When calling an activity, overrides its default `default_max_retries` # child_retry_exp_backoff_override.millis = 200 # When calling an activity, overrides its default `default_retry_exp_backoff` # non_blocking_event_batching = 100 # Number of non-blocking events that can be cached and written in a batch. ### Webhook section # [[http_server]] # name = "external" # listening_addr = "0.0.0.0:8080" # request_timeout.secs = 1 # # [[webhook_component]] ## Common settings for all components - see above. # http_server = "external" # link to a `http_server`'s name ### Routes section ## An array of routes that will be matched against incoming requests. ## Only the path portion of a URL is taken into cosideration, the query part ## ("?a=b") is ignored by the matcher. ## Syntax of a route: ## "/path" - forwards requests with matching method and exactly matching path. ## { methods = ["GET"], route = "/some/path" } - All methods are matched. ## "/status/:param1/:param2" - When URL matches, `param1` and `param2` values will be exposed as env vars. ## "" - Fallback pattern. ## For details about the matching engine please see https://docs.rs/route-recognizer/latest/route_recognizer/ # routes = [{ methods = [ "GET" ], route = "/some"}, "/other"] ## Guest std stream forwarding to host: one of "stdout","stderr","none". Default is "none". # forward_stdout="stderr" # forwards stdout to host's stderr # forward_stderr="stderr" # forwards stderr to host's stderr ## Environment variables: Set to a specific value or forward from the host. Default is empty. # env_vars = ["ENV1", "ENV2=somevalue"] [[activity_wasm]] name = "fibo_activity" location.oci = "docker.io/getobelisk/example_activity_fibo:2024-10-04@sha256:b0915e6bae3083a0dceec80497510c0faf4f5cad71202864da0a99eee2e2bbc2" default_max_retries = 0 [[workflow]] name = "fibo_workflow" location.oci = "docker.io/getobelisk/example_workflow_fibo:2024-10-08@sha256:a1293a75704d56602881caaea42b92d11cd88fc7258a3ac30d41a9bc73614483" exec.lock_expiry.secs = 2 [[activity_wasm]] name = "http_get_activity" location.oci = "docker.io/getobelisk/example_activity_http_get:2024-09-28@sha256:80bfc8e64fe241040b7c2f11fc6d109cf9b04cddc53404ed2fe71c61aa3b0fdc" forward_stdout = "stderr" forward_stderr = "stderr" [[workflow]] name = "http_get_workflow" location.oci = "docker.io/getobelisk/example_workflow_http_get:2024-10-06@sha256:9068bd715a696a33e352268eb3d0da060e460057730314e41c957983b6237241" [[http_server]] name = "external" listening_addr = "0.0.0.0:9090" [[webhook_component]] name = "webhook_fibo" location.oci = "docker.io/getobelisk/example_webhook_fibo:2024-10-06@sha256:f36a137c558710989a20f4255db28c4941f3e29e10019b7b09dbb9cbfc2947e5" http_server = "external" routes = [{ methods = ["GET"], route = "/fibo/:N/:ITERATIONS" }] [[activity_wasm]] name = "sleep_activity" location.oci = "docker.io/getobelisk/example_activity_sleep:2024-10-06@sha256:af19908f9675e7c14740d3f8428ecbf3f41a2a914cd33bb8af808be3d6e30526" exec.lock_expiry.secs = 10 [[workflow]] name = "sleep_workflow" location.oci = "docker.io/getobelisk/example_workflow_sleep:2024-10-06@sha256:c1146d25019c5caaa6bb1fc77f1c40eb897e22372dc0c496b16735fc6446d40d" ## Send spans via gRPC to an OTLP collector. ## Defaults: # [otlp] # level = "info,app=debug" # service_name = "obelisk-server" # otlp_endpoint = "http://localhost:4317" # Stdout configuration, by default logs INFO and above. # Comment the table to disable stdout logging. [log.stdout] ## Defaults: # level = "info,app=debug" # style = "plain_compact" # One of "plain","plain_compact","json" # span = "none" # One of "none","new","enter","exit","close","active","full" # target = false ## Sample (rolling) file configuration # [log.file] # level = "info,obeli=debug,app=trace" # style = "json" # span = "close" # target = true # rotation = "daily" # directory = "." # prefix = "obelisk_server_daily"