Urgent.News

What's breaking now, across thousands of outlets.

Tech

I spent 6 months building a real operating system for web apps

For the last six months or so I've been building something a bit unusual: a real operating system for web apps. It's called PhreshOS. It's open source (MIT), and you can try a live demo right now: https://demo.phreshos.com/ I want to explain what it is, because "OS for web apps" can mean a lot of things. The idea PhreshOS is a programmable system that runs on your machine, with a desktop you open…

For the past six months, the individual has been developing a novel concept: an operating system specifically tailored for web applications, named PhreshOS. This open-source software (under the MIT license) can be accessed through a live demonstration at https://demo.phreshos.com/. The purpose of this interview is to elucidate the nature of PhreshOS, which diverges from conventional definitions of a web app operating system.

PhreshOS operates as a programmable system running on the user's device, with a desktop interface accessible via the browser. Users can access it from any location where they can reach their machine. The applications, or "Programs," run within this system and are constructed using familiar web development tools such as TypeScript, React, and Vite.

The unique feature of PhreshOS is that it handles routine tasks like user authentication, communication between app components, and managing app windows, storage, and permissions. Consequently, developers only need to focus on crafting the unique functionality of their applications.

In PhreshOS, each application consists of two components: a Server and a Client. The Server runs in the background, managing application logic, while the Client presents the application within a window. For instance, a simple Program might look like this:

The Server component maintains a counter:

```javascript

import { context } from '@phreshos/server'

let count = 0

context.answer('read', () => count)

context.subscribe('increment', () => { count += 1 })

context.publish('changed', count)

```

And the Client component retrieves the counter value and reacts to changes:

```javascript

import { context } from '@phreshos/client'

const count = await context.server.ask('number', 'read')

context.server.subscribe('changed', render)

context.server.publish('increment')

```

This model eliminates the need for HTTP routes, WebSocket setups, or authentication middleware. Both the Server and Client components interact through three commands: `ask` retrieves data, `publish` broadcasts changes, and `subscribe` listens for updates. This system can be utilized by AI agents directly, enabling them to execute system operations as if they were human users. For example, an agent can list installed programs, create new ones, maximize app windows, or query system logs.

The system's design aims to integrate seamlessly with existing agent workflows. Agents can access the entire system and its applications using standard commands, without requiring custom interfaces. For instance, the command `phresh endpoint ask --program notes --process main --endpoint server --event notes.list --json` allows an agent to retrieve notes data from a specific application, demonstrating the system's flexibility and efficiency.

PhreshOS is being developed using Node.js 24.15 or later, and can be installed globally with `npm install --global @phreshos/cli`. To test it, users should open the provided URL in their browser and create an account. The development team is currently focusing on enhancing compatibility with different operating systems, particularly Windows.

For those interested in trying it out, the system is available for use on macOS and Linux, with potential support for Windows in the future. For more information, users can refer to the project's GitHub repository, documentation, or live demo.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

You Might Not Need a Vector Database

A RAG pipeline is a lot of parts: a chunker, an embedding model, a vector database, a retriever, usually a reranker, and an eval harness to tell you when retrieval quietly got worse.

  • CAG replaces vector database with corpus in prompt
  • CAG eliminates retrieval errors by caching entire knowledge base
  • CAG cost-effective for smaller, static corpora

Ollama Connection Refused? The 60-Second Triage

Originally published on mrsaynothing.dev This shipped today on mrsaynothing.dev — the agent-run site's daily post. Receipts live there first.

  • Ollama reports "Connection refused" due to server not listening on port 11434.
  • Verify Ollama service status with systemctl status ollama or ollama list.
  • Wrong port/host or Docker container issues cause connection errors.

More from Wednesday 30 September →