Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Build output
build/output/
*.exe

# OS files
.DS_Store
Thumbs.db
desktop.ini

# Node
node_modules/
npm-debug.log

# Plugin data (runtime, not shipped)
bates-core/plugins/*/data/
bates-core/plugins/*/node_modules/
bates-enhance/integrations/*/node_modules/

# IDE
.vscode/
.idea/
*.swp
*.swo

# Secrets (should never be committed)
*.env
.env.*
credentials.json
auth-profiles.json
*.key
*.pem

# Temporary
*.tmp
*.bak
*.orig

# Search index data
bates-enhance/integrations/search/search-index/db/
bates-enhance/integrations/search/search-index/venv/
49 changes: 49 additions & 0 deletions DISCLAIMER.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
BATES AI ASSISTANT -- IMPORTANT DISCLAIMER

PLEASE READ CAREFULLY BEFORE PROCEEDING WITH INSTALLATION.

This software is provided "AS IS", without warranty of any kind, express
or implied. This is an EXPERIMENTAL, PRE-RELEASE PROJECT under active
development.

By installing and using this software, you acknowledge and accept the
following:

1. USE AT YOUR OWN RISK. The authors, contributors, and maintainers of
this project accept no responsibility or liability for any damage,
data loss, system instability, security incidents, unexpected costs,
or any other harm resulting from the use or misuse of this software.

2. SYSTEM MODIFICATIONS. This installer modifies your system
configuration, including enabling WSL2, installing packages, creating
systemd services, setting up cron jobs, and configuring network
services. These changes may affect your system's stability, security,
and performance.

3. THIRD-PARTY SERVICES. This software interacts with third-party APIs
and services (Anthropic, OpenAI, Google, Telegram, Twilio, Microsoft
365, ElevenLabs, and others). You are solely responsible for any
costs, terms of service violations, or consequences arising from the
use of these services.

4. NO WARRANTY. No guarantee of correctness, security, or fitness for
any particular purpose. The installer scripts have been tested on
specific hardware and software configurations. Your results may vary.

5. AUTONOMOUS AI AGENTS. This software manages AI agents that can take
autonomous actions including sending messages, making API calls,
reading and writing files, and executing commands. You are responsible
for supervising and configuring these agents appropriately.

6. BACK UP YOUR DATA before running the installer. We strongly recommend
testing on a dedicated or non-critical machine first.

7. NO AFFILIATION. This project is not affiliated with, endorsed by, or
supported by OpenClaw, Anthropic, OpenAI, Google, Microsoft, Telegram,
Twilio, ElevenLabs, or any other third-party service mentioned herein.

This software is licensed under the Apache License, Version 2.0. See the
LICENSE file for the full license text.

BY PROCEEDING WITH THE INSTALLATION, YOU ACCEPT FULL RESPONSIBILITY FOR
ANY AND ALL CONSEQUENCES.
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,22 @@ Built on [OpenClaw](https://openclaw.ai) · Open Source · Apache 2.0

---

> **DISCLAIMER -- PLEASE READ BEFORE PROCEEDING**
>
> This software is provided **"AS IS"**, without warranty of any kind, express or implied. This is an **experimental, pre-release project** under active development. By using this software, you acknowledge and accept the following:
>
> - **USE AT YOUR OWN RISK.** The authors, contributors, and maintainers of this project accept **no responsibility or liability** for any damage, data loss, system instability, security incidents, unexpected costs, or any other harm resulting from the use or misuse of this software.
> - This installer **modifies your system configuration**, including enabling WSL2, installing packages, creating systemd services, setting up cron jobs, and configuring network services. These changes may affect your system's stability, security, and performance.
> - This software interacts with **third-party APIs and services** (Anthropic, OpenAI, Google, Telegram, Twilio, Microsoft 365, etc.). You are solely responsible for any costs, terms of service violations, or consequences arising from the use of these services.
> - **No guarantee of correctness, security, or fitness for any particular purpose.** The installer scripts have been tested on specific hardware and software configurations. Your results may vary.
> - This software manages **AI agents that can take autonomous actions** including sending messages, making API calls, reading and writing files, and executing commands. You are responsible for supervising and configuring these agents appropriately.
> - **Back up your data before running the installer.** We strongly recommend testing on a dedicated or non-critical machine first.
> - This project is **not affiliated with, endorsed by, or supported by** OpenClaw, Anthropic, OpenAI, Google, Microsoft, Telegram, Twilio, ElevenLabs, or any other third-party service mentioned herein.
>
> **BY PROCEEDING WITH THE INSTALLATION, YOU ACCEPT FULL RESPONSIBILITY FOR ANY AND ALL CONSEQUENCES.**

---

## What Bates Does

Bates runs 24/7 on your Windows PC and handles your operational workflow autonomously:
Expand Down
184 changes: 184 additions & 0 deletions bates-core/BatesCore.iss
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
; BatesCore.iss -- Inno Setup script for Bates AI Assistant
; Compiles to BatesCore-2.0.0.exe
;
; Prerequisites handled by this installer:
; - Windows 10/11 Pro (build 19041+)
; - 8GB RAM minimum
; - 20GB free disk space
; - Internet connectivity
; - Admin rights (for WSL2 enablement)

#define MyAppName "Bates AI Assistant"
#define MyAppVersion "2.0.0"
#define MyAppPublisher "getBates"
#define MyAppURL "https://github.com/getBates/Bates"

[Setup]
AppId={{A7E3B4C1-8F9D-4E6A-B2C5-1D0F3E7A9B8C}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}/issues
DefaultDirName={localappdata}\BatesInstaller
DefaultGroupName={#MyAppName}
OutputDir=..\build\output
OutputBaseFilename=BatesCore-{#MyAppVersion}
Compression=lzma2/ultra64
SolidCompression=yes
PrivilegesRequired=admin
AllowNoIcons=yes
DisableProgramGroupPage=yes
LicenseFile=..\DISCLAIMER.txt
InfoBeforeFile=..\LICENSE
SetupIconFile=assets\bates-icon.ico
WizardSmallImageFile=assets\installer-logo.bmp
WizardImageFile=assets\installer-banner.bmp
WizardStyle=modern
ArchitecturesInstallIn64BitMode=x64compatible
MinVersion=10.0.19041

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"

[Files]
; Disclaimer (also shown by install.ps1 and core-setup.sh)
Source: "..\DISCLAIMER.txt"; DestDir: "{app}"; Flags: ignoreversion

; Core setup scripts
Source: "core-setup.sh"; DestDir: "{app}"; Flags: ignoreversion
Source: "core-configure.sh"; DestDir: "{app}"; Flags: ignoreversion
Source: "core-verify.sh"; DestDir: "{app}"; Flags: ignoreversion
Source: "install.ps1"; DestDir: "{app}"; Flags: ignoreversion

; Libraries
Source: "lib\*"; DestDir: "{app}\lib"; Flags: ignoreversion recursesubdirs

; Workspace templates
Source: "workspace-core\*"; DestDir: "{app}\workspace-core"; Flags: ignoreversion recursesubdirs

; Scripts
Source: "scripts-core\*"; DestDir: "{app}\scripts-core"; Flags: ignoreversion

; Plugins
Source: "plugins\*"; DestDir: "{app}\plugins"; Flags: ignoreversion recursesubdirs

; Systemd templates
Source: "systemd\*"; DestDir: "{app}\systemd"; Flags: ignoreversion

; Config templates
Source: "templates\*"; DestDir: "{app}\templates"; Flags: ignoreversion

; Crontab template
Source: "crontab\*"; DestDir: "{app}\crontab"; Flags: ignoreversion

; Brand assets
Source: "assets\*"; DestDir: "{app}\assets"; Flags: ignoreversion

[Run]
; Launch the PowerShell bootstrap after installation
Filename: "powershell.exe"; \
Parameters: "-ExecutionPolicy Bypass -File ""{app}\install.ps1"" -InstallDir ""{app}"""; \
StatusMsg: "Setting up Bates AI Assistant..."; \
Flags: runascurrentuser waituntilterminated

[UninstallRun]
; Run uninstall script if it exists
Filename: "wsl.exe"; \
Parameters: "-d Ubuntu-24.04 -- bash -c ""~/.openclaw/scripts/uninstall.sh --auto 2>/dev/null || true"""; \
Flags: runhidden waituntilterminated

[UninstallDelete]
Type: filesandordirs; Name: "{app}"

[Code]
// Pascal Script for prerequisite validation

function IsWindows10ProOrLater(): Boolean;
var
Version: TWindowsVersion;
begin
GetWindowsVersionEx(Version);
// Windows 10 = 10.0, build 19041+ (version 2004)
Result := (Version.Major >= 10) and (Version.Build >= 19041);
end;

function GetTotalRAM(): Integer;
var
MemStatus: MEMORYSTATUS;
begin
// Note: GlobalMemoryStatus is 32-bit limited, but good enough for our check
GlobalMemoryStatus(MemStatus);
Result := MemStatus.dwTotalPhys div (1024 * 1024 * 1024);
end;

function GetFreeDiskSpace(): Integer;
var
FreeBytesAvailable: Int64;
TotalBytes: Int64;
FreeBytes: Int64;
begin
if GetDiskFreeSpaceEx(ExpandConstant('{sd}'), FreeBytesAvailable, TotalBytes, FreeBytes) then
Result := FreeBytesAvailable div (1024 * 1024 * 1024)
else
Result := 0;
end;

function CheckInternetConnection(): Boolean;
var
WinHttpReq: Variant;
begin
Result := False;
try
WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1');
WinHttpReq.Open('GET', 'https://github.com', False);
WinHttpReq.SetTimeouts(5000, 5000, 5000, 5000);
WinHttpReq.Send('');
Result := (WinHttpReq.Status = 200);
except
Result := False;
end;
end;

function InitializeSetup(): Boolean;
var
RAM: Integer;
Disk: Integer;
ErrorMsg: String;
begin
Result := True;
ErrorMsg := '';

// Check Windows version
if not IsWindows10ProOrLater() then
begin
ErrorMsg := ErrorMsg + '- WSL2 requires Windows 10 Pro version 2004 (build 19041) or later.' + #13#10;
end;

// Check RAM
RAM := GetTotalRAM();
if RAM < 7 then // Use 7 as threshold (8GB reports as ~7.x)
begin
ErrorMsg := ErrorMsg + '- Bates needs at least 8GB RAM. Detected: ' + IntToStr(RAM) + 'GB.' + #13#10;
end;

// Check disk space
Disk := GetFreeDiskSpace();
if Disk < 20 then
begin
ErrorMsg := ErrorMsg + '- At least 20GB free disk space required. Available: ' + IntToStr(Disk) + 'GB.' + #13#10;
end;

// Check internet
if not CheckInternetConnection() then
begin
ErrorMsg := ErrorMsg + '- Internet connection required for installation.' + #13#10;
end;

if ErrorMsg <> '' then
begin
MsgBox('Prerequisites not met:' + #13#10 + #13#10 + ErrorMsg + #13#10 +
'Please fix these issues and try again.', mbError, MB_OK);
Result := False;
end;
end;
Binary file added bates-core/assets/bates-icon.ico
Binary file not shown.
Binary file added bates-core/assets/installer-banner.bmp
Binary file not shown.
Binary file added bates-core/assets/installer-logo.bmp
Binary file not shown.
Binary file added bates-core/assets/installer-splash.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading