Documentation Index
Fetch the complete documentation index at: https://oxy.tech/docs/llms.txt
Use this file to discover all available pages before exploring further.
New Features
Data App Publish/Draft Paradigm
Data App authors now control which apps surface in the sidebar with apublished flag, so works-in-progress no longer leak into navigation for the rest of the workspace.
- Sidebar shows published apps only — The sidebar fetches only published apps by default. All apps remain accessible from the IDE Objects view, so drafts stay editable without cluttering team navigation.
- Per-app publish state in YAML — A new
published: boolfield on.app.ymlcontrols visibility. Defaults tofalse, so apps stay drafts until explicitly published. - Role-based publishing —
POST /:projectId/apps/:pathb64/publishandPOST /:projectId/apps/:pathb64/unpublishtoggle the state. Owners, Admins, and Members can publish; Viewers cannot. Thelist_appsresponse includes acan_publishflag derived from the caller’s workspace role so the UI can adapt actions per user. - Draft indicator in the IDE — Apps that aren’t published show a draft state in the IDE Objects list, making it easy to see at a glance which apps haven’t been promoted yet.
Airway ELT Pipelines
Oxy ships a first-class Airway ELT integration: a queue-driven streaming pipeline subsystem with a Developer-Portal UI to create, run, and monitor ingestion jobs..airway.ymlpipeline spec — Define a pipeline by pointingsource(rest_api,filesystem,sql_database,postgres_cdc,toast) at adestinationthat references a database fromconfig.yml. Credentials stay in the secret manager —.airway.ymlnever holds them. minijinjavariablesmake pipelines configurable.- Streaming by default — Concurrent extract→sink with per-resource producers, bounded channels, and per-batch commits. Partial failures are recorded as durable
completed_with_errorsaudits instead of failing the whole run. A rich event taxonomy (PipelinePlan,ExtractStarted/Progress,Normalize*,TableLoadStarted/LoadProgress/TableLoaded/TableLoadFailed,ResourceFailed) drives the lineage view. - Pipelines section in the Developer Portal — A dedicated Pipelines entry in the IDE left rail (
/ide/pipelines) lists pipelines, embeds a monitor view (phase bar + per-resource grid + run history), and jumps straight to YAML edit. A 3-step New Pipeline card wizard walks through source → destination-from-config.yml → details, with Toast credentials persisted to the secret manager. oxy airway runCLI — Run pipelines from the terminal in addition to the UI. The same streaming event stream is surfaced for both entry points.- Airhouse and Airhouse-managed destinations — Pipeline destination resolution understands
airhouseandairhouse_managedtargets and brokers credentials through the system-account token broker at runtime.
Airhouse Observability Backend
Oxy now supports Airhouse as a fourth observability backend alongside DuckDB, Postgres, and ClickHouse, so teams can dogfood Airhouse for trace, intent-classification, and metric-usage storage.OXY_OBSERVABILITY_BACKEND=airhouse— Routes spans, intent classifications, intent clusters, and metric usage to an Airhouse instance over the pgwire protocol. Tables are namespaced with anoxy_obs_prefix to avoid collisions with user tables.- Full observability surface — All 25
ObservabilityStoremethods are implemented in DuckDB-dialect SQL, so trace listing, detail, cluster mapping, metric usage, and execution analytics all light up against Airhouse. - TLS by default with secure reconnect — TLS via
tokio-postgres-rustlsis the default;OXY_AIRHOUSE_OBS_INSECURE=trueopts into plaintext for localhost only. A background reconnect loop with exponential backoff (200 ms → 30 s) keeps the connection healthy through restarts. - Batched span writes — Spans are inserted as multi-row
INSERT … VALUESbatches of up to 500 rows per chunk, keeping write overhead low under high trace volume.
Platform Improvements
Builder Reliability
- Accurate file-change events for auto-applied edits —
FileChangedevents are now emitted for both suspended (user-accepted) and auto-accepted Builder file changes by comparing pre- and post-operation file contents. The frontend no longer misses approvals when the Builder writes through delegated tools. - Revert auto-applied Builder edits — A new
POST /runs/:id/revert-file-changesendpoint reverts one or more files changed by the Builder during a run, giving users a clean way to undo unwanted auto-applied edits without manual diffing. - Clearer error messages on pipeline failures — Builder and analytics pipeline failures (especially configuration and semantic errors) now surface structured, user-friendly error messages instead of raw error strings, so the cause shows up directly in the UI.
- No more hung Builder runs on broken semantics — The SSE stream now always emits a terminal event (
done,error, orcancelled) at the end of a run, even when the pipeline fails before the orchestrator loop starts (e.g., a broken.view.yml). The frontend no longer hangs waiting for a terminal event that never arrived.
Workflow Run Orchestration
- New
/workflowsHTTP API — A new HTTP surface for starting, listing, cancelling, and inspecting workflow runs, and browsing workflow files programmatically. The SSE event stream recognises workflow terminal events for proper client-side cleanup. - Workflow run caching and retry-from-step — Workflow tasks now support
cache_enabledfor hash-based step skipping andretry_from_run_idfor resuming a run from a specific step forward, making long workflows cheaper to iterate on after a partial failure. - Workflow file-listing errors are now logged — The
OxyProcedureRunnerpreviously swallowed errors fromlist_workflow_files()and returned an empty list silently. Failures now log awarn!with details, making missing-procedures diagnoses far easier in production.
Web App Resilience
- ErrorBoundary around third-party renderers — SQL editors, diff and merge-conflict viewers, Monaco-based editors, workflow diagrams, the context graph, and Markdown answer content are now individually wrapped with
ErrorBoundaryand a consistentErrorAlertfallback. A broken renderer on one panel no longer blanks the entire page. - Git actions hidden when Git isn’t available — The IDE header’s Git actions button now hides itself in workspaces that don’t support branch switching, instead of showing inert controls.
- Deferred Monaco theme application — Monaco no longer immediately forces the
github-darktheme after defining it, letting the design system’s Light/Dark/System toggle drive editor theming.
Local-Mode Onboarding
- Onboarding wizard state scoped per project directory — Wizard progress in
oxy --localis now keyed by a deployment-stablestorage_key(local:{hash(canonical_path)}) instead of a sharedLOCAL_WORKSPACE_ID. Runningoxy --localin two different project directories on the same dev port no longer leaks wizard state between them. - Credential-driven onboarding redirect — Local-mode users with a populated project but an unset
ANTHROPIC_API_KEY(or any missing non-DuckDB warehouse credential) are now routed to the lightweight credential wizard, instead of falling through into the full from-scratch BlankOnboardingPage. No behavioural change forapp.oxy.techusers — cloud onboarding state remains keyed by workspace UUID.
Performance
- Faster thread history with many runs —
get_thread_history_with_eventsno longer issues an N+1 fan-out of per-run event queries. Events for all runs are now fetched in a single batched query and run state is computed from the in-memory event data, eliminating a per-run database round-trip when loading busy threads.
Observability Storage
- Bounded DuckDB WAL growth — The DuckDB observability backend now runs periodic 5-minute WAL checkpoints, autocheckpoints at 32 MB (down from 512 MB), and runs an explicit checkpoint on graceful shutdown. The WAL file no longer grows unbounded when the process is killed without a clean shutdown (e.g., a Kubernetes liveness-probe SIGKILL).
- Env-var credentials restored for the Airhouse observability backend — Reverted a regression where the Airhouse observability backend tried to mint credentials through a workspace-scoped broker that has no observability tenant provisioned.
OXY_AIRHOUSE_OBS_USER,OXY_AIRHOUSE_OBS_PASSWORD, andOXY_AIRHOUSE_OBS_DATABASEare the correct configuration surface again; the reconnect-on-credential-refresh plumbing stays in place for a future proper observability-tenant design. - Airhouse observability schema now initializes cleanly — The Airhouse observability backend no longer aborts during schema setup on its first
CREATE INDEXstatement (DuckLake doesn’t implement indexes). All four observability tables — spans, intent clusters, intent classifications, and metric usage — are now created reliably on startup, so trace and metric capture work end-to-end against Airhouse instead of silently going inert after the first table.