User SettingsFile Store

User File Store

Your user file store is a personal, per-organisation space where files produced by PebbleAI on your behalf are stored durably. Today it holds the output files from Skills that run Python — PDFs, Word docs, Excel spreadsheets, images, charts — along with artifacts from Canvas, and in future it will link to OneDrive and SharePoint.

Your file store has a dedicated home: the Files page, reached via Files in the sidebar (URL: /user-files). Download links returned in chat responses remain a second route to the same files.

What’s in it today

Every time you run a Skill that produces a file — the pdf skill that generates a polished PDF, the xlsx skill that assembles a spreadsheet, the frontend-design skill that emits a mockup — the output file is:

  1. Written inside the code execution sandbox at /workspace/ or /tmp/
  2. Detected automatically by PebbleChat’s python_run tool (based on file extension)
  3. Uploaded to your user file store at tenants/{partnerId}/{orgId}/user-files/{yourUserId}/sandbox-output/
  4. Returned to you as a download link in the chat response

The link looks like /api/v1/pebblechat/user-files/{yourUserId}/{filename} — links are authenticated and user-scoped, so only you can reach your files, and only after authenticating as yourself.

Supported file extensions today:

.pdf, .docx, .xlsx, .pptx, .csv, .tsv, .json, .geojson, .czml, .png, .jpg, .jpeg, .gif, .svg, .html, .txt, .md, .zip — plus code files (.py, .js, .ts, .jsx, .tsx, .sh, .sql, .yaml, .yml) when you’ve asked the skill to produce them.

Deliverables a Skill writes to its output location with one of those extensions are captured automatically. Temporary working byproducts left loose in /workspace — intermediate images, scratch .txt or .json files — are no longer promoted to your file store. Other file types can still be produced but won’t be auto-captured — the skill author needs to convert them or handle them directly.

Storage structure

Your files are stored in an S3-backed per-user namespace inside your organisation’s bucket:

s3://pebble-storage/tenants/{partnerId}/{orgId}/user-files/{yourUserId}/
  └── sandbox-output/
      ├── Q1-2026-Report.pdf
      ├── budget-breakdown.xlsx
      ├── campaign-chart.png
      └── ...

This builds on the same multi-tenant S3 persistent storage that handles PebbleChat image attachments. Three key properties:

  • Per-user isolation — you cannot read another user’s files, and they cannot read yours, even if they somehow guessed the filename
  • Per-organisation scoping — your files belong to the organisation you were in when the file was created. If you’re a member of multiple organisations, each has its own file store namespace for you
  • Durable — files persist beyond any single session, chat, or pod lifetime. They’re in S3, not in the sandbox’s ephemeral storage

Accessing your files

The Files page — click Files in the sidebar (URL: /user-files) — is your file store’s home. It gives you:

  • A three-pane browser: folder tree, file list, and a preview pane with inline previews
  • Upload, download, rename, delete, copy and move actions
  • A storage-usage meter showing how much of the available space you’ve used
  • Open in Canvas and Chat about this file actions, so you can carry a file straight into a conversation

Download links in chat remain the quickest route back to a file you’ve just generated. A typical skill response looks something like:

I’ve generated your quarterly report as a PDF. Download it here: Q1-2026-Report.pdf

Click the link and the file downloads. The link stays valid as long as you’re authenticated and the file exists.

Finding a file from an earlier chat

The Files page is the quickest way — browse or search for the file directly. If you’d rather retrace your steps, the download link is still in the original conversation:

  1. Go to PebbleChat
  2. Find the conversation where the file was generated (search the sidebar if needed)
  3. Scroll to the message with the download link
  4. Click it

What’s coming

The file store is explicitly positioned as a foundation for larger work. Two things are planned on top of the current infrastructure:

1. Indexing over time for context

Over time, files in your file store are candidates for indexing into your personal memory / ambient context. The vision is that a user who has been using PebbleAI for three months has accumulated a rich corpus of their own work — reports, analyses, drafts, charts — and PebbleChat can draw on that corpus at query time. “What were we saying about the Q2 campaign last month?” could retrieve from your file store the same way it retrieves from document stores today.

2. OneDrive and SharePoint linking

The final step is linking your file store to OneDrive and SharePoint, so files flow both ways:

  • Files you generate in PebbleAI appear in your OneDrive automatically
  • Files you already have in OneDrive become searchable in PebbleChat
  • One indexed space spans everything you produce and everything you already have

This builds on the existing Microsoft 365 integration (see PebbleFlows → Integrations for how the MS365 MCP works today) and is a natural extension of the Files page and the file store beneath it.

Limits and caveats

  • Quotas are organisation-level. The Files page shows your storage usage against the available total, but the underlying limit is enforced at organisation level via your deployment’s license-based quotas (LICENSE_QUOTAS.STORAGE_LIMIT). If your organisation hits its storage limit, new sandbox outputs will start failing.
  • Retention is indefinite. Files stay until you delete them — there is no automatic cleanup, which is convenient but means the space grows unless you prune it from the Files page.
  • Files are per-organisation. Switching workspaces within the same organisation does not change which files you can see. Switching organisations (multi-org users) does.
  • Download links require authentication. Knowing the link alone isn’t enough — the API verifies that the authenticated user matches the user ID in the URL path before returning the file.
  • Skill output detection is pattern-based. If a skill writes a file with an extension not in the supported list, it won’t be auto-captured. This is a Skill-author consideration, not a user one.

How it relates to other storage

PebbleAI has several distinct storage surfaces and it’s worth being clear about which one is which:

StorageWhat it holdsScopeHow you access it
User file store (this page)Skill output files and Canvas artifactsPer user per orgFiles page (/user-files) or download links in chat
Document stores (@Mentions)Curated document collections for RAGPer workspace / orgVia @mention or auto-discovery in PebbleChat
PebbleChat image attachmentsImages you attach to a chat messagePer user per org, inside the conversationVia the chat attachment picker
Credentials (User Settings → Credentials)API keys and secretsPer user / workspace / orgVia credential picker in flows and tools
Variables (User Settings → Variables)Named configuration valuesPer user / workspace / orgVia {{$vars.NAME}} in flows

The user file store is specifically for artifacts produced by AI on your behalf — outputs, not inputs. Inputs live elsewhere.