# `ClaudeWrapper.DuplexSession.Adapter.Forcola`
[🔗](https://github.com/genagent/claude_wrapper_ex/blob/v0.14.4/lib/claude_wrapper/duplex_session/adapter/forcola.ex#L2)

Bounded duplex transport backed by `Forcola.Duplex`.

The `DuplexSession` process owns the Forcola session directly, so its
death closes the child's process group. A separate puller demands one
stdout or stderr line at a time and waits for the session to acknowledge
it before demanding another. Stderr is kept out of the NDJSON parser.

Select this optional adapter with `adapter: __MODULE__` or set
`config :claude_wrapper, duplex_adapter: __MODULE__`. It requires
`forcola ~> 0.4.0` and a POSIX host.

`:adapter_opts` accepts `:max_line_bytes`, `:max_output_bytes`, and
`:max_pending_bytes` (defaults: 1 MiB, 64 MiB, and one line plus its
newline), plus `:stderr_capture_bytes` for the wrapper's bounded stderr
tail (default 16 KiB). `:terminal_recipient` can name an independent
process that receives Forcola's terminal record even if the session
owner dies. `:kill_grace_ms`, `:cgroup`, and `:shim_path` are passed
through. Pull delivery and separate stderr are always enabled.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
