* tests: add unit tests for PuterAIController: [#2965] Adds offline PuterAIController.test.ts with stubbed drivers covering: route registration (paths and per-route auth options), app-actor gating across all four chat-proxy routes, body validation (messages must be an array; openaiCompletions prompt must be a string; openaiResponses provider must be openai-responses), driver delegation and request shaping (model + messages + provider defaults), response shaping for OpenAI chat-completion / text-completion / Responses envelopes and Anthropic message envelope (text + tool_use blocks), SSE streaming with [DONE] terminator, model-listing endpoints with hidden-id filtering and 501 when list() is unavailable, and the HMAC-gated video proxy's input/expiry/secret guards. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * tests: PuterAIController uses setupTestServer + spy on aiChat.complete Drops the manual driver/controller stub apparatus (makeStubDriver, makeController, custom dep builders) in favour of the live wired controller from server.controllers.puterAi. Each test that needs a canned chat completion result spies on server.drivers.aiChat.complete, which keeps the unit-of-test focused on the controller (validation, response shape, SSE streaming) without dragging in chat-driver model resolution and credit checks. Aligns with AGENTS.md: "Prefer test server over mocking deps." The "500 when URL signature secret missing" assertion was dropped — the default config wires a secret, so the branch is unreachable in the live test server. Replaced with the equivalent 403-on-invalid- signature assertion which actually exercises the HMAC gate. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The Open-Source Internet Computer!
« LIVE DEMO »
Puter.com
·
App Store
·
Developers
·
Discord
·
Reddit
·
X
Puter
Puter is an advanced, open-source, self-hostable internet computer designed to be feature-rich, fast, and highly extensible.
For Users
Puter's goal is to provide you with every app and feature you need to work, create, and play under one roof. From a simple Notepad and Voice Recorder to Spreadsheet and Camera, Puter wants to be the all-in-one solution for your digital life.
For Developers
Puter provides everything you need to build and publish web apps and games. From AI to Cloud Storage and Database to Serverless Workers, Puter has you covered. Puter also helps you get users! Once you build your app, you can publish it on our App Store to reach and monetize users.
Getting Started
💻 Local Development
git clone https://github.com/HeyPuter/puter
cd puter
npm install
npm start
→ This should launch Puter at http://puter.localhost:4100
🚀 Self-Hosting
Linux/macOS
curl -fsSL https://puter.com/selfhost | sh
Windows
irm https://puter.com/selfhost?os=windows | iex
→ For more details, see Self-Hosting Puter.
☁️ Puter.com
Puter is available as a hosted service at puter.com.
Support
Connect with the maintainers and community through these channels:
- Bug report or feature request? Please open an issue.
- Discord: discord.com/invite/PQcx7Teh8u
- X (Twitter): x.com/HeyPuter
- Reddit: reddit.com/r/puter/
- Mastodon: mastodon.social/@puter
- Security issues? security@puter.com
- Email maintainers at hi@puter.com
We are always happy to help you with any questions you may have. Don't hesitate to ask!
License
This repository, including all its contents, sub-projects, modules, and components, is licensed under AGPL-3.0 unless explicitly stated otherwise. Third-party libraries included in this repository may be subject to their own licenses.
Translations
- Arabic / العربية
- Armenian / Հայերեն
- Bengali / বাংলা
- Chinese / 中文
- Danish / Dansk
- English
- Farsi / فارسی
- Finnish / Suomi
- French / Français
- German / Deutsch
- Hebrew/ עברית
- Hindi / हिंदी
- Hungarian / Magyar
- Indonesian / Bahasa Indonesia
- Italian / Italiano
- Japanese / 日本語
- Korean / 한국어
- Malay / Bahasa Malaysia
- Malayalam / മലയാളം
- Polish / Polski
- Portuguese / Português
- Punjabi / ਪੰਜਾਬੀ
- Romanian / Română
- Russian / Русский
- Spanish / Español
- Swedish / Svenska
- Tamil / தமிழ்
- Telugu / తెలుగు
- Thai / ไทย
- Turkish / Türkçe
- Ukrainian / Українська
- Urdu / اردو
- Vietnamese / Tiếng Việt

