# libtmux.workspace:parse-workspace

**Workspace Manager concept example** A working example of the core library. It can change without notice.

- **Package:** libtmux/workspace
- **Language:** Common Lisp
- **Kind:** function
- **Source:** https://github.com/libtmux/libtmux-lisp/blob/c2e5fc4ed3befda21f45dfa5d5868c38fd138311/src/workspace.lisp#L934
- **Public owner:** libtmux.workspace
- **Page:** https://libtmux.org/en/lisp/latest/workspace/reference/libtmux-workspace-parse-workspace/

```
(parse-workspace source &key (max-input-bytes +default-max-input-bytes+) (max-depth +default-max-depth+) (max-nodes +default-max-nodes+) (max-string-length +default-max-string-length+) (max-windows +default-max-windows+) (max-panes +default-max-panes+) (max-argv +default-max-argv+) (max-environment +default-max-environment+) (max-integer-digits +default-max-integer-digits+))
```

Parse one bounded libtmux.lisp.workspace/1 JSON string into a WORKSPACE.
The complete document uses a closed grammar, rejects duplicate members, and
never interns or evaluates external names. Limits bound UTF-8 bytes, nesting,
nodes, strings, windows, total panes, argv length, session environment pairs
(MAX-ENVIRONMENT, default 256), and integer token digits. Pane shell_command is
explicit shell source; window layout accepts a named string or a custom object.
Input and retained values are copied. Signals INVALID-WORKSPACE-DOCUMENT or
WORKSPACE-LIMIT-EXCEEDED with WORKSPACE-PATH and WORKSPACE-LIMIT diagnostics.

See also: `libtmux.workspace:make-workspace`, `libtmux.workspace:read-workspace`, `libtmux.workspace:workspace-data`.

## Parameters

- `source`
- `max-input-bytes?`
- `max-depth?`
- `max-nodes?`
- `max-string-length?`
- `max-windows?`
- `max-panes?`
- `max-argv?`
- `max-environment?`
- `max-integer-digits?`

## Guides

Pages that discuss `parse-workspace`.

- [Workspace guide](/en/lisp/latest/workspace/source-guide/)
