> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mirage.strukto.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Jaeger

> Read Jaeger services, operations, and traces as read-only JSON files.

For connection setup, see [Jaeger Setup](https://docs.mirage.strukto.ai/home/setup/jaeger.md).
For the Python SDK, see [Jaeger (Python)](https://docs.mirage.strukto.ai/python/vfs/jaeger.md).

```typescript theme={null}
import { JaegerVFS, MountMode, Workspace } from '@struktoai/mirage-node'

const ws = new Workspace({
  '/jaeger': new JaegerVFS({ host: 'http://localhost:16686' }),
}, { mode: MountMode.READ })

const res = await ws.shell('ls /jaeger/services')
console.log(res.stdoutText)
await ws.close()
```

The VFS ships in `@struktoai/mirage-node` only; `@struktoai/mirage-browser`
does not export it. In a YAML config or `buildVfs('jaeger', ...)`, the same
fields are snake\_case (`default_trace_limit`).

## Config

| Field | Description |
| - | - |
| `host` default `'http://localhost:16686'` | Jaeger query service URL. |
| `defaultTraceLimit` default `100` | The most traces one service's `traces/` listing shows, newest first. An older trace is still readable by its id. |
| `defaultFromTimestamp` | Lower bound of trace listings, an ISO 8601 timestamp. Unset searches from the beginning. |
| `defaultToTimestamp` | Upper bound of trace listings, an ISO 8601 timestamp. Unset means now. |
| `timeout` default `DEFAULT_TIMEOUT` | Seconds a request may wait to connect, or between two reads of its answer, before it fails; a download that keeps flowing is never cut off. |

## VFS.md

The [VFS.md](https://docs.mirage.strukto.ai/home/setup/vfs-md.md) an agent reads with Jaeger mounted at `/<path>`.

> [tab] Rendered
>
> ### Virtual Filesystem
>
> | Path | Description |
> | - | - |
> | `/<path>` | `jaeger`, read |
>
> #### `/<path>` layout
>
> ```text theme={null}
> /<path>
>   services/
>     <service-name>/
>       operations.json
>       traces/
>         <trace-id>.json
> ```
>
> #### Supported Unix Commands for VFS
>
> Unix commands work on each path as on a local filesystem, as far as the path supports them:
>
> | Path | Supported |
> | - | - |
> | `/<path>` | Commands that read files (`ls`, `cat`, `grep`, `find`, `jq` and the rest). |
>
> #### Limitations of Unix Commands for VFS
>
> Where a path differs from a local filesystem:
>
> | Path | Limitations |
> | - | - |
> | `/<path>` | Read only: no command changes files. `grep -r`, `find` and `du` stop after 1000 files; a glob matching more, `tar -c`, `cp -r` and `rm -r` are refused. |
>
> Run `man <cmd>` or `<cmd> --help` for one command's usage.

> [tab] Raw
>
> ````markdown theme={null}
> ---
> name: workspace-filesystem
> description: The virtual filesystem layout of this workspace.
> ---
>
> # Virtual Filesystem
>
> | Path | Description |
> | --- | --- |
> | `/<path>` | `jaeger`, read |
>
> ## `/<path>` layout
>
> ```text
> /<path>
>   services/
>     <service-name>/
>       operations.json
>       traces/
>         <trace-id>.json
> ```
>
> ## Supported Unix Commands for VFS
>
> Unix commands work on each path as on a local filesystem, as far as the path supports them:
>
> | Path | Supported |
> | --- | --- |
> | `/<path>` | Commands that read files (`ls`, `cat`, `grep`, `find`, `jq` and the rest). |
>
> ## Limitations of Unix Commands for VFS
>
> Where a path differs from a local filesystem:
>
> | Path | Limitations |
> | --- | --- |
> | `/<path>` | Read only: no command changes files. `grep -r`, `find` and `du` stop after 1000 files; a glob matching more, `tar -c`, `cp -r` and `rm -r` are refused. |
>
> Run `man <cmd>` or `<cmd> --help` for one command's usage.
> ````

## Layout reference

| Path | Contents |
| - | - |
| `services/` | One directory per service Jaeger's `/api/services` reports, including Jaeger's own `jaeger` service when it traces itself |
| `services/<service>/operations.json` | The operation records `/api/operations` returns for the service |
| `services/<service>/traces/<trace-id>.json` | The trace document `/api/traces/<trace-id>` returns |

The `traces/` listing shows the newest `defaultTraceLimit` traces of the
service within `defaultFromTimestamp` and `defaultToTimestamp`. Unset bounds
search from the beginning up to now. A trace older than the listing is still
readable by its id, as long as one of its spans comes from that service.

A service Jaeger does not know, a trace id that is not 16 or 32 hex digits, and
a trace without a span from the addressed service are reported as missing
paths. Every listed file has an exact size, so `ls -l`, `du`, and `stat` work
without reading the files. The mount has no write operations.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.