{
  "@context": "https://schema.org",
  "@id": "https://aggr.aymericbeaumet.com/items/simonwillison-net/2026-10-12-web-edit-0-1a0/#webpage",
  "@type": [
    "WebPage",
    "ArchiveComponent"
  ],
  "articleBody": "I was working on a project from my phone using Codex Remote when I found myself wanting to edit a credentials file without round-tripping those credentials through the LLM itself.\n\nSo... I had Codex and GPT-6 Astra Extra High build this Python web app which provides a web UI for viewing and editing files in a folder. It's intended to be run over Tailscale, so I can have an agent start this running and then edit files via my Tailscale network directly from my phone.\n\nHere's the interface for browsing files in a folder:\n\n![Screenshot of a web file manager interface. Header reads \\\"WORKSPACE\\\" above the title \\\"Files\\\", with buttons \\\"Refresh\\\", \\\"Upload files\\\" and \\\"New file\\\" (dark green). A breadcrumb shows \\\"web-edit / web_edit / static\\\". A table with columns \\\"Name\\\", \\\"Size\\\", \\\"Modified\\\" lists four files, each with \\\"Download ↓\\\" and \\\"Delete\\\" links: \\\"app.css\\\" 8.4 KB Oct 12, 2026; \\\"app.js\\\" 671.5 KB Oct 12, 2026; \\\"index.html\\\" 4.3 KB Oct 12, 2026 (underlined, as if hovered); \\\"THIRD_PARTY_LICENSES.txt\\\" 32.3 KB Oct 12, 2026. Below the table: \\\"Images under 2 MB appear inline. Select a text file to edit it.\\\" A panel below is labelled \\\"UPLOAD QUEUE\\\" with heading \\\"Add files\\\" and a \\\"Close\\\" button. It has a \\\"Destination folder\\\" text field containing \\\"web_edit\\\", then a dashed drop zone reading \\\"Choose files or drop them here\\\" and \\\"Set a path and filename for each file before uploading.\\\" with a \\\"Choose Files\\\" button and the text \\\"no files selected\\\". A greyed-out \\\"Upload files\\\" button sits at the bottom right.](https://static.simonwillison.net/static/2026/web-edit.webp)\n\nEditing uses [CodeMirror 6](https://codemirror.net) - I was going to use [Monaco](https://microsoft.github.io/monaco-editor/) but that still doesn't have a great mobile experience yet.\n",
  "authors": [],
  "captured_at": "2026-10-13T18:08:43.541012300+00:00",
  "category": "programming",
  "content_html": "<p>I was working on a project from my phone using Codex Remote when I found myself wanting to edit a credentials file without round-tripping those credentials through the LLM itself.</p>\n<p>So... I had Codex and GPT-6 Astra Extra High build this Python web app which provides a web UI for viewing and editing files in a folder. It's intended to be run over Tailscale, so I can have an agent start this running and then edit files via my Tailscale network directly from my phone.</p>\n<p>Here's the interface for browsing files in a folder:</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://static.simonwillison.net/static/2026/web-edit.webp\" alt=\"Screenshot of a web file manager interface. Header reads &quot;WORKSPACE&quot; above the title &quot;Files&quot;, with buttons &quot;Refresh&quot;, &quot;Upload files&quot; and &quot;New file&quot; (dark green). A breadcrumb shows &quot;web-edit / web_edit / static&quot;. A table with columns &quot;Name&quot;, &quot;Size&quot;, &quot;Modified&quot; lists four files, each with &quot;Download ↓&quot; and &quot;Delete&quot; links: &quot;app.css&quot; 8.4 KB Oct 12, 2026; &quot;app.js&quot; 671.5 KB Oct 12, 2026; &quot;index.html&quot; 4.3 KB Oct 12, 2026 (underlined, as if hovered); &quot;THIRD_PARTY_LICENSES.txt&quot; 32.3 KB Oct 12, 2026. Below the table: &quot;Images under 2 MB appear inline. Select a text file to edit it.&quot; A panel below is labelled &quot;UPLOAD QUEUE&quot; with heading &quot;Add files&quot; and a &quot;Close&quot; button. It has a &quot;Destination folder&quot; text field containing &quot;web_edit&quot;, then a dashed drop zone reading &quot;Choose files or drop them here&quot; and &quot;Set a path and filename for each file before uploading.&quot; with a &quot;Choose Files&quot; button and the text &quot;no files selected&quot;. A greyed-out &quot;Upload files&quot; button sits at the bottom right.\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Editing uses <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://codemirror.net\">CodeMirror 6</a> - I was going to use <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://microsoft.github.io/monaco-editor/\">Monaco</a> but that still doesn't have a great mobile experience yet.</p>\n",
  "content_markdown": "I was working on a project from my phone using Codex Remote when I found myself wanting to edit a credentials file without round-tripping those credentials through the LLM itself.\n\nSo... I had Codex and GPT-6 Astra Extra High build this Python web app which provides a web UI for viewing and editing files in a folder. It's intended to be run over Tailscale, so I can have an agent start this running and then edit files via my Tailscale network directly from my phone.\n\nHere's the interface for browsing files in a folder:\n\n![Screenshot of a web file manager interface. Header reads \\\"WORKSPACE\\\" above the title \\\"Files\\\", with buttons \\\"Refresh\\\", \\\"Upload files\\\" and \\\"New file\\\" (dark green). A breadcrumb shows \\\"web-edit / web_edit / static\\\". A table with columns \\\"Name\\\", \\\"Size\\\", \\\"Modified\\\" lists four files, each with \\\"Download ↓\\\" and \\\"Delete\\\" links: \\\"app.css\\\" 8.4 KB Oct 12, 2026; \\\"app.js\\\" 671.5 KB Oct 12, 2026; \\\"index.html\\\" 4.3 KB Oct 12, 2026 (underlined, as if hovered); \\\"THIRD_PARTY_LICENSES.txt\\\" 32.3 KB Oct 12, 2026. Below the table: \\\"Images under 2 MB appear inline. Select a text file to edit it.\\\" A panel below is labelled \\\"UPLOAD QUEUE\\\" with heading \\\"Add files\\\" and a \\\"Close\\\" button. It has a \\\"Destination folder\\\" text field containing \\\"web_edit\\\", then a dashed drop zone reading \\\"Choose files or drop them here\\\" and \\\"Set a path and filename for each file before uploading.\\\" with a \\\"Choose Files\\\" button and the text \\\"no files selected\\\". A greyed-out \\\"Upload files\\\" button sits at the bottom right.](https://static.simonwillison.net/static/2026/web-edit.webp)\n\nEditing uses [CodeMirror 6](https://codemirror.net) - I was going to use [Monaco](https://microsoft.github.io/monaco-editor/) but that still doesn't have a great mobile experience yet.\n",
  "dateCreated": "2026-10-13T18:08:43.541012300+00:00",
  "date_created": "2026-10-12T15:54:36+00:00",
  "date_modified": "2026-10-12T15:54:36+00:00",
  "date_published": "2026-10-12T15:54:36+00:00",
  "description": "Release: web-edit 0.1a0 I was working on a project from my phone using Codex Remote when I found myself wanting to edit a credentials file without round-tripping those credentials through the LLM itself. So... I had Codex and GPT-6 Astra…",
  "external_url": "https://simonwillison.net/2026/Oct/12/web-edit/",
  "git": {
    "commit": "ebb0941c5c06a2ab2377342d607535262a3e969e",
    "path": "items/simonwillison-net/2026/10/2026-10-12-web-edit-0-1a0.md",
    "permalink": "https://github.com/aymericbeaumet/aggr-instance/blob/ebb0941c5c06a2ab2377342d607535262a3e969e/items/simonwillison-net/2026/10/2026-10-12-web-edit-0-1a0.md"
  },
  "id": "urn:aggr:item:3d2b623e4666766533fbadc9d8583b5c6c30f522",
  "isBasedOn": {
    "@id": "https://simonwillison.net/2026/Oct/12/web-edit/"
  },
  "mainEntity": {
    "@id": "https://simonwillison.net/2026/Oct/12/web-edit/",
    "@type": "CreativeWork",
    "archivedAt": {
      "@id": "https://aggr.aymericbeaumet.com/items/simonwillison-net/2026-10-12-web-edit-0-1a0/#webpage"
    },
    "dateModified": "2026-10-12T15:54:36+00:00",
    "datePublished": "2026-10-12T15:54:36+00:00",
    "headline": "web-edit 0.1a0",
    "image": {
      "@type": "ImageObject",
      "caption": "Screenshot of a web file manager interface. Header reads \"WORKSPACE\" above the title \"Files\", with buttons \"Refresh\", \"Upload files\" and \"New file\" (dark green). A breadcrumb shows \"web-edit / web_edit / static\". A table with columns \"Name\", \"Size\", \"Modified\" lists four files, each with \"Download ↓",
      "height": 90,
      "url": "https://static.simonwillison.net/static/2026/web-edit.webp",
      "width": 160
    },
    "timeRequired": "PT1M",
    "url": "https://simonwillison.net/2026/Oct/12/web-edit/",
    "wordCount": 116
  },
  "name": "Archived snapshot: web-edit 0.1a0",
  "preview": {
    "alt": "Screenshot of a web file manager interface. Header reads \"WORKSPACE\" above the title \"Files\", with buttons \"Refresh\", \"Upload files\" and \"New file\" (dark green). A breadcrumb shows \"web-edit / web_edit / static\". A table with columns \"Name\", \"Size\", \"Modified\" lists four files, each with \"Download ↓",
    "color": null,
    "height": 90,
    "placeholder": {
      "data_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=",
      "hash": ""
    },
    "url": "https://static.simonwillison.net/static/2026/web-edit.webp",
    "width": 160
  },
  "reading_minutes": 1,
  "replicated_at": null,
  "source": "simonwillison-net",
  "source_name": "Simon Willison's Weblog",
  "summary": "Release: web-edit 0.1a0 I was working on a project from my phone using Codex Remote when I found myself wanting to edit a credentials file without round-tripping those credentials through the LLM itself. So... I had Codex and GPT-6 Astra Extra High build this Python web app which provides a web UI for viewing and editing files in a folder. It's intended to be run over Tailscale, so I can have an agent start this running and then edit files via my Tailscale network directly from my phone. Here's the interface for browsing files in a folder: Editing uses CodeMirror 6 - I was going to use Monaco but that still doesn't have a great mobile experience yet. Tags: projects, python, ai, tailscale, generative-ai, llms, codex",
  "tags": [
    "ai",
    "codex",
    "generative-ai",
    "llms",
    "projects",
    "python",
    "tailscale"
  ],
  "temporalCoverage": "2026-10-13T18:08:43.541012300+00:00",
  "title": "web-edit 0.1a0",
  "url": "https://aggr.aymericbeaumet.com/items/simonwillison-net/2026-10-12-web-edit-0-1a0/",
  "word_count": 116
}