Concept · files
Use when
A person asks you to add a web page, a docs site, a blog or part of a site. Or you must find what a saved page became.
Looking for something else?
Documents on a computer or in a folder (recipe bring-in-a-corpus). A page behind a sign-in. A folder kept current from a source (card source).
For
A person points at public web pages, and Penumbra saves them into the project. A saved page is a File that keeps its web address. Its text is searchable and its pictures show the page. There is no website object: the pages are Files, and everything Files do applies (card file).penumbra web save saves up to 50 pages you name. penumbra web crawl finds
the pages of a site, saves them as Files and puts them in one collection (card
collection). A crawl runs on its own after the command returns.
Keeping a saved site current from the web is not available yet. When it is, a
site will be a linked source, beside the synced folders (card source).
Use when
- A person names a page, a docs site, a blog or a section of a site.
- You must find the Files that a crawl made.
- You must tell the person what a saved page is and where it is.
Not this
- Documents on a computer or in a folder: use recipe bring-in-a-corpus.
- A page that needs a sign-in: save it as a file and upload it (card file).
- A folder that Penumbra keeps current: use a synced folder (card source).
Rules
website.1Saving a page makes a File, and nothing else. Enforced:penumbra web saveandpenumbra web crawladd Files. No command opens, renames or deletes a website. Your job: work with the Files after a save: search them, group them in a collection and extract from them.website.2A page is one File, however its address is spelled. Enforced: Penumbra reads an address in one form. It treatshttpandhttpsas one and lowercases the host. It drops the default port, the fragment, a trailing slash and tracking parameters (utm_*,gclid,fbclid,mc_cidandmc_eid). It orders the other parameters by name. A page the project holds is reported asalready_in_projectand is not saved again.website.3A saved page has one place in the Workspace. Enforced: both commands place a page at<folder>/<host>/<path>/index, and the root page at<folder>/<host>/index. The default folder is/web. A page whose address has a query ends inindex~and eight characters of a hash of the query. So a page and the pages below it never take the same name, and pages that differ only by query stay apart. A path segment namedindex, with or without an extension, becomes the folderindex~, so/docs/indexis at<folder>/<host>/docs/index~/index. Your job: find a page by its address:https://example.com/docs/introis at/web/example.com/docs/intro/index.website.4A crawl is one job with one collection. Enforced:penumbra web crawlanswers at once with a crawl id. Penumbra finds the pages, saves each one and adds it to the crawl’s collection. That is a new collection named for the site, unless--collectionnames one. A crawl that would keep more than 100 pages is refused withcrawl_needs_preview. The refusal carries the dry run Penumbra made while it checked: its counts, a sample and an estimate. The CLI prints them and the exact command that starts the crawl, with--preview <id>. Only the person or key that started a crawl, or a project admin, can cancel it (penumbra web crawls cancel). Your job: read the counts and the estimate with the person, and run the printed command if they agree. Read the crawl withpenumbra web crawls get <crawl>. Do not search for its pages before it ends.website.5A saved page shows the site as it was on the day it was saved. Enforced: saving a page the project holds changes nothing, and a crawl leaves such a page out. No command refreshes a saved page. Your job: tell the person the date of the save, and do not promise a newer copy.
Failure signs
- A page is refused with
url_blocked_by_robots: problem page-blocked-by-robots. - A crawl keeps far fewer pages than the site has: problem crawl-found-fewer-pages.
- A page’s pictures stop partway down: problem page-pictures-truncated.
- A save reports a page as already in the project: problem page-already-in-project.
- An address is refused with
url_not_allowed: it is not a public web page. Fix the address. - A command is refused with
web_capture_busyorweb_capture_unavailable(status 503): nothing was saved or kept. Wait the time the refusal names, then send the same request again with the same key. - A crawl is refused with
crawl_bound_exceeded: it crossed the bound named in the refusal. Narrow--includeor--limit, or wait for a running crawl to end. - A crawl is refused with
permission_denied: the credential lacks the right to add Files or to use collections. Ask a project owner or admin. - A cancel is refused with
permission_denied: only the person who started the crawl, or a project admin, can cancel it.
Doors
No MCP tool saves a web page. Use the CLI, the SDK or HTTP. An agent connected
only through MCP can read the saved pages as Files, but cannot save new ones.