Researcher Notes // Field Observations

Experiment 06 — designated B.L.I.S.S. — began as a perfectly reasonable desire to browse files through a web browser and escalated, as things here tend to do, into a full operating-system-style desktop experience running inside a Docker container. The lab is not sorry. The lab is, in fact, rather pleased with itself. It has since escalated further.

The apparatus presents as a windowed desktop environment in your browser, complete with draggable and resizable windows, a taskbar with snap-assist layout management, multiple view modes, and a sidebar with pinnable locations. It browses, uploads, downloads, creates folders, renames, deletes, copies, cuts, pastes, and zips. It supports wallpapers. It has themes. It has a right-click context menu. And now — following a research session that the lab describes as "focused and only slightly unhinged" — it has a full text editor.

The editor opens directly in the browser as a proper draggable, resizable window — with its own taskbar button, and snap-assist compatibility. It features live syntax highlighting for over 30 languages via a contenteditable overlay technique that eliminates cursor drift entirely (the lab spent too much time chasing the cursor with a net and decided to prioritize that). Find-in-file, word wrap, line numbers, font size, and keyboard shortcuts are all present. Your files never leave your machine. The container handles only the interface. Settings persist server-side. The experiment is, structurally, a model of restraint — functionally, it is something else entirely.

Chief Science Officer's note: "B.L.I.S.S. was built because the lab wanted it. The lab builds things it wants. This is a core operating principle and we do not anticipate changing it. You may configure up to five storage locations. The lab is aware this will not be enough for some of you. The editor, however, will handle whatever you put in front of it. It has been tested."
Designation B.L.I.S.S.
Experiment No. BL-006
Status ACTIVE / STABLE
Type Infrastructure / File Manager
Delivery Docker Container
Hazard Rating MINIMAL
Data Egress NONE — SELF-HOSTED
Port (Default) 8008
Storage Mounts Up to 5
Themes WHODASH / DARK
Text Editor INTEGRATED
Syntax Highlight 30+ LANGUAGES
Observation Log
BL-006-1A File browser operational. Windows drag. Lab satisfied.
BL-006-4C Context menus, bulk ops, ZIP support added. Lab still satisfied.
BL-006-8F Wallpaper system deployed. Lab is now decorating.
BL-006-11B Settings persist across sessions. Containment: nominal.
BL-006-14E Text editor integrated. Draggable. Snap-assisted. Syntax highlighted. The lab got carried away.
BL-006-15A Cursor drift eliminated. contenteditable approach confirmed superior. Previous approach: filed under Lessons.
01

Capabilities &
Feature Set

What B.L.I.S.S. can do. The lab recommends reading this section before forming any opinions about what it cannot.

Desktop Window Environment
Multiple windows, each independently navigable. Drag, resize, minimize, maximize, snap to halves or quarters via the snap-assist widget. Taskbar button for every open window. It is a desktop. In a browser. The lab is aware of what it has done.
File Operations
Upload, download, create folders, rename, delete, copy, cut, and paste — all via toolbar buttons, keyboard shortcuts, or right-click context menu. Bulk selection with Ctrl+A or Shift/Ctrl+click supports delete, copy, move, and ZIP operations on multiple files simultaneously.
Three View Modes
Details view with sortable columns. Large Icons for the visually inclined. Small Icons for the efficient. Switching between them is instantaneous and the lab has strong opinions about which one is correct but will not share them unprompted.
ZIP Archive Support
Right-click a folder or selection to create a ZIP archive. Right-click a .zip file to extract it in place. All handled server-side in pure Node.js — no system binaries required inside the container, because the lab learned that lesson the hard way and documented it for posterity.
File Preview & Properties
Preview text files, source code with syntax highlighting, images, and PDFs directly in the browser without downloading. Binary files get a hex dump. Right-click any file for a Properties panel with size, type, and ownership data. The lab considers this thorough. Some researchers consider it excessive. Both groups are correct.
Persistent Settings
Theme choice, sidebar pins, wallpaper, and display preferences are stored server-side in the config volume — not in localStorage. They survive across browsers, devices, incognito sessions, and the kind of existential reboots that clear browser state. The experiment remembers.
Sidebar Pin Management
Pin any folder to the sidebar for quick access. Right-click a pinned item to remove it. The default Home and Documents pins can be removed. All windows sync immediately. The lab believes strongly in customization and will not be talked out of it.
Wallpaper System
Set a wallpaper from any image in your storage, or upload one directly. Three display modes: Stretch, Fit (maintain ratio), and Center. Wallpaper is stored in the config directory on the server. The desktop, after all, should feel like home.
Keyboard Shortcuts
F2 to rename. Delete to delete. Ctrl+C, Ctrl+X, Ctrl+V for copy/cut/paste. Ctrl+A to select all. Ctrl+N for new folder. Backspace to go up a directory. The lab is a firm believer in not reaching for the mouse when a keystroke will do.
Integrated Text Editor
Double-click any text, code, config, or script file to open it in a full editor window. The editor is a proper draggable, resizable window with its own taskbar button — it observes snap-assist, respects z-index, and yields to other windows like a civilized apparatus should. Ctrl+S to save. Ctrl+F to find.
Live Syntax Highlighting
Code files are highlighted as you type — JavaScript, Python, TypeScript, Rust, Go, SQL, YAML, Bash, HTML, CSS, and 25 more. Highlighting is handled via a contenteditable element, so the cursor lives inside the colored text and there is no drift. The lab spent time on this. It was worth it.
Editor Toolset
Word wrap toggle. Line numbers. Font size selector. Find-in-file with match counter and Prev/Next navigation. Prose mode for .txt and .md files with a rich-text formatting toolbar. Unsaved changes are tracked with an indicator dot and a confirmation prompt on close. Tab inserts four spaces. The lab has opinions about spaces.
02

Deployment &
Configuration

Four steps. One command. The lab tried to make this as frictionless as an infrastructure experiment can reasonably be.

01
Step One
Install Docker
B.L.I.S.S. runs entirely inside Docker. If you don't have it: Docker Desktop for Windows or macOS, or Docker Engine for Linux. No other dependencies are required on your host machine. No Node.js. No npm. The container brings everything it needs. The lab approves of this arrangement.
02
Step Two
Download & Edit the Compose File
Download docker-compose.yml using the button above. Open it in any text editor. Edit the volumes: section — replace each /your/path/to/... with real absolute paths to directories on your machine. The config path just needs to point to any persistent, writable folder. Create it first if it doesn't exist.
03
Step Three
Run It
Open a terminal in the folder containing your edited docker-compose.yml and run:

docker compose up -d

Docker will pull the image from Docker Hub automatically. No build step. No source code required. The -d flag runs it in the background. It will restart automatically unless you explicitly stop it.
04
Step Four
Open Your Browser
Navigate to http://localhost:8008. B.L.I.S.S. will be waiting. To change the port, edit the left side of the ports: line in the compose file — e.g. "9000:8008" to use port 9000.

To stop: docker compose down
To update: docker compose pull && docker compose up -d
Configuration File
docker-compose.yml — edit volumes before running
version: '3.8' services: belmont-storage: image: belmontlabs/belmont-labs-iss:latest container_name: belmont-labs-iss ports: - "8008:8008" # Change left side to use a different port, e.g. "9000:8008" restart: unless-stopped environment: - PORT=8008 - STORAGE_HOME=/data/home - STORAGE_DOCUMENTS=/data/documents - STORAGE_DOWNLOADS=/data/downloads - STORAGE_1=/data/storage1 - STORAGE_2=/data/storage2 - SETTINGS_FILE=/data/config/settings.json volumes: # ── Edit these paths to point at your actual directories ────────────── - /your/path/to/home:/data/home - /your/path/to/documents:/data/documents - /your/path/to/downloads:/data/downloads - /your/path/to/drive1:/data/storage1 - /your/path/to/drive2:/data/storage2 # ── Config/settings — just needs to be a persistent folder ──────────── - /your/path/to/config:/data/config
Requirement
Docker Desktop (Windows/Mac) or Docker Engine (Linux). Nothing else.
Architecture
linux/amd64 and linux/arm64 (Apple Silicon) — both supported via multi-platform image.
Updates
Run docker compose pull && docker compose up -d to update. Your files and settings are untouched.
      BL-006 B.L.I.S.S.: STATUS — ACTIVE / STABLE  ⋮  FILE BROWSER: OPERATIONAL — WINDOWS DRAGGING SMOOTHLY  ⋮  TEXT EDITOR: ONLINE — CURSOR DRIFT: NONE — SYNTAX HIGHLIGHT: ALL LANGUAGES ACCOUNTED FOR  ⋮  BL-006-14E: EDITOR WINDOW INTEGRATED — SNAP ASSIST RESPONSIVE — TASKBAR BUTTON FUNCTIONAL  ⋮  DOCKER IMAGE: belmontlabs/belmont-labs-iss:latest  ⋮  VOLUME MOUNTS: AWAITING YOUR PATH CONFIGURATION  ⋮  SETTINGS PERSISTENCE: NOMINAL — CONFIG VOLUME MOUNTED  ⋮  WALLPAPER SYSTEM: ACTIVE — DESKTOP FEELS LIKE HOME  ⋮  ZIP SUBSYSTEM: OPERATIONAL — ARCHIVER READY  ⋮  BL-006-15A: CONTENTEDITABLE APPROACH CONFIRMED — PREVIOUS TEXTAREA OVERLAY: FILED UNDER LESSONS  ⋮  REMINDER: EDIT YOUR VOLUME PATHS BEFORE RUNNING docker compose up  ⋮  THE LAB THANKS YOU FOR YOUR INTEREST IN MANAGED STORAGE SOLUTIONS  ⋮