Skip to content

docs: refresh and fill in Open Terminal screenshots - #1369

Open
silentoplayz wants to merge 1 commit into
open-webui:mainfrom
silentoplayz:docs/open-terminal-screenshots-v2
Open

docs: refresh and fill in Open Terminal screenshots#1369
silentoplayz wants to merge 1 commit into
open-webui:mainfrom
silentoplayz:docs/open-terminal-screenshots-v2

Conversation

@silentoplayz

@silentoplayz silentoplayz commented Sep 1, 2026

Copy link
Copy Markdown
Collaborator

Summary

Picks up @Classic298's ask: the Open Terminal screenshots were outdated, some pages had none, and display_file was underrepresented.

This resolves 28 of the 39 screenshot TODO markers, refreshes the 24 existing images, and adds new ones. Every screenshot is a full-window 3200x1766 frame, matching the framing of the images it replaces. An earlier revision of this branch cropped the chat replies down to just the assistant message, which stripped out the sidebar, the terminal selector and the file browser panel. That was the wrong call for a product screenshot and all 19 affected frames were re-shot full-window.

Not every brief wanted a picture. Five asked for screenshots of shell output, and those are code blocks now using real output: the Open Terminal startup banner, docker stats from a container actually started with the documented --memory 2g --cpus 2 (67.57MiB / 2GiB 3.30%), and docker compose up -d. Four asked for diagrams and are now mermaid, matching the blocks already used elsewhere in the docs: container isolation, internal: true networking, Docker socket exposure, and the connection-URL diagram on connecting.md.

Three corrections came out of the pass:

  • connecting.md promised a green "Connected" indicator. There isn't one; the saved connection shows an enable toggle. Prose and alt text now match the UI.
  • file-browser.md used one generic screenshot for three different claims. Two of those now have images showing what the text actually describes, including the page-jump behaviour and the sidebar viewer.
  • The image variants table checks out: open-terminal:latest measures 3.97 GB against the documented "~4 GB".

Related issue or discussion

No linked issue. This is a documentation pass on the Open Terminal section, raised with me directly by @Classic298.

Checklist

  • I have reviewed the relevant documentation and matched the existing style.
  • This PR meets Open WebUI's contribution standards: it is accurate, relevant to users, narrowly scoped, maintainable, and not promotional content, advertising, lead generation, SEO placement, or a request to list a product, service, provider, integration, gateway, tool, or company primarily for visibility.
  • I understand that PRs that do not meet these standards may be closed without review and will not be merged. Repeated, low-quality, off-topic, promotional, or intentionally misleading submissions may result in the contributor being blocked from future participation in Open WebUI repositories.

Notes for reviewers

How the screenshots were made. Captured against a throwaway Open WebUI instance driven by Playwright, at the same 1600x883 / 2x scale as the existing set. Every artifact shown was verified on the terminal's filesystem with docker exec rather than trusting the screenshot, because the model will produce a convincing frame describing files it never created. Three frames were discarded rather than shipped, for that reason or for poor framing. The access control frame is populated with placeholder users (alice@example.com and friends) so the groups show real membership counts rather than three zeroes.

One thing worth a second opinion. OPEN_TERMINAL_ALLOWED_DOMAINS is a real dnsmasq/iptables allowlist and the domains load correctly, but the container then exits at startup:

Egress: DNS whitelist — pypi.org,github.com
  ✓ pypi.org (+ subdomains)
dnsmasq started (upstream: 1.1.1.1)
Egress firewall active — dropping CAP_NET_ADMIN permanently
unable to raise CAP_SETPCAP for BSET changes: Operation not permitted

Reproduced with --cap-add NET_ADMIN and with NET_ADMIN + SETPCAP, on rootful Docker with cgroups v2. I documented the allowlist with its real startup output and added a note about the capability requirement and this failure mode, but I did not write curl output I could not actually produce. This may be a genuine bug rather than my host, so it is worth someone confirming. The dashes in that block are verbatim program output, left unaltered.

Eleven TODOs remain, all left in place. Four need infrastructure this pass did not have:

Page Needs
database-analysis a PostgreSQL instance
research-assistant web search
multi-user two users on a MULTI_USER terminal
data-reports a generated PDF page

The rest are in configuration.md, multi-user.md and installation.mdx, which this PR leaves untouched. Their briefs ask for pictures of config files and commands those pages already print as text, so they may be better closed by a decision than by a screenshot.

npm run build passes clean.

@silentoplayz
silentoplayz force-pushed the docs/open-terminal-screenshots-v2 branch 3 times, most recently from 5a63805 to dccf78b Compare September 1, 2026 22:19

@Classic298 Classic298 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

additional infos

  1. maybe some screenshots for terminal orchestrator since that one has differences in the admin settings on what you can configure
  2. custom system prompt possible for open terminal and terminal orchestrator via env var in admin settings in the connection settings, maybe just a short note
  3. some pages i think still dont have screenshots. We can do those later, just putting this here as a side note
  4. other ideas (generally): DOCX creation, SVG creation/editing with subsequent display in chat, generally having the AI generate txt python docx pdf pptx files and having it use display_file to display those files inline in chat so you have an easy download button (download button can be highlighted with circle or similar) since that is a very common feature request and we should try to highlight that this is possible and easily so.
  5. personal preference: i really love the "find me X and display it to me" use case A) in general and B) when it even shows you the specific page where it is written on (PDF DOCX AND PPTX, for those three it will definitely work the page jumping). idk find me the page where in the manual it explains how to do XY or show me where it said that or "on one of the pages there should be an image ..." or "which of my files (have it even search the files first) has this written in it an boom it finds it an can even show you the correct page)
  6. maybe some more strongly chained workflows? combining OT with other builtin tools. Read some files and plan automations for recurring tasks, posting results to a channel, writing notes with new data, just throwing ideas out but this is definitely a follow up and out of scope here.

```
____ _____ _ _
/ __ \ |_ _| (_) | |
| | | |_ __ ___ _ __ | | ___ _ __ _ __ ___ _ _ __ __ _| |

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

necessary?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

weird example, also model doesnt end up showing anything

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

missed opportunity to have it display it with a display_file tool call

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

duplicate screenshot? 1/2

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

duplicate screenshot? 2/2

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

insanely valuable usecase, i love this, if you want put more of this since this is very valuable imho. If you want you can put more screenshots like these. finding pages in PDFs and displaying them is very valuable and also if the PDF contains PICTURES and your content extraction describes these pictures, the AI will even be able to find the images easily and therefore display you the file

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

again would rewrite prompt "list what is in it" is redundant, the AI will read it anyways or unless.. you want to say "show me what's in it" or something? idk

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks overwhelming - same file in the chat viewer looks better probably

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hard to read image, tiny text, maybe a bit more prettry chart

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

love it

Resolves 28 of the 39 screenshot TODO markers across the Open Terminal
docs, refreshes the 24 existing images, and adds new ones.

Every screenshot is a full-window 3200x1766 frame, matching the framing
of the images it replaces: the surrounding UI is the point of a product
screenshot, since it shows the terminal selector, the file browser and
where the reply appears.

Screenshots were captured against a throwaway Open WebUI instance driven
by Playwright at the same 1600x883 / 2x scale as the existing set. Every
artifact shown was verified on the terminal's filesystem rather than
against the screenshot, since the model will happily narrate files it
never created. The access control frame is populated with placeholder
users so the groups show real membership counts rather than zeroes.

Five briefs asked for pictures of shell output. Those are code blocks
now, using real output: the Open Terminal startup banner, docker stats
from a container started with the documented --memory 2g --cpus 2, and
docker compose up -d.

Four briefs asked for diagrams and are now mermaid, matching the blocks
already used elsewhere in the docs: container isolation, internal:true
networking, Docker socket exposure, and the connection-URL diagram.

Also:
- connecting.md described a green "Connected" indicator that the UI does
  not show; the saved connection appears with an enable toggle instead.
- file-browser.md reused one generic screenshot for three different
  claims; two of those now have images that show what the text describes.
- The egress filtering section gains its real startup output and a note
  about the added capability it needs.

Eleven TODOs remain and are left in place. Four need infrastructure this
pass did not have: PostgreSQL (database-analysis), web search
(research-assistant), a multi-user terminal, and a generated PDF page
(data-reports). The rest are in configuration.md, multi-user.md and
installation.mdx, whose briefs ask for pictures of commands and config
files those pages already print as text.
@silentoplayz
silentoplayz force-pushed the docs/open-terminal-screenshots-v2 branch from dccf78b to e74abfb Compare September 1, 2026 23:07
@silentoplayz

Copy link
Copy Markdown
Collaborator Author

Thanks, this was useful. All of it is in except the parts noted at the bottom.

Re-shot with the prompts rewritten

  • document-search: dropped the redundant "list what is in it".
  • display-file-deck-inline: now phrased as forgetting where the file is, close to your wording.
  • data-report-outputs: simplified to "clean up the survey data and chart the results", so it no longer reads as though you must prompt technically to get a chart.
  • ai-debug-fix: you were right that it showed nothing. The cause was mine: an earlier capture had the AI harden report.py so thoroughly that nothing was left to fix. There is now a real defect (a blank meter reading in the export) and the frame ends with the fix, the test suite passing and the report running.
  • ai-install-run: kept for the install and run placement, and system-automation now has its own frame that converts the photos and ends in a display_file call, which is the opportunity you flagged.
  • email-actions-table: shown inline in the chat instead of the file browser. Agreed it reads better.
  • data-report-chart: now an HTML page with inline SVG bars, displayed inline.
  • file-browser-home: chart regenerated at readable size.

Duplicate screenshots

Correct, and it was a regression I introduced in this PR. Making every frame full window turned ai-web-dev and ai-web-dev-files into two views of the same screen. They are split by subject now: one is the running site in the live port preview, the other is the file browser on web/.

installation.mdx "necessary?"

Trimmed. The startup banner is down to the address and key lines, which is the part the original TODO asked for.

Find it and show me the page

Added a second one on a Word document, where the file is located first and then opened at the right page. Happy to add more of these, including the PDF-with-images case you described, though that one needs content extraction that describes the images, so I would rather confirm that works before filing it as documentation.

Two that are not screenshots

The Filesystem setting already has prose: connecting.md has a ## Chat Uploads section covering exactly what it changes, and the field table links to it. I added the screenshot showing the field set to Filesystem, and left the prose alone. For the custom system prompt, OPEN_TERMINAL_SYSTEM_PROMPT is already documented under Orchestration with its placeholders, so I added a pointer from the connection settings to it rather than a second copy.

Not done here

Orchestrator admin screenshots need a real Terminals orchestrator, since Open WebUI decides the type from what the server reports and my capture instance is a plain Open Terminal. I did not want to fake the panel.

The file generation set (DOCX, SVG, PDF, PPTX shown inline with the download button highlighted) is a bigger piece of content, so I am doing it as a separate PR rather than growing this one.

Pages with no screenshots yet and the chained workflow ideas are left for the follow up, as you suggested.

@silentoplayz

Copy link
Copy Markdown
Collaborator Author

Split out the file generation set as #1370, per the scoping above.

@Classic298

Classic298 commented Sep 1, 2026

Copy link
Copy Markdown
Member

Happy to add more of these, including the PDF-with-images case you described, though that one needs content extraction that describes the images, so I would rather confirm that works before filing it as documentation.

Works. Needs content extraction engine that describes PDF as markdown and describes images in it. E.g. a custom external exctraction server that uses a vision model like gemini to describe in markdown and images in a structured way

@Classic298

Copy link
Copy Markdown
Member

Orchestrator admin screenshots need a real Terminals orchestrator, since Open WebUI decides the type from what the server reports and my capture instance is a plain Open Terminal. I did not want to fake the panel.

standalone PR would be good here

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what am i looking at here

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

omit full file path loooks unnatural

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

empty output again

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

doesnt look good, sidebar too big also

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

trim file path name

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

file path

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

file path

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why display twice

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hell yeah lgtm

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why sidebar so gigantuous

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants