1.6 KiB
The Octave sandbox — needed by matlab_run
Nothing to set up beyond building the image, which docker compose up -d --build does.
This page explains what it is, because the tool is named for MATLAB and does not contain
any.
What it is
matlab_run executes code in GNU Octave, in a container with network_mode: "none" —
no interfaces, no DNS, no route anywhere. Jobs reach it through a file drop on a shared
tmpfs, not over a socket, so there is nothing listening to reach.
The tool reports three distinct verdicts, and the distinction is the point:
- it ran, and here is the output;
- it is not valid MATLAB (the linter caught a construct Octave accepts and MATLAB does
not, such as
endforor!=); - it failed for a reason that is not the code's fault.
The second one exists because the assistant is often asked about MATLAB by people who do not have it. Silently accepting Octave-only syntax would teach them something untrue.
Limits
Set in configs/owuitools.env:
| Setting | Default | What it bounds |
|---|---|---|
OWUITOOLS_OCTAVE_TIMEOUT |
25 s | one run |
OWUITOOLS_OCTAVE_MAX_TIMEOUT |
60 s | the most a caller may ask for |
Checking it
./tests/try-tool.sh matlab_run '{"code": "x = linspace(0,1,5);\ndisp(sum(x))"}'
Expect MATLAB run OK. Then try for i=1:2\n printf(\"%d\",i);\nendfor and expect
NOT VALID MATLAB.
Plots
A figure comes back as a data:image/png URI. Open WebUI hands those to the model as a
vision input and never shows them to you — so the inline_tool_images filter exists to put
the picture in the chat as well. See ../filters.md.