Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
title: Client.configure_logging
icon: laptop-code
---

```python
def Client.configure_logging(
level: int,
runner_level: int | None = None,
) -> None
```

Configure the log level for logs exported by this workflow client.

## Parameters

<ParamField path="level" type="int" required>
Logging level for task logs emitted with `context.logger`, for example `logging.INFO` or `logging.DEBUG`.
</ParamField>

<ParamField path="runner_level" type="int | None">
Logging level for internal task runner logs. If omitted, the value of `level` is used.
</ParamField>

## Returns

`None`

<RequestExample>
```python Python
import logging

from tilebox.workflows import Client

client = Client(name="sentinel-2-runner")
client.configure_logging(level=logging.DEBUG, runner_level=logging.INFO)
```
</RequestExample>
22 changes: 20 additions & 2 deletions api-reference/python/tilebox.workflows/Client.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,12 @@ icon: code
---

```python
class Client(url: str, token: str)
class Client(
*,
url: str = "https://api.tilebox.com",
token: str | None = None,
name: str | None = None,
)
```

Create a Tilebox workflows client.
Expand All @@ -19,6 +24,10 @@ Create a Tilebox workflows client.
The API Key to authenticate with. If not set the `TILEBOX_API_KEY` environment variable will be used.
</ParamField>

<ParamField path="name" type="string | None">
Optional service name for workflow telemetry. If not set, the default service name is used.
</ParamField>

## Sub clients

The workflows client exposes sub clients for interacting with different parts of the Tilebox workflows API.
Expand All @@ -41,6 +50,14 @@ def Client.automations() -> AutomationClient

A client for scheduling automations.

## Logging

```python
def Client.configure_logging(level: int, runner_level: int | None = None) -> None
```

Configure which task and runner logs this client exports. See [`Client.configure_logging`](/api-reference/python/tilebox.workflows/Client.configure_logging).

## Task runners

```python
Expand All @@ -59,7 +76,8 @@ client = Client()
# or provide connection details directly
client = Client(
url="https://api.tilebox.com",
token="YOUR_TILEBOX_API_KEY"
token="YOUR_TILEBOX_API_KEY",
name="sentinel-2-runner",
)

# access sub clients
Expand Down
39 changes: 39 additions & 0 deletions api-reference/python/tilebox.workflows/ExecutionContext.logger.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
title: Context.logger
icon: folder-gear
---

```python
ExecutionContext.logger: StructuredLogger
```

Structured logger for logs emitted by the currently executing task.

## Methods

```python
context.logger.debug(message, /, *args, **attributes) -> None
context.logger.info(message, /, *args, **attributes) -> None
context.logger.warning(message, /, *args, **attributes) -> None
context.logger.error(message, /, *args, **attributes) -> None
context.logger.exception(message, /, *args, **attributes) -> None
context.logger.critical(message, /, *args, **attributes) -> None
context.logger.bind(**attributes) -> StructuredLogger
```

Structured attributes are attached to the log record and become searchable telemetry attributes.

<RequestExample>
```python Python
from tilebox.workflows import ExecutionContext, Task

class ProcessScene(Task):
scene_id: str

def execute(self, context: ExecutionContext) -> None:
context.logger.info("Started", scene_id=self.scene_id)

log = context.logger.bind(component="download")
log.debug("Fetching input")
```
</RequestExample>
32 changes: 32 additions & 0 deletions api-reference/python/tilebox.workflows/ExecutionContext.tracer.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
title: Context.tracer
icon: folder-gear
---

```python
ExecutionContext.tracer: WorkflowTracer
```

Tracer for creating custom spans inside the currently executing task.

## Methods

```python
context.tracer.span(name: str, *args, **kwargs) -> ContextManager[Span]
context.tracer.current_span() -> Span
```

Custom spans are nested under the current task span and are exported to Tilebox with the job trace.

<RequestExample>
```python Python
from tilebox.workflows import ExecutionContext, Task

class ProcessScene(Task):
scene_id: str

def execute(self, context: ExecutionContext) -> None:
with context.tracer.span("download-scene") as span:
span.set_attribute("scene_id", self.scene_id)
```
</RequestExample>
33 changes: 33 additions & 0 deletions api-reference/python/tilebox.workflows/JobClient.query_logs.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
title: JobClient.query_logs
icon: rectangle-terminal
---

```python
def JobClient.query_logs(job_id: Job | UUID | str) -> LogRecords
```

Query logs emitted while running a job. Pagination is handled automatically.

## Parameters

<ParamField path="job_id" type="Job | UUID | str" required>
The job, job ID, or job ID string to query logs for.
</ParamField>

## Returns

A `LogRecords` list. Each `LogRecord` contains `time`, `severity_number`, `severity_text`, `body`, `trace_id`, `span_id`, `attributes`, and `runner_attributes`.

`LogRecords.to_pandas()` converts the records to a pandas DataFrame.

<RequestExample>
```python Python
logs = client.jobs().query_logs(job)

for record in logs:
print(record.time, record.severity_text, record.body)

df = logs.to_pandas()
```
</RequestExample>
33 changes: 33 additions & 0 deletions api-reference/python/tilebox.workflows/JobClient.query_spans.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
title: JobClient.query_spans
icon: chart-gantt
---

```python
def JobClient.query_spans(job_id: Job | UUID | str) -> Spans
```

Query spans emitted while running a job. Pagination is handled automatically.

## Parameters

<ParamField path="job_id" type="Job | UUID | str" required>
The job, job ID, or job ID string to query spans for.
</ParamField>

## Returns

A `Spans` list. Each `Span` contains `start_time`, `end_time`, `duration`, `trace_id`, `span_id`, `parent_span_id`, `name`, `status_code`, `status_message`, `attributes`, `runner_attributes`, and `events`.

`Spans.to_pandas()` converts the spans to a pandas DataFrame and includes a computed `duration` column.

<RequestExample>
```python Python
spans = client.jobs().query_spans(job.id)

for span in spans:
print(span.name, span.status_code, span.duration)

df = spans.to_pandas()
```
</RequestExample>
Binary file added assets/changelog/2026-05-observability-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/changelog/2026-05-observability-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/console/api-keys-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/console/api-keys-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/console/automation-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/console/automation-edit-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/console/automation-edit-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/console/automation-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/console/automations-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/console/automations-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/console/cluster-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/console/cluster-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/console/datapoint-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/console/datapoint-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/console/datasets-create-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/console/datasets-create-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/console/datasets-create-temporal-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/console/datasets-create-temporal-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/console/datasets-documentation-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/console/datasets-documentation-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/console/datasets-explorer-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/console/datasets-explorer-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/console/datasets-overview-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/console/datasets-overview-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/console/job-execution-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/console/job-execution-light.png
Binary file added assets/console/job-logs-dark.png
Binary file added assets/console/job-logs-light.png
Binary file modified assets/console/storage-event-dark.png
Binary file modified assets/console/storage-event-light.png
Binary file modified assets/console/usage-dark.png
Binary file modified assets/console/usage-light.png
2 changes: 1 addition & 1 deletion authentication.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ icon: key

## Creating an API key

To create an API key, log into the [Tilebox Console](https://console.tilebox.com). Navigate to [Account -> API Keys](https://console.tilebox.com/account/api-keys) and click the "Create API Key" button.
To create an API key, log into the [Tilebox Console](https://console.tilebox.com). Navigate to [Settings -> API Keys](https://console.tilebox.com/settings/api-keys) and click the "Create API Key" button.

<Info>
Keep your API keys secure. Deactivate any keys if you suspect they have been compromised.
Expand Down
15 changes: 15 additions & 0 deletions changelog.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,21 @@ description: A chronological record of new features, improvements, and other not
icon: rss
---

<Update label="May 2026">
<Frame>
<img src="/assets/changelog/2026-05-observability-light.png" alt="Job Execution Trace View" className="dark:hidden" />
<img src="/assets/changelog/2026-05-observability-dark.png" alt="Job Execution Trace View" className="hidden dark:block" />
</Frame>

## Workflow Observability

Tilebox Workflows now includes built-in observability for jobs and task runners. Tilebox captures workflow logs, traces, task status, and runner context, then correlates them with jobs and tasks.

The Console includes a built-in explorer for workflow observability, so you can inspect task logs, trace timing, failures, and runner behavior from the job view.

See the [Workflow observability documentation](/workflows/observability/introduction) for examples and integration options.
</Update>

<Update label="February 2026">
<Frame>
![Optional Tasks](/assets/changelog/2026-02-optional-tasks.png)
Expand Down
18 changes: 16 additions & 2 deletions docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,18 @@
"group": "Observability",
"icon": "eye",
"pages": [
"workflows/observability/open-telemetry",
"workflows/observability/introduction",
"workflows/observability/tracing",
"workflows/observability/logging"
"workflows/observability/logging",
"workflows/observability/query",
{
"group": "Integrations",
"icon": "plug",
"pages": [
"workflows/observability/integrations/open-telemetry",
"workflows/observability/integrations/axiom"
]
}
]
},
{
Expand Down Expand Up @@ -187,8 +196,11 @@
"api-reference/python/tilebox.workflows/Client",
"api-reference/python/tilebox.workflows/Task",
"api-reference/python/tilebox.workflows/Client.runner",
"api-reference/python/tilebox.workflows/Client.configure_logging",
"api-reference/python/tilebox.workflows/TaskRunner.run_all",
"api-reference/python/tilebox.workflows/TaskRunner.run_forever",
"api-reference/python/tilebox.workflows/ExecutionContext.logger",
"api-reference/python/tilebox.workflows/ExecutionContext.tracer",
"api-reference/python/tilebox.workflows/ExecutionContext.submit_subtask",
"api-reference/python/tilebox.workflows/ExecutionContext.submit_subtasks",
"api-reference/python/tilebox.workflows/ExecutionContext.job_cache",
Expand All @@ -203,6 +215,8 @@
"api-reference/python/tilebox.workflows/JobClient.retry",
"api-reference/python/tilebox.workflows/JobClient.cancel",
"api-reference/python/tilebox.workflows/JobClient.visualize",
"api-reference/python/tilebox.workflows/JobClient.query_logs",
"api-reference/python/tilebox.workflows/JobClient.query_spans",
"api-reference/python/tilebox.workflows/JobClient.query"
]
}
Expand Down
2 changes: 1 addition & 1 deletion guides/datasets/access-sentinel2-data.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description: Query Sentinel-2 satellite imagery metadata from a Tilebox dataset,
icon: database
---

This guide assume you already [signed up](https://console.tilebox.com/sign-up) for a Tilebox account (free) and [created an API key](https://console.tilebox.com/account/api-keys).
This guide assume you already [signed up](https://console.tilebox.com/sign-up) for a Tilebox account (free) and [created an API key](https://console.tilebox.com/settings/api-keys).

## Install Tilebox package

Expand Down
4 changes: 2 additions & 2 deletions quickstart.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ If you prefer to work locally, follow these steps to get started.
</Tip>
</Step>
<Step title="Create an API Key">
Create an API key by logging into the [Tilebox Console](https://console.tilebox.com), navigating to [Account -> API Keys](https://console.tilebox.com/account/api-keys), and clicking the "Create API Key" button.
Create an API key by logging into the [Tilebox Console](https://console.tilebox.com), navigating to [Settings -> API Keys](https://console.tilebox.com/settings/api-keys), and clicking the "Create API Key" button.

<Frame>
<img src="/assets/console/api-keys-light.png" alt="Tilebox Console" className="dark:hidden" />
Expand Down Expand Up @@ -138,7 +138,7 @@ If you prefer to work locally, follow these steps to get started.
```
</Step>
<Step title="Create an API Key">
Create an API key by logging into the [Tilebox Console](https://console.tilebox.com), navigating to [Account -> API Keys](https://console.tilebox.com/account/api-keys), and clicking the "Create API Key" button.
Create an API key by logging into the [Tilebox Console](https://console.tilebox.com), navigating to [Settings -> API Keys](https://console.tilebox.com/settings/api-keys), and clicking the "Create API Key" button.

<Frame>
<img src="/assets/console/api-keys-light.png" alt="Tilebox Console" className="dark:hidden" />
Expand Down
2 changes: 1 addition & 1 deletion workflows/concepts/task-runners.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -366,4 +366,4 @@ This mechanism ensures that scenarios such as power outages, hardware failures,

## Observability

Task runners are continuously running processes, making it essential to monitor their health and performance. You can achieve observability by collecting and analyzing logs, metrics, and traces from task runners. Tilebox Workflows provides tools to enable this data collection and analysis. To learn how to configure task runners for observability, head over to the [Observability](/workflows/observability) section.
Task runners are continuously running processes, making it essential to monitor their health and performance. Tilebox Workflows collects logs and traces from task runners automatically. To learn how to inspect and customize workflow observability, see [Observability](/workflows/observability/introduction).
Loading