via HTTPie
$ http http://circuitpython.local
HTTP/1.1 307 Temporary Redirect
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin:
Connection: close
Content-Length: 0
Location: http://cpy-41f05c.local/
Vary: Origin, Accept, Upgrade
You get a 307 Temporary Redirect. The hostname (cpy-41f05c) is derived from the cpu-id. Use the URL in the "Location" header to get the device homepage:
$ http://cpy-41f05c.local/
<!doctypehtml>
<title>CircuitPython</title>
<meta charset=UTF-8>
<meta content=width=device-width,initial-scale=1 name=viewport>
<script defer src=/welcome.js></script>
<link href=/style.css rel=stylesheet>
<link href=http://circuitpython.org/assets/css/webworkflow-8.css rel=stylesheet>
<body>
<h1>
<a href=/><img src=/favicon.ico></a> Welcome!</h1><p>Welcome to CircuitPython's Web API.
Go to the <a href=/fs/>file browser</a> to work with files in the CIRCUITPY drive.
Go to the <a href=/cp/serial/>serial terminal</a> to see code output and interact with the REPL.
Make sure you've set <code>CIRCUITPY_WEB_API_PASSWORD='somepassword'</code> in <code>/.env</code>.
Provide the password when the browser prompts for it.
<strong>Leave the username blank.</strong>
<h2>Device Info:</h2>
<dl><dt>Board:<dd><a id=board></a><dt>Version:<dd><span id=version></span>
<dt>Hostname:<dd><a id=hostname></a>
<dt>IP:<dd><a id=ip></a></dl>
<h2>Here are other CircuitPython devices on your network:</h2><ul id=devices></ul>
Let's have a look at the boot_out.txt file. We need to use HTTP Basic Authentication with an empty username.
$ http -a :my-secure-password http://cpy-41f05c.local/fs/
HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin:
Content-Length: 134
Content-Type: text/plain;charset=UTF-8
Vary: Origin, Accept, Upgrade
Adafruit CircuitPython 8.0.0-beta.0-8-gb48141154 on 2022-08-24; ProS3 with ESP32S3
Board ID:unexpectedmaker_pros3
UID:4F21AF140FC5