⚙
BOA
Server Specifications Guide
Recommended hardware, software, and infrastructure requirements for deploying
BOA (Business Operations Agent) by connected user count.
Version 2.2.1.1 — February 2026
This document provides recommended server specifications for deploying BOA based on your
organization's expected number of concurrent users. Use these guidelines to ensure reliable
performance, minimize latency, and plan for growth.
Architecture Summary
BOA is built on ASP.NET Core 8.0 with Blazor Server, running on IIS (Windows Server) with a SQL Server backend. Key architectural characteristics that affect sizing:
- Blazor Server (SignalR) — Each active browser tab maintains a persistent WebSocket connection to the server, consuming memory for the circuit state.
- SQL Server — All business data, documents, and configuration are stored in SQL Server. Query performance scales with CPU and RAM.
- RMM Agent Connections — Each deployed BOA RMM Agent sends heartbeats and alerts via REST API. Agents are lightweight but accumulate at scale.
- QuickBooks Online Sync — Background sync operations periodically communicate with the QuickBooks API. Minimal server impact.
- Document Storage — Uploaded files (invoices, photos, contracts) are stored on the server filesystem. Plan disk accordingly.
Deployment Models
| Model |
Description |
Best For |
| Single Server |
BOA application and SQL Server on the same machine |
1–25 users |
| Two-Tier |
Dedicated application server + dedicated database server |
25–100 users |
| Scaled |
Load-balanced app servers + clustered/HA database |
100+ users |
| Component |
Requirement |
Notes |
| Operating System |
Windows Server 2019 or later |
Windows Server 2022 recommended |
| .NET Runtime |
ASP.NET Core 8.0 Hosting Bundle |
Required Included in installer |
| Web Server |
IIS 10.0+ |
Required With WebSocket Protocol enabled |
| Database |
SQL Server 2019 or later |
Express edition for ≤10 users; Standard for 10+ |
| SQL Server Management Studio |
Latest version |
Recommended For administration |
| SSL Certificate |
Valid TLS certificate for HTTPS |
Recommended Required for production |
| Antivirus Exclusions |
Exclude IIS worker process and BOA app directory |
Recommended Prevents performance degradation |
IIS Configuration: BOA uses Blazor Server which requires WebSocket support. Ensure the
WebSocket Protocol feature is installed under IIS → Application Development Features.
The application pool must be set to No Managed Code with AlwaysRunning start mode.
The following tiers represent recommended minimum specifications. Actual requirements may vary based on
usage patterns, data volume, number of RMM agents, and enabled integrations.
Ideal for small businesses with a single technician or small team. Single-server deployment with BOA and SQL Server on the same machine.
| Component |
Minimum |
Recommended |
| CPU |
2 cores / 2.4 GHz |
4 cores / 3.0 GHz |
| RAM |
4 GB |
8 GB |
| Storage |
40 GB SSD |
80 GB SSD |
| Network |
100 Mbps |
1 Gbps |
| SQL Server |
SQL Server Express |
SQL Server Express |
| RMM Agents |
Up to 50 devices |
Note: SQL Server Express is limited to 1 GB RAM usage, 10 GB database size, and 4 cores.
This is sufficient for most small deployments. Monitor database size if storing many documents.
Suitable for growing teams with multiple technicians, office staff, and active customer portal users. Single-server deployment is still viable, but a two-tier setup is recommended for better performance.
| Component |
Minimum |
Recommended |
| CPU |
4 cores / 2.8 GHz |
6 cores / 3.2 GHz |
| RAM |
8 GB |
16 GB |
| Storage |
80 GB SSD |
160 GB NVMe SSD |
| Network |
1 Gbps |
1 Gbps |
| SQL Server |
SQL Server Express |
SQL Server Standard |
| RMM Agents |
Up to 200 devices |
Note: At this tier, consider upgrading from SQL Server Express to Standard edition
to remove the 10 GB database limit and 1 GB RAM cap. If budget is a concern, SQL Server Express remains
functional as long as the database stays under 10 GB.
Designed for organizations with dedicated IT departments, multiple service teams, and heavy portal usage. A two-tier deployment (separate app and database servers) is strongly recommended.
Application Server
| Component |
Minimum |
Recommended |
| CPU |
4 cores / 3.0 GHz |
8 cores / 3.4 GHz |
| RAM |
16 GB |
32 GB |
| Storage |
120 GB SSD |
250 GB NVMe SSD |
| Network |
1 Gbps |
1 Gbps (dedicated) |
Database Server
| Component |
Minimum |
Recommended |
| CPU |
4 cores / 3.0 GHz |
8 cores / 3.4 GHz |
| RAM |
16 GB |
32 GB |
| Storage |
200 GB SSD |
500 GB NVMe SSD (RAID 1 or 10) |
| SQL Server |
SQL Server Standard |
SQL Server Standard |
| RMM Agents |
Up to 500 devices |
Note: Separating the application and database servers provides significant performance
gains at this scale. Blazor Server's in-memory circuit state benefits from dedicated application server RAM,
while SQL Server benefits from having its own memory pool for query caching.
For large organizations with high-volume operations, multiple offices, and extensive RMM deployments.
Requires a scaled deployment with load balancing and database high availability.
Application Servers (2+ behind load balancer)
| Component |
Per Server (Minimum) |
Per Server (Recommended) |
| CPU |
8 cores / 3.2 GHz |
12+ cores / 3.6 GHz |
| RAM |
32 GB |
64 GB |
| Storage |
200 GB NVMe SSD |
500 GB NVMe SSD |
| Network |
1 Gbps (dedicated) |
10 Gbps |
Database Server
| Component |
Minimum |
Recommended |
| CPU |
8 cores / 3.2 GHz |
16+ cores / 3.6 GHz |
| RAM |
32 GB |
64–128 GB |
| Storage |
500 GB NVMe (RAID 10) |
1+ TB NVMe SSD (RAID 10) |
| SQL Server |
SQL Server Standard |
SQL Server Enterprise (for HA/AG) |
| RMM Agents |
500–2,000+ devices |
Important: Blazor Server uses SignalR (WebSockets) which maintains sticky sessions.
When deploying behind a load balancer, you must configure session affinity (sticky sessions)
and a shared SignalR backplane (Redis or SQL Server) so circuits survive server failover.
Document storage should use a shared file system (SMB share or cloud storage) accessible to all app servers.
| Specification |
1–10 Users |
11–25 Users |
26–75 Users |
76–200+ Users |
| Deployment |
Single Server |
Single or Two-Tier |
Two-Tier |
Scaled / HA |
| App Server CPU |
4 cores |
6 cores |
8 cores |
12+ cores × 2 |
| App Server RAM |
8 GB |
16 GB |
32 GB |
64 GB × 2 |
| DB Server CPU |
(shared) |
(shared or 4 cores) |
8 cores |
16+ cores |
| DB Server RAM |
(shared) |
(shared or 16 GB) |
32 GB |
64–128 GB |
| Total Storage |
80 GB SSD |
160 GB SSD |
750 GB NVMe |
2+ TB NVMe |
| SQL Edition |
Express |
Express / Standard |
Standard |
Standard / Enterprise |
| RMM Agents |
Up to 50 |
Up to 200 |
Up to 500 |
2,000+ |
| Est. Monthly Cost* |
$20–$50 |
$80–$150 |
$250–$500 |
$800+ |
* Cloud hosting estimates based on typical cloud VM pricing (AWS, Azure, or similar). On-premises costs will vary based on hardware procurement and existing infrastructure.
Understanding how BOA uses memory helps with capacity planning. The following is an approximate per-component memory budget:
| Component |
Base Usage |
Per User / Per Agent |
Notes |
| Windows Server OS |
1.5–2 GB |
— |
Base OS overhead |
| IIS + ASP.NET Core |
200–400 MB |
— |
Application startup, DI container, static assets |
| Blazor Server Circuits |
— |
~2–5 MB per active tab |
Each browser tab = 1 circuit. Includes component tree + SignalR state |
| RMM Agent Connections |
— |
~50 KB per agent |
Stateless REST; only heartbeat/alert traffic |
| SQL Server (same machine) |
1–4 GB |
Scales with workload |
Express limited to 1 GB; Standard uses available RAM for caching |
| QuickBooks Sync |
~50 MB |
— |
Background sync process, runs periodically |
Example: A deployment with 25 concurrent users (averaging 1.5 tabs each) and 100 RMM agents:
OS (2 GB) + IIS (0.3 GB) + Circuits (38 tabs × 4 MB = 0.15 GB) + Agents (100 × 50 KB ≈ 0.005 GB) + SQL (4 GB) = ~6.5 GB
With the recommended 16 GB for this tier, there is ample headroom for peak usage and SQL Server buffer pool growth.
Disk Performance
SSD storage is strongly recommended for all tiers. BOA's performance is highly sensitive to disk I/O, particularly for:
- SQL Server data and log files (random read/write)
- SQL Server tempdb (heavy usage during complex queries and reports)
- Document uploads and retrieval
- IIS application logs
Storage Growth Estimates
| Data Type |
Typical Size |
Growth Rate |
| Core Database (accounts, invoices, service orders, inventory) |
500 MB – 2 GB base |
~100–500 MB / year per 10 active accounts |
| Document Attachments (invoices, photos, contracts, manuals) |
Varies widely |
~2–10 GB / year (depends on upload volume) |
| RMM Event Data (alerts, service orders from agents) |
Minimal (alerts only) |
~50–200 MB / year per 100 agents |
| SQL Server Logs (transaction logs) |
Depends on recovery model |
Configure regular log backups to prevent growth |
| Application Logs |
~50 MB |
Configure log rotation; retained logs ~500 MB |
Backup Storage: Plan for backup storage equal to 2–3× your database size. Daily full backups
with hourly differential backups is recommended for production. Store backups on a separate physical drive or
off-site location.
Bandwidth
| Traffic Type |
Bandwidth per Unit |
Notes |
| Blazor SignalR (per active user) |
~50–200 Kbps sustained |
Higher during data-heavy pages (dashboards, grids) |
| RMM Agent Heartbeats (per device) |
< 1 Kbps average |
60-second intervals, ~500 bytes per heartbeat |
| RMM Alerts |
~2 KB per alert |
Infrequent; only on threshold breach |
| Document Upload/Download |
Varies |
Bursty; depends on file sizes |
| QuickBooks Sync |
~100 Kbps during sync |
Periodic background process |
Firewall & Port Configuration
| Port |
Protocol |
Direction |
Purpose |
| 443 |
TCP (HTTPS) |
Inbound |
BOA web application and API (includes WebSocket upgrade) |
| 80 |
TCP (HTTP) |
Inbound |
HTTP → HTTPS redirect (optional) |
| 1433 |
TCP |
Internal only |
SQL Server (between app server and DB server in two-tier setups) |
WebSocket Support: If using a reverse proxy (NGINX, Apache, Cloudflare), ensure WebSocket
pass-through is enabled. Blazor Server will not function without persistent WebSocket connections.
Set proxy timeouts to at least 120 seconds for idle connections.
The BOA RMM Agent communicates with the server via lightweight REST API calls. Each agent's impact on
server resources is minimal, but large fleets require consideration:
| Agents Connected |
Heartbeat Load |
Server Impact |
Additional RAM |
| 1 – 50 |
~1 req/sec |
Negligible |
< 10 MB |
| 51 – 200 |
~3 req/sec |
Minimal |
~10–20 MB |
| 201 – 500 |
~8 req/sec |
Low |
~25–50 MB |
| 501 – 2,000 |
~33 req/sec |
Moderate |
~100–200 MB |
Alert Storms: If many agents trigger alerts simultaneously (e.g., after a network outage recovery),
the server will briefly handle a burst of alert + service order creation requests. The 30-minute cooldown
per alert type per device prevents sustained overload.
| Edition |
Max RAM |
Max DB Size |
Max Cores |
Cost |
Best For |
| Express |
1 GB |
10 GB |
4 cores |
Free |
1–10 users, small data sets |
| Standard |
128 GB |
524 PB |
24 cores |
Licensed |
11–150 users, production workloads |
| Enterprise |
OS Max |
524 PB |
OS Max |
Premium |
150+ users, HA / Always On |
SQL Server Express Limitations: The 10 GB database size limit includes all data, indexes, and
internal structures. Document attachments stored in the filesystem (not in SQL) do not count against this limit.
Monitor your database size with: SELECT SUM(size * 8 / 1024) AS SizeMB FROM sys.database_files
Recommended HA Strategy by Tier
| Tier |
Application HA |
Database HA |
Backup Strategy |
| Starter (1–10) |
None (single server) |
None |
Daily full backup to external drive or cloud |
| Small (11–25) |
None or cold standby |
Log shipping or manual failover |
Daily full + hourly differential |
| Mid-Market (26–75) |
Warm standby |
Always On Availability Groups (Basic) |
Full + differential + transaction log backups |
| Enterprise (76–200+) |
Active/Active load balanced |
Always On AG (multi-replica) |
Continuous log backups + geo-redundant |
Recovery Objectives
RPO (Recovery Point Objective)
- Starter: 24 hours
- Small: 1–4 hours
- Mid-Market: 15–60 minutes
- Enterprise: Near-zero (synchronous replication)
RTO (Recovery Time Objective)
- Starter: 4–8 hours
- Small: 1–2 hours
- Mid-Market: 15–30 minutes
- Enterprise: < 5 minutes (automatic failover)
BOA runs on any Windows Server environment. The following are recommended cloud VM sizes for popular platforms:
Microsoft Azure
| Tier |
App Server VM |
DB Server VM |
Or Azure SQL |
| Starter |
B2ms (2 vCPU, 8 GB) |
(same machine) |
Basic (5 DTU) |
| Small |
D2s v5 (2 vCPU, 8 GB) |
D4s v5 (4 vCPU, 16 GB) |
S2 (50 DTU) |
| Mid-Market |
D4s v5 (4 vCPU, 16 GB) |
E4s v5 (4 vCPU, 32 GB) |
S4 (200 DTU) |
| Enterprise |
D8s v5 (8 vCPU, 32 GB) × 2+ |
E8s v5 (8 vCPU, 64 GB) |
P4 (500 DTU) or Managed Instance |
Amazon Web Services (AWS)
| Tier |
App Server EC2 |
DB Server EC2 / RDS |
| Starter |
t3.large (2 vCPU, 8 GB) |
(same machine) or RDS db.t3.micro |
| Small |
m6i.large (2 vCPU, 8 GB) |
RDS db.m6i.large (2 vCPU, 8 GB) |
| Mid-Market |
m6i.xlarge (4 vCPU, 16 GB) |
RDS db.r6i.xlarge (4 vCPU, 32 GB) |
| Enterprise |
m6i.2xlarge (8 vCPU, 32 GB) × 2+ |
RDS db.r6i.2xlarge (8 vCPU, 64 GB) Multi-AZ |
- Windows Server 2019 or 2022 installed and updated
- IIS installed with WebSocket Protocol feature enabled
- ASP.NET Core 8.0 Hosting Bundle installed
- SQL Server installed and configured (appropriate edition for user count)
- Server meets or exceeds recommended hardware for target user tier
- SSD storage provisioned for OS, application, and database files
- Network firewall allows inbound HTTPS (port 443)
- SSL/TLS certificate obtained and ready for binding
- Backup strategy defined and tested
- Antivirus exclusions configured for IIS worker process and BOA directory
- Windows Firewall configured to allow SQL Server traffic (port 1433) between servers if using two-tier
- DNS record configured pointing to server's public IP (for external access)
- Static IP address assigned to server
- Server time synchronized via NTP (critical for authentication tokens)