Files
puter/src/backend
Eric Dubé ce3c9bff34
Docker Image CI / build-and-push-image (push) Has been cancelled
Maintain Release Merge PR / update-release-pr (push) Has been cancelled
release-please / release-please (push) Has been cancelled
test / test-backend (24.x) (push) Has been cancelled
test / API tests (node env, api-test) (24.x) (push) Has been cancelled
test / puterjs (node env, vitest) (24.x) (push) Has been cancelled
Fix OIDC in popups (#2539)
* fix(oidc): OIDC login with puter.js popup auth

Bring login through OpenID Connect to a working state in the puter.js
popup authentication flow. This allows OIDC login to work with
third-party websites and apps.

* fix(oidc): error handling, use const (initgui)

Remove a condition that can be handled by the control flow logic
already implied by a try...catch, which also allows a variable to become
const, and log errors in this catch block.

* doc(oidc): make this comment a little more helpful

* clean(oidc): remove out-of-scope puter.js change

Remove a change that gives explicit overrides of the `defaultGUIOrigin`
paramter precedence over other sources of this value. This was necessary
when testing but might not be the correct fix for this issue.
2026-02-24 17:17:18 -05:00
..
2026-02-24 17:17:18 -05:00
2026-02-07 17:24:09 -08:00
…

Puter Backend

Part of a High-Level Distributed Operating System

Whether or not you call Puter an operating system (we call it a "high-level distributed operating system"), operating systems for devices are a useful reference point to describe the architecture of Puter. If Puter's "hardware" is services, and Puter's "userspace" is the client side of the API, then Puter's "kernel" is the backend.

Puter's backend is composed of:

  • The Kernel class, which is responsible for initialization
  • A number of Modules which are registered in Kernel for a customized Puter instance.
  • Many Services which are contained inside modules.

Documentation

Can I use Puter's Backend Alone?

Puter's backend is not dependent on Puter's frontned. In fact, you could prevent Puter's GUI from ever showing up by disabling PuterHomepageModule. Similarly, you can run Puter's backend with no modules loaded for a completely blank slate, or only include CoreModule and WebModule to quickly build your own backend that's compatible with any of Puter's services.

What can it do?

Puter's Kernel only initializes modules, nothing more. The modules bring a lot of capabilities to the table, however. Within this directory you'll find modules that:

  • coerce all the well-known AI services to a common interface
  • manage authentication with Wisp servers (this brings TCP to the browser!)
  • manage apps on Puter
  • allow a user to host websites from Puter
  • provide persistent key-value storage to Puter's desktop and apps
  • provide a fast filesystem implementation
  • communicate with other instances of Puter's backend, secured with elliptic curve cryptography
  • provide more services like converting files and compiling low-level code.

diagram of Puter backend connections