Skip to content

Troubleshooting and FAQ

Noctiluca's lanternfish, puzzled, its terminal lure flickering with a question mark

First, press F1. Every action is there with its key, and an action that cannot run now says why.

Starting

"Chrome cannot run its sandbox as root." Run Noctiluca as a normal user. It never turns Chrome's sandbox off.

No browser found, or the wrong one. Install Chrome or Chromium, or name one with --chrome PATH or the RICH_EMBED_CHROME environment variable. The order Noctiluca looks in is in Getting started.

A config warning on the status line. Noctiluca read your config, but not all of it. noctiluca keys prints every warning in full. An unknown key is only a warning, so the rest of the file still applies; a TOML syntax error stops Noctiluca with the line.

A [keys] line does nothing. A line with an unknown action or key name is skipped, with a warning; the other lines still apply. noctiluca keys prints the warning and the keys in effect. To unbind an action, give it "none".

Reading

A site shows a bot check, or refuses me. Noctiluca drives Chrome over DevTools, and some bot checks notice that. Noctiluca does not try to hide it, or to get past bot checks, CAPTCHAs or sign-in walls. See Bot checks.

The projection looks wrong. The first projection has no fixed or sticky layer and no paint order, so sticky headers and overlapping boxes can read oddly. Press r for reader mode.

The page stops where it should load more. Keep going down: each time you near the end, Noctiluca asks the page for more. A feed that loads only on a button needs the button pressed (f and its hint).

Keys type into a field. A focused text field takes every key you type. Esc does not leave it: press Tab to move to the next widget.

"Edit conflict: the page changed this value." The page changed a field while you were editing it. Your text is kept. Ctrl+R in the field takes the page's value; then edit and press Enter again. See Typing in a field.

O or g t says "One tab for now". Tabs need several pages in rs-rich-embed, which is still to come.

Pictures and sound

A picture shows as its alt text. An inline SVG drawing, a canvas and a frame show as their alt text. A site table with images = false, or --images none, turns pictures off.

Moving pictures stutter, or turn to half blocks. GIFs and video share a byte budget, and step down when the terminal is short of it. Over SSH the budget is small. Raise it with [media] bandwidth, or press F4 to freeze them.

Blocky pictures. By default Noctiluca picks what your terminal can show, and falls back to half blocks. In a terminal with Kitty graphics, Sixel or iTerm2 images, name it with --images (or [media] images).

No sound. Sound needs --audio (or [media] audio = true). It plays where Chrome runs: over SSH, that is the server. A site table with audio = false keeps that site muted.

A video stays on its poster. Press p to play it. Its frames are drawn only while it is on screen.

Saving and leaving

A download did nothing. Downloads are refused for now. See Downloads.

"No config file to keep site keys in." Binding a key on a site writes to your config file, and Noctiluca found no config directory (no HOME, say). Name a file with --config PATH.

"This page has no site (a local file): site keys need a host." Site keys belong to a host. Serve the page from a local server to bind keys on it.

rich-embed-chrome-… folders in my temporary directory. Each run's temporary profile is removed when Noctiluca ends, however it ends, except when it is killed with SIGKILL or the machine stops. Such a folder is readable only by you, and safe to delete once no Noctiluca runs. See the browser profile.

--dump says the page "did not load in time". --dump waits up to a minute for the page to load and stay still. A page that never stops changing (a ticking clock, an animation in the DOM) does not finish.

Over SSH

"no ssh found (install OpenSSH's client)". --ssh runs the ssh on your PATH. Install OpenSSH's client.

"SSH refused the login to HOST". ssh said Permission denied: the user, the key or the password was refused. Try ssh HOST on its own; whatever makes that work (~/.ssh/config, an agent, --ssh-arg=-i --ssh-arg=KEY) makes --ssh work.

"the tunnel's port was taken" or "port … is another user's". Another program took the port Noctiluca chose before ssh could. Noctiluca tries two more ports by itself; the second message means another user's program holds it, and Chrome is not started. Run again.

"ssh to HOST dropped" on the status bar. The tunnel ended. Noctiluca reconnects by itself, without prompting; reload reconnects at once. If the login needs a password, quit and run again.

localhost opens my own machine's server, not the remote's. Check the status bar says via ssh HOST: without --ssh, localhost is this machine.

Scripts and the pixel view

noctiluca ls says no Noctiluca is listening. Only a session started with --control, --read-only or [agent] control = true listens, and only to scripts with the same XDG_RUNTIME_DIR (a script under sudo, or in another login, looks elsewhere).

"--control: … is open to other users" or "… is another user's". The socket's directory ($XDG_RUNTIME_DIR/noctiluca, else /tmp/noctiluca-UID) must be yours with mode 700. Noctiluca does not change it for you: remove it, or fix its owner and mode, and run again.

"N sessions are listening". Name one: noctiluca action --session PID …, with a pid from noctiluca ls.

"read-only session". That session runs with --read-only (or [agent] read_only = true): it answers info, snapshot and find only.

The control commands say "Unix only for now". On Windows there is no control socket yet.

"The pixel view needs Kitty graphics". It draws through Kitty's protocol only. In kitty, WezTerm or Ghostty, name it if it was not detected: --images kitty --pixels.

The pixel view lags while scrolling. Scrolling changes every tile, so each frame costs nearly a whole frame of pixels; frames the byte budget cannot carry are dropped. Raise [media] bandwidth if your terminal takes more, or scroll in the projection and switch back.

FAQ

Is it a real browser? Yes: Chrome loads and runs every page, with its scripts. Noctiluca is the screen and the keyboard.

Can I sign in to sites? Fields, check boxes and buttons work, and --profile NAME keeps you signed in between runs. Sign-in forms are not tested yet; they come in the forms and tables phase.

Does it work over SSH? Yes, two ways. Run it on the server, and the page, its text and its pictures reach your terminal like any other program's (sound plays on the server). Or run it here with --ssh HOST, and Chrome makes its requests through the server. See Over SSH.

Can I use the mouse? Yes: click a link or a control, turn the wheel to scroll, and click the header's ◀ ▶ ↻, the address, the keys in the status bar and the rows of a list. See the mouse. A drag over text still selects and copies it; --no-mouse leaves the mouse to your terminal instead.

Why does it need Chrome? A modern page needs a modern engine to run its scripts and lay it out. Noctiluca reads Chrome's layout instead of laying pages out itself. See the design note.

Will it play DRM video, run extensions, or solve CAPTCHAs? No, never. See what's next.