Personal Tutti workspace app for launching Windows applications through Wine.
中文说明见 中文.
This is a phase-one proof of concept:
- Tutti hosts the launcher UI.
- The app stores Wine profiles in the Tutti app data directory.
- The app starts native Wine windows for manual operation.
- When Wine is missing, the app can open Tutti terminal with the Homebrew install command prefilled for the user to review and run.
- The log panel can open Tutti's built-in Codex or Claude Code chat with the selected profile and session log prefilled.
- AI desktop control, VM management, embedded Windows rendering, and daemon-level Windows runtime APIs are intentionally out of scope.
Use App Center's Load unpacked action and select either:
package/
or, for local development:
.tutti/dev-app/
For this repository, the project root can also be loaded because it contains the
.tutti/dev-app/ wrapper.
Required fields:
Name: display name in the launcher.Executable path: the Windows.exefile to launch through Wine.
Recommended field:
Working directory: the process cwd. If you choose an executable through the UI and this field is empty, the app fills it with the executable's parent folder. This is usually correct for portable apps and games.
Advanced fields:
Wine command: custom Wine executable. Leave aswineto resolve from PATH.Wine prefix path: optionalWINEPREFIX. Leave empty to let Wine use its default prefix, usually~/.wine.Arguments: command-line flags passed after the.exepath.Environment: extraKEY=valuelines merged into the Wine process environment.
Use Notepad++ Portable for the first manual test:
https://github.com/notepad-plus-plus/notepad-plus-plus/releases/download/v8.9.6.4/npp.8.9.6.4.portable.x64.zip
Download the zip, unzip it, then choose the extracted notepad++.exe as the
Executable path.
Alternative installer smoke:
https://www.7-zip.org/a/7z2602-x64.exe
Validate the Tutti package:
pnpm checkBuild a release package directory for the Tutti app release workflow:
pnpm package:tuttiThe generated package is written to:
build/tutti-app/package/
This repository includes a production caller workflow for Tutti's reusable app release pipeline:
.github/workflows/publish-tutti-app-production.yml
The workflow calls:
tutti-os/tutti/.github/workflows/publish-tutti-app-release.yml@main
It expects the target GitHub repository or organization to provide the Tutti app
release AWS/OIDC variables described in the workflow. Run the workflow manually
with release_bump=patch|minor|major. Use publish_catalog=true to publish the
release and update the App Center catalog in the same run.
For AI agents working in this repository:
- Start with docs/HUMAN_AI_GUIDE.md.
- Keep the app small and local-first.
- Do not add AI control, VM orchestration, or OS-level runtime ownership to this package without a product decision to move those responsibilities into Tutti.
- Do not write durable state outside
TUTTI_APP_DATA_DIR. - Do not hard-code host or port; Tutti injects
TUTTI_APP_HOSTandTUTTI_APP_PORT.
Windows App Launcher 是一个个人 Tutti workspace app,用 Wine 启动 Windows 软件。
这是阶段一验证:
- Tutti 托管启动器 UI。
- app 把 Wine profile 存在 Tutti app data 目录。
- app 启动原生 Wine 窗口,先支持人工操作。
- Wine 缺失时,app 可以打开 Tutti terminal,并预填 Homebrew 安装命令,等待用户确认执行。
- 日志区域可以打开 Tutti 内置 Codex 或 Claude Code 对话,并自动带上选中的 profile 和 session 日志。
- AI 桌面控制、VM 管理、Windows 画面嵌入、Tutti daemon 级 Windows runtime API 暂不在这个包里实现。
在 App Center 里使用 Load unpacked,选择:
package/
本地调试也可以选择:
.tutti/dev-app/
或者直接选择仓库根目录,因为根目录包含 .tutti/dev-app/ 包装。
必填:
Name:启动器里展示的名称。Executable path:要通过 Wine 启动的 Windows.exe。
推荐:
Working directory:进程工作目录。通过 UI 选择.exe时,如果这个字段为空, app 会自动填成.exe所在目录。对 portable app 和游戏通常是正确默认值。
高级选项:
Wine command:自定义 Wine 可执行文件。默认wine,从 PATH 查找。Wine prefix path:可选WINEPREFIX。留空时 Wine 使用默认 prefix,通常是~/.wine。Arguments:传给.exe的命令行参数。Environment:额外环境变量,每行KEY=value。
仓库内置 Tutti app release caller workflow:
.github/workflows/publish-tutti-app-production.yml
它调用 Tutti 的复用发布 workflow。生产发布通过 GitHub Actions 手动触发,选择
release_bump=patch|minor|major;如果要同时更新 App Center catalog,保持
publish_catalog=true。