Remote
SSH
Start ArrayView on the remote host, then forward its port when connecting over SSH:
ssh -L 8000:localhost:8000 user@remote
arrayview data.npy --port 8000
Then open http://localhost:8000 in your local browser.
VS Code
Auto-detects VS Code terminals and opens in a VS Code tab. Works automatically.
The same routing applies when view() is called from Python, MATLAB, or Julia.
See MATLAB and Julia.
Jupyter
Inline viewers in Jupyter use the notebook server as a bridge to ArrayView. This is what makes remote notebooks work without forwarding a second port. ArrayView keeps that route while it loads, even when the notebook server is temporarily slow.
If the browser and kernel truly run on the same machine and the notebook server does not provide its proxy route, direct localhost access can be requested before importing ArrayView:
import os
os.environ["ARRAYVIEW_JUPYTER_PROXY"] = "0"
Do not disable the proxy for a remote notebook: the browser's localhost is
then a different machine from the kernel.
VS Code tunnel
The VS Code extension uses the normal WebSocket viewer through VS Code's
private remote-browser proxy. ArrayView starts or reuses the FastAPI server and
opens its remote localhost URL in VS Code's integrated browser. The port
remains private and is not exposed through a public developer-tunnel URL.
arrayview volume.nii.gz # opens in a VS Code integrated-browser tab
How it works
Integrated browser ←VS Code private proxy→ remote localhost FastAPI server
The extension reads ArrayView's signal file, verifies the exact backend and target window, and opens a request-specific loopback URL. Each invocation gets its own request identity so multiple ArrayView tabs can remain open at once. Slice requests, metadata, overlays, and compare views use the same HTTP/WebSocket routes as local browser mode. If the private proxy or exact target cannot be verified, ArrayView fails instead of making the port public.
Persistent server mode
Normal launches start or reuse the required server automatically. For multi-hop setups or a shared viewer URL, run a persistent server explicitly:
arrayview --serve
Leave port 8000 private and load arrays normally. The server persists across
invocations. Stop it with arrayview stop.
Multi-hop
When data lives on a server you SSH into from the tunnel-remote machine:
Local VS Code ──(devtunnel)──▶ remote ──(SSH)──▶ server
- Start
arrayview --serveon the remote machine and leave the port private. - SSH into the server with a reverse tunnel:
ssh -R 8000:localhost:8000 user@gpu-server
- On the server:
arrayview array.npy
The array is sent back to the remote machine and the viewer opens in a VS Code tab locally.
If port 8000 is already taken on the GPU server:
ssh -R 8765:localhost:8000 user@gpu-server
arrayview array.npy --relay 8765
Window modes
| Value | Behavior |
|---|---|
native |
Desktop window (default outside Jupyter) |
browser |
System browser |
vscode |
VS Code tab |
inline |
Inline IFrame (default in Jupyter) |