HeyPuter/puter · error · HttpError
not_found
not_found
Error message
App not found
What it means
Error "App not found" thrown in HeyPuter/puter.
Source
Thrown at src/backend/drivers/apps/AppDriver.js:276
// through this explicit contract. Keeps any future caller that
// forwards raw input into `create` from spoofing the owner.
const app = await this.appStore.create(fields, {
ownerUserId: actor.user.id,
appOwner: actor.app?.id ?? null,
});
if (filetypes)
await this.appStore.setFiletypeAssociations(app.id, filetypes);
this.#emitAppChanged({ app, action: 'created' });
return this.#toClient(app, actor);
}
async read({ uid, id, params = {}, ...rest } = {}) {
const actor = this.#requireActor();
const app = await this.#resolve({ uid, id });
if (!app)
throw new HttpError(404, 'App not found', {
legacyCode: 'not_found',
});
await this.#checkReadAccess(app, actor);
// puter-js's `puter.apps.get(name, opts)` packages opts under `params`
// (see `make_driver_method` / `Apps.get`), so stats options live at
// `args.params.stats_period` rather than the top level. Accept both
// shapes for forward-compat with anything that still flattens.
const stats_period = params.stats_period ?? rest.stats_period;
const stats_grouping = params.stats_grouping ?? rest.stats_grouping;
const needsStats =
params.stats !== false && (stats_period || stats_grouping);
// Detailed period/grouping is per-app only — skip the batch cache
// and go straight to the live query. The default (no options) goes
// through the cached batched path.View on GitHub (pinned to 908ec23eda)
Solutions
- Verify the app uid or name exists before calling the driver method.
- List the user's apps to confirm the target app identifier.
When it happens
Trigger: Thrown at src/backend/drivers/apps/AppDriver.js:276 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of HeyPuter/puter@908ec23eda (2026-08-12).
Data as JSON: /api/errors/0fbd937041099e97.
Report an issue: GitHub.