Before installing Pulsar Server, ensure your system meets the following requirements:
1. A compatible NVIDIA GPU (with CUDA 12.1+ support) or AMD GPU (with ROCm 6.1+ support)
2. At least 8GB of RAM (16GB or more recommended)
3. At least 50GB of free disk space
4. Internet connection for downloading dependencies and models
5. Windows 10 64-bit: Pro, Enterprise, or Education (Build 16299 or later)
.env
file..env
file. # Function to detect GPU type
function Detect-GPUType {
$gpuInfo = Get-WmiObject Win32_VideoController | Where-Object { $_.AdapterCompatibility -match "NVIDIA|Advanced Micro Devices" }
if ($gpuInfo.AdapterCompatibility -match "NVIDIA") {
return "nvidia"
} elseif ($gpuInfo.AdapterCompatibility -match "Advanced Micro Devices") {
return "amd"
} else {
Write-Host "No compatible NVIDIA or AMD GPU detected. Exiting."
exit 1
}
}
# Detect GPU type
$gpuType = Detect-GPUType
# Set environment variables based on GPU type
$env:DOCKER_IMAGE = if ($gpuType -eq "nvidia") { "marcoastramind/pulsar-nvidia" } else { "marcoastramind/pulsar-amd" }
$env:GPU_RUNTIME = $gpuType
# Create necessary directories
$pulsarDir = "$env:USERPROFILE\pulsar"
$hfCacheDir = "$env:USERPROFILE\.cache\huggingface"
$dirs = @(
"$pulsarDir\configs",
"$pulsarDir\static",
"$pulsarDir\db_revision",
$hfCacheDir
)
foreach ($dir in $dirs) {
if (!(Test-Path $dir)) {
New-Item -ItemType Directory -Path $dir -Force | Out-Null
Write-Host "Created directory: $dir"
} else {
Write-Host "Directory already exists: $dir"
}
}
Set-Location -Path $pulsarDir
# Create .env file
$envFile = "$pulsarDir\.env"
if (!(Test-Path $envFile)) {
$securePassword = Read-Host "Enter a secure password for the database" -AsSecureString
$password = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($securePassword))
$primaryUse = Read-Host "Enter your expected use type (1:general, 2:roleplay, 3:roleplay 18+)"
$hfToken = Read-Host "Enter your HuggingFace token (press Enter to skip)"
$shouldSendTokenOnline = Read-Host "Allow sending your read token to your online profile? This is mandatory for adding private and gated models/loras (y/n)"
$ngrokToken = Read-Host "Enter your Ngrok token (press Enter to skip)"
$isAdultContent = if ($primaryUse -eq "3") { "true" } else { "false" }
$shouldSendOnline = if ($shouldSendTokenOnline -ieq "y") {"true"} else {"false"}
$primaryUseText = switch ($primaryUse) {
"1" { "general" }
"2" { "roleplay" }
"3" { "roleplay" }
default { "general" }
}
$envContent = @"
PULSAR_DB_PASSWORD=$password
PULSAR_HF_TOKEN=$hfToken
PULSAR_SHOULD_SEND_PRIVATE_TOKEN=$shouldSendOnline
PULSAR_NGROK_TOKEN=$ngrokToken
PULSAR_DB_USER=astramind
POSTGRES_DB_NAME=pulsar
PULSAR_DB_NAME=postgres:5432/pulsar
PRIMARY_USE=$primaryUseText
IS_ADULT_CONTENT=$isAdultContent
DOCKER_IMAGE=$env:DOCKER_IMAGE
GPU_RUNTIME=$env:GPU_RUNTIME
GPU_DEVICES=
GPU_GROUPS=
"@
$envContent | Out-File -FilePath $envFile -Encoding utf8
Write-Host "Created .env file: $envFile"
} else {
Write-Host ".env file already exists: $envFile"
}
# Create docker-compose.yml file
$composeFile = "$pulsarDir\docker-compose.yml"
$composeContent = @"
version: '3'
services:
postgres:
ports:
- "5432:5432"
image: postgres:latest
environment:
POSTGRES_DB: `${PULSAR_DB_NAME}
POSTGRES_USER: `${PULSAR_DB_USER}
POSTGRES_PASSWORD: `${PULSAR_DB_PASSWORD}
volumes:
- pgdata:/var/lib/postgresql/data
- ./init-db.sql:/docker-entrypoint-initdb.d/init-db.sql
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U astramind -d pulsar" ]
interval: 10s
timeout: 5s
retries: 5
pulsar:
ports:
- "40000:40000"
image: `${DOCKER_IMAGE}
volumes:
- `${USERPROFILE}\pulsar\configs:/home/user/Pulsar/configs:rw
- `${USERPROFILE}\pulsar\static:/home/user/Pulsar/static/item_images:rw
- `${USERPROFILE}\pulsar\.env:/home/user/Pulsar/.env:rw
- `${USERPROFILE}\.cache\huggingface:/home/user/.cache/huggingface:rw
- `${USERPROFILE}\pulsar\db_revision:/home/user/Pulsar/app/db/migration/alembic_/versions:rw
depends_on:
postgres:
condition: service_healthy
deploy:
resources:
reservations:
devices:
- driver: `${GPU_RUNTIME}
count: all
capabilities: [gpu]
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:40000/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 120s
"@
if ($gpuType -eq "amd") {
$composeContent += @"
devices:
- /dev/kfd
- /dev/dri
group_add:
- video
"@
}
$composeContent += @"
volumes:
pgdata:
"@
$composeContent | Out-File -FilePath $composeFile -Encoding utf8
Write-Host "Created docker-compose.yml file: $composeFile"
# Create init-db.sql file
$initDbFile = "$pulsarDir\init-db.sql"
$initDbContent = @"
-- Create user if not exists
DO
$$
BEGIN
IF NOT EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = 'astramind') THEN
CREATE USER astramind WITH PASSWORD '`${PULSAR_DB_PASSWORD}';
END IF;
END
$$;
-- Create database if not exists
SELECT 'CREATE DATABASE pulsar'
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'pulsar');
-- Grant privileges
GRANT ALL PRIVILEGES ON DATABASE pulsar TO astramind;
"@
$initDbContent | Out-File -FilePath $initDbFile -Encoding utf8
Write-Host "Created init-db.sql file: $initDbFile"
Write-Host "Setup complete. To start Pulsar AI, run 'docker-compose up -d' in the $pulsarDir directory."
cd $env:USERPROFILE\pulsar
docker-compose up -d
docker-compose logs -f
docker compose
command to start the Pulsar server. Once the server status shows as healthy, doubleclick the Pulsar UI application to access the interface. To stop the Pulsar server, execute the following command:docker-compose down
If you have any problems please contact us to Info AstraMind , or open an issues to Github
After you’ve installed Pulsar Server, download and install the Pulsar Client to obtain the Pulsar UI.
Sets Up Pulsar: It initializes all the necessary parts that Pulsar needs to function properly;
Fetches Essential Models: It downloads the models that power the app's features, enabling everything from basic functions to advanced capabilities;
Protects Your Data: All your conversation histories are stored directly on your device. This means your chats are private and secure, as they aren't saved online;
Supports Pulsar Client: Pulsar Server acts as the backbone for Pulsar Client. It allows the client application to connect and interact smoothly with the Pulsar App;
Key Features:Local Storage: Both the models and your chat histories are kept on your device. This ensures that your information stays private and under your control without needing an internet connection;
Compatibility: Currently, Pulsar Server works on Windows and Linux operating systems.
Pulsar Server is a crucial application needed to run the Pulsar App (Pulsar Client).
After downloading and installing Pulsar Server and creating an account, proceed to download Pulsar Client. Pulsar Client is the application that all users, including you, will use to access Pulsar App through your account on the Pulsar Server. Here’s how it works:
Start Pulsar Server: Once the server is up and running, anyone with the necessary credentials can connect;
Download and Install Pulsar Client: Available for Windows, Linux;
Create Your Personal Account: Using Pulsar Client, you can create your own internal account, allowing you to interact privately and independently from other users.
In summary, Pulsar Client enables you to use Pulsar App easily and securely, ensuring a personalized and private experience.
Share your account with friends and family while maintaining privacy and personalization for each user.
Shared Server Name: All connected users will use the same server name.
Individual User Profiles: Each person can create their own unique user profile. Customize and design your own characters to reflect your personal style. Personalized Experience: Personalize your interface and settings to suit your preferences.Keep your chats private, ensuring that your conversations remain confidential.
Local Data Management: All user data is managed locally on the server computer.No data is ever sent or stored online, guaranteeing complete privacy and security.