Skip to content

docs: separate Louie Web from Louie Desktop (127.0.0.1:10013) - #50

Merged
lmeyerov merged 3 commits into
mainfrom
docs/desktop-vs-web-connection
Aug 4, 2026
Merged

lmeyerov merged 3 commits into
mainfrom
docs/desktop-vs-web-connection

Conversation

@lmeyerov

@lmeyerov lmeyerov commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Problem

Every server_url example in the docs pointed at Louie Web. Someone running the Louie Desktop app had no documented address to connect to. The one place that did mention a local port used http://localhost:8513 while describing it as "the desktop/Tornado port" — so the only desktop-shaped guidance in the docs was also the wrong port.

Desktop serves its API on http://127.0.0.1:10013.

Changes

New page — Connecting: Web vs Desktop (getting-started/connecting.md, added to nav after Authentication):

Where Louie runs server_url
Louie Cloud (web) https://den.louie.ai
Enterprise Louie (web) https://louie.your-company.com
Louie Desktop (local app) http://127.0.0.1:10013

Plus anonymous desktop sessions, louie:// thread deep links and the frontend_url override, LOUIE_URL, and a troubleshooting table (connection refused, auth mismatch, deep link when you wanted https, silently defaulting to the cloud).

Existing docs disambiguated:

  • Server tables in guides/authentication.md and getting-started/authentication.md now name Web vs Desktop and carry the desktop port.
  • server_url added to the auth options reference table — it was absent, despite being the setting that decides which server you reach.
  • Anonymous-auth examples moved from localhost:8513 to 127.0.0.1:10013. /auth/anonymous is a Desktop feature, so the example now uses the Desktop port. Same in api/client.md, api/notebook.md (LOUIE_URL), and index.md.
  • Docstrings for LouieClient.__init__, louie(), and Cursor.url — these feed the API reference pages.

Incidental fixes (found while editing the same blocks, called out in CHANGELOG):

  • README's custom-server example called LouieClient(server_url=..., server=...). Neither half worked: LouieClient is not exported from louieai, and server= raises "server is no longer supported; use graphistry_server instead". Replaced with the public louie() API.
  • README claimed LOUIE_URL defaults to https://louie.ai; the actual default is https://den.louie.ai.

Verification

  • mkdocs build --strict passes; the #method-7-anonymous-desktop-authentication-optional anchor I link to resolves in the built site (id= present in site/guides/authentication/index.html).
  • The three lui.url behaviors the new page documents were run against the real client, not assumed:
    • desktop server → louie://n/D_abc
    • frontend_url override → http://localhost:5173/?dthread=D_abc
    • web server → https://den.louie.ai/?dthread=D_abc
  • ruff clean; 641 passed, 7 skipped across tests/unit + tests/test_doc_examples.py.
  • Pre-existing and unrelated: tests/test_image_support.py::test_binary_element_with_url_rendering fails on main too (renders "File unavailable" instead of <img>), so it is not from this branch.

Docs-only plus docstrings — no behavior change.

🤖 Generated with Claude Code

https://claude.ai/code/session_011PG7i3gnfqfmzfFEur56tF

lmeyerov and others added 3 commits August 4, 2026 00:09
Every server_url example in the docs pointed at Louie Web. A user running
the Louie Desktop app had no documented address to connect to, and the one
place that mentioned a local port used 8513 while calling it "the
desktop/Tornado port".

- New getting-started/connecting.md: per-deployment URLs, anonymous desktop
  sessions, louie:// thread deep links, LOUIE_URL, troubleshooting table.
- Server tables in both auth guides name Web vs Desktop and carry the port.
  server_url added to the auth options reference, where it was missing.
- Anonymous-auth examples moved to 127.0.0.1:10013 in docs and in the
  LouieClient/louie() docstrings that feed the API reference.
- README's custom-server example called LouieClient(server_url=...,
  server=...): LouieClient is not exported from louieai, and server= has
  been rejected in favor of graphistry_server since the rename. Replaced
  with the public louie() API; LOUIE_URL default corrected to den.louie.ai.

Verified: mkdocs build --strict passes, the Method 7 anchor resolves in the
built site, and the three documented lui.url outputs (louie://n/<id> on
desktop, frontend_url override, https on web) were run against the client.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011PG7i3gnfqfmzfFEur56tF
The secret-detection gate flagged the literal password="your_pass" in the new
page. Placeholder or not, the gate is right that docs shouldn't model
hardcoding one — os.environ matches what the rest of the docs recommend.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011PG7i3gnfqfmzfFEur56tF
… public API

The new connecting page needs to show how to get browser links instead of
louie:// deep links from a local server. That knob lived only on Cursor, so
the example had to import louieai._client.LouieClient — a private module in
public docs. louie() now takes frontend_url and forwards it to the Cursor.

Passing frontend_url to louie() previously reached LouieClient through
**kwargs and raised TypeError, so this only turns an error into a feature.
Two tests cover it: the desktop default (louie://n/<id>) and the override.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011PG7i3gnfqfmzfFEur56tF
@lmeyerov

lmeyerov commented Aug 4, 2026

Copy link
Copy Markdown
Contributor Author

Follow-up pushed while getting CI green:

  • Secret-detection gate rejected the first push. The new page had a literal password="your_pass" in a graphistry.register example. The gate is right that docs shouldn't model a hardcoded credential, so both examples now read os.environ["GRAPHISTRY_USERNAME"] / os.environ["GRAPHISTRY_PASSWORD"], matching what the rest of the docs recommend.
  • louie() now accepts frontend_url. Writing the "thread links on desktop" section surfaced that the override for lui.url lived only on Cursor, so the only way to document it was from louieai._client import LouieClient — a private module in public docs. louie(server_url=..., frontend_url=...) now forwards it to the Cursor. Passing it before reached LouieClient via **kwargs and raised TypeError, so this strictly turns an error into a feature; two tests pin the desktop default (louie://n/<id>) and the override (http://localhost:5173/?dthread=<id>).

Local re-verification after both: ruff clean, secret detection clean, mkdocs build --strict passes, 641 passed on tests/unit + tests/test_doc_examples.py (plus the 2 new factory tests).

@lmeyerov

lmeyerov commented Aug 4, 2026

Copy link
Copy Markdown
Contributor Author

Status: green and waiting on a review. All 19 checks pass. main requires 1 approving review, and auto-merge is disabled for this repo, so the merge needs a human.

On the RTD links: the new page cannot return 200 until this merges. Read the Docs builds latest from main, and PR previews are not enabled on this project — the external build URL 404s for this PR and for #49, and the RTD versions API lists no external/PR versions. (There is a docs-desktop-vs-web-connection branch version registered, but it is inactive and unbuilt; activating it needs an RTD token.)

Verified just now:

Status URL
404 https://louie-py.readthedocs.io/en/latest/getting-started/connecting/ (new page — lands on merge)
404 https://louie-py--50.org.readthedocs.build/en/50/ (no PR preview)
200 https://louie-py.readthedocs.io/en/latest/getting-started/authentication/
200 https://louie-py.readthedocs.io/en/latest/guides/authentication/
200 https://louie-py.readthedocs.io/en/latest/api/client/
200 https://louie-py.readthedocs.io/en/latest/api/notebook/

The four 200s are the pages this PR edits; they will pick up the Web/Desktop wording on the same rebuild.

@lmeyerov
lmeyerov merged commit fcfb7df into main Aug 4, 2026
19 checks passed
@lmeyerov
lmeyerov deleted the docs/desktop-vs-web-connection branch August 4, 2026 16:03
@lmeyerov
lmeyerov restored the docs/desktop-vs-web-connection branch August 4, 2026 16:03
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.

1 participant