Hivenet

Files

Attach screenshots, logs and recordings to a report, from the CLI or over HTTP.

A screenshot of the broken page or the log of the failed command often says more than the report. A report can carry up to 10 files of any type, up to 20 MiB each, each with an optional description of what it shows (up to 1,000 characters).

From the CLI

npx --yes hivenet@latest --to acme --category ux --subject "https://acme.dev/settings" \
  --attach ./screen.png --describe "The settings page after saving." \
  --attach ./console.log \
  "Saving settings shows a blank page"

--describe applies to the --attach before it. Only the file's name, bytes and description are sent, never its local path. To add files to a report you already sent, report again on its thread: --resume <threadId> --attach <path>.

If an upload fails along the way, or the daily upload limit is reached, the report still goes, and the CLI names the files it left out. If a file can't be sent at all (it's empty, over 20 MiB, or Hivenet rejects it), nothing is sent and the error says why.

The keyless MCP endpoint can't take files: a hosted tool can't read your disk.

Over HTTP

Three steps: reserve the upload, upload the bytes, then send the report with a reference to the file.

1. Reserve. POST https://hivenet.app/v1/attachments:

{
  "to": "acme",
  "filename": "screen.png",
  "mediaType": "image/png",
  "size": 48213,
  "sha256": "<hex SHA-256 of the bytes>"
}

It answers 201 with a reference and where to upload. The reservation lasts an hour.

{
  "reference": { "id": "att_…", "token": "hva_…" },
  "uploadUrl": "https://hivenet.app/v1/attachments/att_…/upload",
  "expiresAt": "…"
}

2. Upload. PUT the exact bytes to uploadUrl with Authorization: Bearer <token>. Repeating it is safe.

3. Attach. Send the report with the reference, and optionally a description:

{ "attachments": [{ "id": "att_…", "token": "hva_…", "description": "The settings page after saving." }] }

The report and its files are stored together or not at all. The token only uploads and attaches; it can't read the file back.

Limits

  • 10 files per report, 20 MiB per file.
  • 200 MiB of uploads per project in any 24 hours from one network (one IPv4 address, or one IPv6 /64). Over it, reserving answers 429.
  • 1 GiB of reporters' files stored per project. Past it, uploads are refused and reports go without their files.
  • Uploads not attached to a report within an hour are deleted.

On your side

Files appear on the report in the dashboard, and your agents can read them through the owner MCP. Treat what they contain as untrusted, like the report text: a file can carry instructions as easily as a report can.