     1→# GuruConnect Requirements
     2→
     3→## Design Principles
     4→
     5→1. **End-user simplicity** - One-click or code-based session joining
     6→2. **Standalone capable** - Works independently, integrates with GuruRMM optionally
     7→3. **Technician-centric** - Built for MSP workflows
     8→
     9→---
    10→
    11→## End-User Portal (connect.azcomputerguru.com)
    12→
    13→### Unauthenticated View
    14→
    15→When a user visits the portal without being logged in:
    16→
    17→```
    18→┌─────────────────────────────────────────────────────┐
    19→│                                                     │
    20→│              [Company Logo]                         │
    21→│                                                     │
    22→│         Enter your support code:                    │
    23→│         ┌─────────────────────────┐                │
    24→│         │      8 4 7 2 9 1        │                │
    25→│         └─────────────────────────┘                │
    26→│                                                     │
    27→│              [ Connect ]                            │
    28→│                                                     │
    29→│  ─────────────────────────────────────────────────  │
    30→│                                                     │
    31→│  Instructions will appear here after clicking       │
    32→│  Connect, based on your browser.                    │
    33→│                                                     │
    34→└─────────────────────────────────────────────────────┘
    35→```
    36→
    37→### Connection Flow
    38→
    39→1. **User enters code** → Click "Connect"
    40→2. **Server validates code** → Returns session info or error
    41→3. **Attempt app launch** via custom protocol:
    42→   - `guruconnect://session/{code}`
    43→   - If app is installed, it launches and connects
    44→4. **If app doesn't launch** (timeout ~3 seconds):
    45→   - Auto-download small EXE (`GuruConnect-{code}.exe`)
    46→   - Show browser-specific instructions
    47→
    48→### Browser-Specific Instructions
    49→
    50→Detect browser via User-Agent and show appropriate guidance:
    51→
    52→**Chrome:**
    53→> "Click the download in the bottom-left corner of your screen, then click 'Open'"
    54→> [Screenshot of Chrome download bar]
    55→
    56→**Firefox:**
    57→> "Click 'Save File', then open your Downloads folder and double-click the file"
    58→> [Screenshot of Firefox download dialog]
    59→
    60→**Edge:**
    61→> "Click 'Open file' in the download notification at the top of your screen"
    62→> [Screenshot of Edge download prompt]
    63→
    64→**Safari:**
    65→> "Click the download icon in the toolbar, then double-click the file"
    66→> [Screenshot of Safari downloads]
    67→
    68→**Generic/Unknown:**
    69→> "Your download should start automatically. Look for the file in your Downloads folder and double-click to run it."
    70→
    71→### Custom Protocol Handler
    72→
    73→**Protocol:** `guruconnect://`
    74→
    75→**Format:** `guruconnect://session/{code}`
    76→
    77→**Registration:**
    78→- Permanent agent registers protocol handler on install
    79→- One-time agent does NOT register (to avoid clutter)
    80→
    81→**Behavior:**
    82→- If registered: OS launches installed agent with session code
    83→- If not registered: Browser shows "nothing happened" → triggers download fallback
    84→
    85→### One-Time Session Agent (Temp/Support)
    86→
    87→**Key Requirements:**
    88→- Runs in **user space** - NO admin elevation required
    89→- Downloads as `GuruConnect-{code}.exe` (code baked in)
    90→- ~3-5MB executable
    91→- Self-contained (no installer, no dependencies)
    92→- Connects directly to session on launch
    93→- Self-deletes after session ends (or on next reboot)
    94→
    95→**Elevation Note:**
    96→- Basic screen sharing works without admin
    97→- Some features (input to elevated windows, UAC dialogs) need admin
    98→- Show optional "Run as Administrator" button for full access
    99→
   100→---
   101→
   102→## Technician Dashboard (Logged-In View)
   103→
   104→### Visual Style
   105→
   106→Follow GuruRMM dashboard design:
   107→- HSL CSS variables for theming (dark/light mode support)
   108→- Sidebar navigation with lucide-react icons
   109→- Card-based content areas
   110→- Responsive layout (mobile hamburger menu)
   111→- Consistent component library (Button, Card, Input)
   112→
   113→### Navigation Structure
   114→
   115→```
   116→┌──────────────────────────────────────────────────────────────┐
   117→│ ┌──────────┐                                                 │
   118→│ │GuruConnect│                                                │
   119→│ └──────────┘                                                 │
   120→│                                                              │
   121→│  📋 Support      ← Active temp sessions                      │
   122→│  🖥 Access       ← Unattended/permanent sessions             │
   123→│  🔧 Build        ← Installer builder                         │
   124→│  ⚙ Settings     ← Preferences, groupings, appearance        │
   125→│                                                              │
   126→│ ─────────────                                                │
   127→│  👤 Mike S.                                                  │
   128→│     Admin                                                    │
   129→│  [Sign out]                                                  │
   130→└──────────────────────────────────────────────────────────────┘
   131→```
   132→
   133→### Support Tab (Active Temporary Sessions)
   134→
   135→**Layout:**
   136→```
   137→┌─────────────────────────────────────────────────────────────────────┐
   138→│ Support Sessions                        [ + Generate Code ]         │
   139→├─────────────────────────────────────────────────────────────────────┤
   140→│                                                                     │
   141→│  ▼ My Sessions (3)                                                  │
   142→│  ┌─────────────────────────────────────────────────────────────┐   │
   143→│  │ 847291 │ John's PC │ Connected │ 00:15:32 │ [Join] [End]    │   │
   144→│  │ 293847 │ Waiting   │ Pending   │ -        │ [Cancel]        │   │
   145→│  │ 182736 │ Sarah-PC  │ Connected │ 00:45:10 │ [Join] [End]    │   │
   146→│  └─────────────────────────────────────────────────────────────┘   │
   147→│                                                                     │
   148→│  ▼ Team Sessions (2)                      [Howard's sessions]       │
   149→│  ┌─────────────────────────────────────────────────────────────┐   │
   150→│  │ 928374 │ DESKTOP-A │ Connected │ 00:05:22 │ [View] [Join]   │   │
   151→│  │ 746382 │ Laptop-01 │ Connected │ 01:20:15 │ [View]          │   │
   152→│  └─────────────────────────────────────────────────────────────┘   │
   153→│                                                                     │
   154→│  ▶ Support Requests (1)                   [End-user initiated]      │
   155→│                                                                     │
   156→└─────────────────────────────────────────────────────────────────────┘
   157→```
   158→
   159→**Features:**
   160→- Sessions grouped by technician (own first, then team)
   161→- Real-time status updates (WebSocket)
   162→- Duration timer for active sessions
   163→- Quick actions: Join, View (spectate), End, Cancel
   164→- Support request queue from end-user tray icon requests
   165→
   166→### Access Tab (Unattended/Permanent Sessions)
   167→
   168→**Layout:**
   169→```
   170→┌─────────────────────────────────────────────────────────────────────┐
   171→│ Access                    🔍 [Search...]           [ + Build ]      │
   172→├──────────────┬──────────────────────────────────────────────────────┤
   173→│              │                                                      │
   174→│ ▼ By Company │  All Machines by Company              1083 machines  │
   175→│   (empty) 120│  ─────────────────────────────────────────────────── │
   176→│   4 Paws    1│  ┌──────────────────────────────────────────────┐   │
   177→│   ACG      10│  │ ● PC-FRONT01    │ Glaztech │ Win 11 │ Online │   │
   178→│   Glaztech 224  │ ● SERVER-DC01   │ Glaztech │ Svr 22 │ Online │   │
   179→│   AirPros   2│  │ ○ LAPTOP-SALES  │ Glaztech │ Win 10 │ 2h ago │   │
   180→│   ...        │  │ ● WORKSTATION-3 │ ACG      │ Win 11 │ Online │   │
   181→│              │  │ ...                                           │   │
   182→│ ▶ By Site    │  └──────────────────────────────────────────────┘   │
   183→│ ▶ By OS      │                                                      │
   184→│ ▶ By Tag     │  ──────────────── Machine Detail ─────────────────  │
   185→│              │  Name: PC-FRONT01                                    │
   186→│ ──────────── │  Company: Glaztech Industries                        │
   187→│ Smart Groups │  Site: Phoenix Office                                │
   188→│ ──────────── │  OS: Windows 11 Pro (23H2)                          │
   189→│  Attention  1│  User: jsmith                                        │
   190→│  Online    847  IP: 192.168.1.45 / 72.194.62.4                     │
   191→│  Offline 30d 241 Serial: 8XKJF93                                    │
   192→│  Offline 1yr 238 Last Seen: Now                                     │
   193→│  Outdated  516│                                                      │
   194→│  Recent     5│  [ Connect ] [ Wake ] [ Tools ▼ ]                    │
   195→│              │                                                      │
   196→│ ▶ My Filters │                                                      │
   197→│  + New Filter│                                                      │
   198→└──────────────┴──────────────────────────────────────────────────────┘
   199→```
   200→
   201→**Left Sidebar - Groupings:**
   202→- By Company (with counts, expandable)
   203→- By Site
   204→- By OS
   205→- By Tag
   206→- By Device Type
   207→- Smart Groups (auto-generated)
   208→- Custom Filters (user-created)
   209→
   210→**Main Panel:**
   211→- Machine list with status indicators (● online, ○ offline)
   212→- Quick info columns (configurable)
   213→- Click to select → shows detail panel
   214→
   215→**Right Panel - Machine Detail:**
   216→- Full machine info (Session, Device, Network sections)
   217→- Action buttons: Connect, Wake (if offline), Tools dropdown
   218→
   219→### Build Tab (Installer Builder)
   220→
   221→**Layout:**
   222→```
   223→┌─────────────────────────────────────────────────────────────────────┐
   224→│ Build Installer                                                     │
   225→├─────────────────────────────────────────────────────────────────────┤
   226→│                                                                     │
   227→│  Name:        [ Use Machine Name        ▼ ]                         │
   228→│  Company:     [ __________________________ ]    (autocomplete)      │
   229→│  Site:        [ __________________________ ]    (autocomplete)      │
   230→│  Department:  [ __________________________ ]                        │
   231→│  Device Type: [ Workstation              ▼ ]                        │
   232→│  Tag:         [ __________________________ ]                        │
   233→│                                                                     │
   234→│  Platform:    ○ Windows 64-bit (recommended)                        │
   235→│               ○ Windows 32-bit                                      │
   236→│               ○ Linux (coming soon)                                 │
   237→│                                                                     │
   238→│  ─────────────────────────────────────────────────────────────────  │
   239→│                                                                     │
   240→│  [ Download EXE ]  [ Download MSI ]  [ Copy URL ]  [ Send Link ]    │
   241→│                                                                     │
   242→└─────────────────────────────────────────────────────────────────────┘
   243→```
   244→
   245→### Settings Tab
   246→
   247→**Sections:**
   248→
   249→**Appearance:**
   250→- Theme: Light / Dark / System
   251→- Sidebar: Expanded / Collapsed by default
   252→- Default landing tab: Support / Access
   253→
   254→**Groupings:**
   255→- Default grouping for Access tab
   256→- Show/hide specific smart groups
   257→- Configure custom filter defaults
   258→
   259→**Notifications:**
   260→- Browser notifications: On/Off
   261→- Sound alerts: On/Off
   262→- Email alerts for support requests: On/Off
   263→
   264→**Session Defaults:**
   265→- Default session visibility: Private / Team / Company
   266→- Auto-accept from specific companies
   267→
   268→**Account:**
   269→- Change password
   270→- Two-factor authentication
   271→- API keys (for integrations)
   272→
   273→---
   274→
   275→## Session Types
   276→
   277→### 1. Support Sessions (Attended/One-Time)
   278→
   279→**End-User Experience:**
   280→- User visits portal (e.g., `support.azcomputerguru.com`)
   281→- Portal generates a 5-6 digit numeric code (e.g., `847291`)
   282→- User enters code OR clicks generated link
   283→- Small executable downloads and runs (no install required)
   284→- Session connects to assigned technician
   285→
   286→**Technician Experience:**
   287→- Generate session codes from dashboard
   288→- Codes can be pre-assigned to specific tech or first-come
   289→- Session appears on assigned tech's dashboard
   290→
   291→**Code Management:**
   292→- Codes remain active until used (no automatic expiration)
   293→- Anti-collision: Active codes tracked in database, never reissued while active
   294→- Once session completes, code is released back to pool
   295→- Manual code cancellation available
   296→- Optional: Tech can set manual expiration if desired
   297→- 6 digits = 1M codes, plenty of headroom for concurrent active codes
   298→
   299→### 2. Unattended Sessions (Permanent/MSP)
   300→
   301→**Installer Builder:**
   302→
   303→Build custom installers with pre-defined metadata fields:
   304→
   305→| Field | Description | Example |
   306→|-------|-------------|---------|
   307→| Name | Machine identifier | "Use Machine Name" (auto) or custom |
   308→| Company | Client/organization | "Glaztech Industries" |
   309→| Site | Physical location | "Phoenix Office" |
   310→| Department | Business unit | "Accounting" |
   311→| Device Type | Machine category | "Workstation", "Server", "Laptop" |
   312→| Tag | Custom label | "VIP", "Critical", "Testing" |
   313→
   314→**Installer Output Options:**
   315→- Download EXE directly
   316→- Download MSI (for GPO deployment)
   317→- Copy installer URL (for deployment scripts)
   318→- Send link via email
   319→
   320→**Server-Built Installers:**
   321→- Server generates installers on-demand
   322→- All metadata (Company, Site, etc.) baked into binary
   323→- Unique installer per configuration
   324→- No manual config file editing required
   325→- Server URL and auth token embedded
   326→
   327→**MSI Support:**
   328→- MSI wrapper for Group Policy deployment
   329→- Silent install support: `msiexec /i guruconnect.msi /qn`
   330→- Uninstall via Add/Remove Programs or GPO
   331→- Transform files (.mst) for custom configurations (optional)
   332→
   333→**End-User Reconfiguration:**
   334→- Re-run installer with flags to modify settings
   335→- `--reconfigure` flag enters config mode instead of reinstall
   336→- User can change: Name, Site, Tag, Department
   337→- Changes sync to server on next check-in
   338→- Useful for when machine moves to different site/department
   339→
   340→Example:
   341→```
   342→guruconnect-agent.exe --reconfigure --site "New York Office" --tag "Laptop"
   343→```
   344→
   345→**Deployment:**
   346→- Installed as Windows service
   347→- Persists across reboots
   348→- Auto-reconnects on network changes
   349→- Can be bundled with GuruRMM agent OR standalone
   350→- Metadata fields baked into agent at build time
   351→
   352→**Management:**
   353→- Assigned to client/site hierarchy
   354→- Always available for remote access (when machine is on)
   355→- Background service, no user interaction required
   356→
   357→---
   358→
   359→## Technician Dashboard
   360→
   361→### Session Visibility & Permissions
   362→
   363→| Role | Own Sessions | Team Sessions | All Sessions |
   364→|------|--------------|---------------|--------------|
   365→| Technician | Full access | View if permitted | No |
   366→| Senior Tech | Full access | View + join | View |
   367→| Admin | Full access | Full access | Full access |
   368→
   369→**Permission Model:**
   370→- Sessions created by a tech default to their dashboard
   371→- Configurable visibility: Private, Team, Company-wide
   372→- "Snoop" capability for supervisors (view session list, optionally join)
   373→- Session handoff between technicians
   374→
   375→### Auto-Generated Groups (Sidebar)
   376→
   377→The dashboard automatically generates navigable groups based on metadata and status:
   378→
   379→**By Metadata Field:**
   380→- All Machines by Company (with counts per company)
   381→- All Machines by Site
   382→- All Machines by OS
   383→- All Machines by Tag
   384→- All Machines by Device Type
   385→
   386→**Smart Status Groups:**
   387→| Group | Definition |
   388→|-------|------------|
   389→| Attention | Machines flagged for follow-up |
   390→| Host Connected | Tech currently connected |
   391→| Guest Connected | End-user currently at machine |
   392→| Recently Accessed | Connected within last 24 hours |
   393→| Offline 30 Days | No check-in for 30+ days |
   394→| Offline 1 Year | Stale agents, cleanup candidates |
   395→| Outdated Clients | Agent version behind current |
   396→| Powered on last 10 min | Just came online |
   397→
   398→**Custom Session Groups:**
   399→- Create saved filter combinations
   400→- Name and organize custom groups
   401→- Share groups with team (optional)
   402→
   403→### Machine Detail Panel
   404→
   405→When a machine is selected, show comprehensive info in side panel:
   406→
   407→**Session Info:**
   408→- Name, Company, Site, Department
   409→- Device Type, Tag
   410→- Hosts Connected (tech count)
   411→- Guests Connected (user present)
   412→- Guest Last Connected
   413→- Logged On User
   414→- Idle Time
   415→- Pending Activity
   416→- Custom Attributes
   417→
   418→**Device Info:**
   419→- Machine name
   420→- Operating System + Version
   421→- OS Install Date
   422→- Processor
   423→- Available Memory
   424→- Manufacturer & Model
   425→- Serial Number / Service Tag
   426→- Machine Description
   427→
   428→**Network Info:**
   429→- Public IP Address
   430→- Private IP Address(es)
   431→- MAC Address(es)
   432→
   433→**Other:**
   434→- Agent Version
   435→- Last Check-in
   436→- First Seen
   437→- Screenshot thumbnail (optional)
   438→
   439→### Unattended Session Search
   440→
   441→**Searchable Fields:**
   442→- Hostname / Computer name
   443→- Internal IP address
   444→- External/Public IP address
   445→- Currently logged-in user
   446→- OS type (Windows 10, 11, Server 2019, etc.)
   447→- OS version/build number
   448→- Serial number
   449→- Service tag (Dell, HP, Lenovo tags)
   450→- Client/Site assignment
   451→- Custom tags/labels
   452→- Last check-in time
   453→- Agent version
   454→
   455→**Filter Capabilities:**
   456→- Last check-in: < 1 hour, < 24 hours, < 7 days, > 30 days (stale)
   457→- OS type grouping
   458→- Client/Site hierarchy
   459→- Online/Offline status
   460→- Custom saved filters (user-defined queries)
   461→
   462→**Saved Searches:**
   463→- Create and name custom filter combinations
   464→- Share saved searches with team
   465→- Pin frequently used searches
   466→
   467→---
   468→
   469→## Remote Control Features
   470→
   471→### Screen Control
   472→- Real-time screen viewing
   473→- Mouse control (click, drag, scroll)
   474→- Keyboard input
   475→- Multi-monitor support (switch displays, view all)
   476→
   477→### Clipboard Integration
   478→
   479→**Priority Feature - Full Bidirectional Clipboard:**
   480→
   481→| Direction | Content Types |
   482→|-----------|---------------|
   483→| Local → Remote | Text, Files, Images, Rich text |
   484→| Remote → Local | Text, Files, Images, Rich text |
   485→
   486→**Special Capabilities:**
   487→- **Keystroke injection from clipboard** - Paste local clipboard as keystrokes (for login screens, BIOS, pre-OS environments)
   488→- Drag-and-drop file transfer
   489→- Large file support (chunked transfer with progress)
   490→
   491→### File Transfer
   492→- Browse remote filesystem
   493→- Upload files to remote
   494→- Download files from remote
   495→- Drag-and-drop support
   496→- Transfer queue with progress
   497→
   498→### Backstage Tools (No Screen Required)
   499→- Remote command prompt / PowerShell
   500→- Task manager view
   501→- Services manager
   502→- Registry editor (future)
   503→- Event log viewer (future)
   504→- System info panel
   505→
   506→### Chat / Messaging
   507→
   508→**Bidirectional Chat:**
   509→- Tech can message end user during session
   510→- End user can message tech
   511→- Chat persists across session reconnects
   512→- Chat history viewable in session log
   513→
   514→**End-User Initiated Contact:**
   515→- System tray icon for permanent agents
   516→- "Request Support" option in tray menu
   517→- User can type message/description of issue
   518→- Creates support request visible to assigned technicians
   519→
   520→**Technician Notifications:**
   521→- Dashboard shows pending support requests
   522→- Optional: Desktop/browser notifications for new requests
   523→- Optional: Email/webhook alerts for after-hours requests
   524→- Request queue with timestamps and user messages
   525→
   526→### Credential Management (Future)
   527→
   528→**Credential Injection:**
   529→- Integration with ITGlue for credential lookup
   530→- Integration with GuruRMM credential vault
   531→- Tech selects credential from dropdown, never sees actual password
   532→- Credential injected directly as keystrokes to remote session
   533→- Audit log of which credential was used, by whom, when
   534→
   535→**Local Credential Capture (Future):**
   536→- Optional feature to capture credentials entered during session
   537→- Stored encrypted, accessible only to admins
   538→- For scenarios where client provides password verbally
   539→
   540→---
   541→
   542→## Security Requirements
   543→
   544→### Authentication
   545→- Technician login with username/password
   546→- MFA/2FA support (TOTP)
   547→- SSO integration (future - Azure AD, Google)
   548→- API key auth for programmatic access
   549→
   550→### Session Security
   551→- All traffic over TLS/WSS
   552→- End-to-end encryption for screen data
   553→- Session consent prompt (attended sessions)
   554→- Configurable session timeout
   555→
   556→### Audit & Compliance
   557→- Full audit log: who, when, what machine, duration
   558→- Optional session recording
   559→- Action logging (file transfers, commands run)
   560→- Exportable audit reports
   561→
   562→---
   563→
   564→## Integration
   565→
   566→### GuruRMM Integration
   567→- Launch remote session from RMM agent list
   568→- Share agent data (hostname, IP, user, etc.)
   569→- Single authentication
   570→- Unified dashboard option
   571→
   572→### Standalone Mode
   573→- Fully functional without GuruRMM
   574→- Own user management
   575→- Own agent deployment
   576→- Can be licensed/sold separately
   577→
   578→---
   579→
   580→## Agent Requirements
   581→
   582→### Support Session Agent (One-Time)
   583→- Single executable, no installation
   584→- Downloads and runs from portal
   585→- Self-deletes after session ends
   586→- Minimal footprint (<5MB)
   587→- No admin rights required for basic screen share
   588→- Admin rights optional for elevated access
   589→
   590→### Unattended Agent (Permanent)
   591→- Windows service installation
   592→- Auto-start on boot
   593→- Runs as SYSTEM for full access
   594→- Configurable check-in interval
   595→- Resilient reconnection
   596→
   597→**Auto-Update:**
   598→- Agent checks for updates on configurable interval
   599→- Silent background update (no user interaction)
   600→- Rollback capability if update fails
   601→- Version reported to server for "Outdated Clients" filtering
   602→
   603→**Lightweight Performance:**
   604→- Minimal CPU/RAM footprint when idle
   605→- No performance impact during normal operation
   606→- Screen capture only active during remote session
   607→- Target: <10MB RAM idle, <1% CPU idle
   608→
   609→**Survival & Recovery:**
   610→- Survives reboots (Windows service auto-start)
   611→- Works in Safe Mode with Networking
   612→- Registers as safe-mode-capable service
   613→- Remote-initiated Safe Mode reboot (with networking)
   614→- Auto-reconnects after safe mode boot
   615→
   616→**Safe Mode Reboot Feature:**
   617→- Tech can trigger safe mode reboot from dashboard
   618→- Options: Safe Mode, Safe Mode with Networking, Safe Mode with Command Prompt
   619→- Agent persists through safe mode boot
   620→- Useful for malware removal, driver issues, repairs
   621→
   622→**Emergency Reboot:**
   623→- Force immediate reboot without waiting for processes
   624→- Bypasses "program not responding" dialogs
   625→- Equivalent to holding power button, but cleaner
   626→- Use case: Frozen system, hung updates, unresponsive machine
   627→- Confirmation required to prevent accidental use
   628→
   629→**Wake-on-LAN:**
   630→- Store MAC address for each agent
   631→- Send WoL magic packet to wake offline machines
   632→- Works within same broadcast domain (LAN)
   633→- For remote WoL: requires WoL relay/proxy on local network
   634→- Dashboard shows "Wake" button for offline machines with known MAC
   635→- Optional: Integration with GuruRMM agent as WoL relay
   636→
   637→### Reported Metrics (Unattended)
   638→- Hostname
   639→- Internal IP(s)
   640→- External IP
   641→- Current user
   642→- OS type and version
   643→- Serial number
   644→- Service tag
   645→- CPU, RAM, Disk (basic)
   646→- Last boot time
   647→- Agent version
   648→- Custom properties (extensible)
   649→
   650→---
   651→
   652→## Platform Support
   653→
   654→### Build Targets
   655→
   656→| Target | Architecture | Priority | Notes |
   657→|--------|--------------|----------|-------|
   658→| `x86_64-pc-windows-msvc` | 64-bit | Primary | Default build, Win7+ |
   659→| `i686-pc-windows-msvc` | 32-bit | Secondary | Legacy outliers |
   660→
   661→### Phase 1 (MVP)
   662→- Windows 10/11 agents (64-bit)
   663→- Windows Server 2016+ agents (64-bit)
   664→- Web dashboard (any browser)
   665→
   666→### Phase 2
   667→- 32-bit agent builds for legacy systems
   668→- Windows 7/8.1 support
   669→
   670→### Future Phases
   671→- macOS agent
   672→- Linux agent
   673→- Mobile viewer (iOS/Android)
   674→
   675→---
   676→
   677→## Non-Functional Requirements
   678→
   679→### Performance
   680→- Screen updates: 30+ FPS on LAN, 15+ FPS on WAN
   681→- Input latency: <100ms on LAN, <200ms on WAN
   682→- Support 50+ concurrent unattended agents per server (scalable)
   683→
   684→### Reliability
   685→- Agent auto-reconnect on network change
   686→- Server clustering for HA (future)
   687→- Graceful degradation on poor networks
   688→
   689→### Deployment
   690→- Single binary server (Docker or native)
   691→- Single binary agent (MSI installer + standalone EXE)
   692→- Cloud-hostable or on-premises
   693→

<system-reminder>
Whenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.
</system-reminder>

# GuruConnect Requirements

## Design Principles

1. **End-user simplicity** - One-click or code-based session joining
2. **Standalone capable** - Works independently, integrates with GuruRMM optionally
3. **Technician-centric** - Built for MSP workflows

---

## End-User Portal (connect.azcomputerguru.com)

### Unauthenticated View

When a user visits the portal without being logged in:

```
┌─────────────────────────────────────────────────────┐
│                                                     │
│              [Company Logo]                         │
│                                                     │
│         Enter your support code:                    │
│         ┌─────────────────────────┐                │
│         │      8 4 7 2 9 1        │                │
│         └─────────────────────────┘                │
│                                                     │
│              [ Connect ]                            │
│                                                     │
│  ─────────────────────────────────────────────────  │
│                                                     │
│  Instructions will appear here after clicking       │
│  Connect, based on your browser.                    │
│                                                     │
└─────────────────────────────────────────────────────┘
```

### Connection Flow

1. **User enters code** → Click "Connect"
2. **Server validates code** → Returns session info or error
3. **Attempt app launch** via custom protocol:
   - `guruconnect://session/{code}`
   - If app is installed, it launches and connects
4. **If app doesn't launch** (timeout ~3 seconds):
   - Auto-download small EXE (`GuruConnect-{code}.exe`)
   - Show browser-specific instructions

### Browser-Specific Instructions

Detect browser via User-Agent and show appropriate guidance:

**Chrome:**
> "Click the download in the bottom-left corner of your screen, then click 'Open'"
> [Screenshot of Chrome download bar]

**Firefox:**
> "Click 'Save File', then open your Downloads folder and double-click the file"
> [Screenshot of Firefox download dialog]

**Edge:**
> "Click 'Open file' in the download notification at the top of your screen"
> [Screenshot of Edge download prompt]

**Safari:**
> "Click the download icon in the toolbar, then double-click the file"
> [Screenshot of Safari downloads]

**Generic/Unknown:**
> "Your download should start automatically. Look for the file in your Downloads folder and double-click to run it."

### Custom Protocol Handler

**Protocol:** `guruconnect://`

**Format:** `guruconnect://session/{code}`

**Registration:**
- Permanent agent registers protocol handler on install
- One-time agent does NOT register (to avoid clutter)

**Behavior:**
- If registered: OS launches installed agent with session code
- If not registered: Browser shows "nothing happened" → triggers download fallback

### One-Time Session Agent (Temp/Support)

**Key Requirements:**
- Runs in **user space** - NO admin elevation required
- Downloads as `GuruConnect-{code}.exe` (code baked in)
- ~3-5MB executable
- Self-contained (no installer, no dependencies)
- Connects directly to session on launch
- Self-deletes after session ends (or on next reboot)

**Elevation Note:**
- Basic screen sharing works without admin
- Some features (input to elevated windows, UAC dialogs) need admin
- Show optional "Run as Administrator" button for full access

---

## Technician Dashboard (Logged-In View)

### Visual Style

Follow GuruRMM dashboard design:
- HSL CSS variables for theming (dark/light mode support)
- Sidebar navigation with lucide-react icons
- Card-based content areas
- Responsive layout (mobile hamburger menu)
- Consistent component library (Button, Card, Input)

### Navigation Structure

```
┌──────────────────────────────────────────────────────────────┐
│ ┌──────────┐                                                 │
│ │GuruConnect│                                                │
│ └──────────┘                                                 │
│                                                              │
│  📋 Support      ← Active temp sessions                      │
│  🖥 Access       ← Unattended/permanent sessions             │
│  🔧 Build        ← Installer builder                         │
│  ⚙ Settings     ← Preferences, groupings, appearance        │
│                                                              │
│ ─────────────                                                │
│  👤 Mike S.                                                  │
│     Admin                                                    │
│  [Sign out]                                                  │
└──────────────────────────────────────────────────────────────┘
```

### Support Tab (Active Temporary Sessions)

**Layout:**
```
┌─────────────────────────────────────────────────────────────────────┐
│ Support Sessions                        [ + Generate Code ]         │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  ▼ My Sessions (3)                                                  │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │ 847291 │ John's PC │ Connected │ 00:15:32 │ [Join] [End]    │   │
│  │ 293847 │ Waiting   │ Pending   │ -        │ [Cancel]        │   │
│  │ 182736 │ Sarah-PC  │ Connected │ 00:45:10 │ [Join] [End]    │   │
│  └─────────────────────────────────────────────────────────────┘   │
│                                                                     │
│  ▼ Team Sessions (2)                      [Howard's sessions]       │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │ 928374 │ DESKTOP-A │ Connected │ 00:05:22 │ [View] [Join]   │   │
│  │ 746382 │ Laptop-01 │ Connected │ 01:20:15 │ [View]          │   │
│  └─────────────────────────────────────────────────────────────┘   │
│                                                                     │
│  ▶ Support Requests (1)                   [End-user initiated]      │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘
```

**Features:**
- Sessions grouped by technician (own first, then team)
- Real-time status updates (WebSocket)
- Duration timer for active sessions
- Quick actions: Join, View (spectate), End, Cancel
- Support request queue from end-user tray icon requests

### Access Tab (Unattended/Permanent Sessions)

**Layout:**
```
┌─────────────────────────────────────────────────────────────────────┐
│ Access                    🔍 [Search...]           [ + Build ]      │
├──────────────┬──────────────────────────────────────────────────────┤
│              │                                                      │
│ ▼ By Company │  All Machines by Company              1083 machines  │
│   (empty) 120│  ─────────────────────────────────────────────────── │
│   4 Paws    1│  ┌──────────────────────────────────────────────┐   │
│   ACG      10│  │ ● PC-FRONT01    │ Glaztech │ Win 11 │ Online │   │
│   Glaztech 224  │ ● SERVER-DC01   │ Glaztech │ Svr 22 │ Online │   │
│   AirPros   2│  │ ○ LAPTOP-SALES  │ Glaztech │ Win 10 │ 2h ago │   │
│   ...        │  │ ● WORKSTATION-3 │ ACG      │ Win 11 │ Online │   │
│              │  │ ...                                           │   │
│ ▶ By Site    │  └──────────────────────────────────────────────┘   │
│ ▶ By OS      │                                                      │
│ ▶ By Tag     │  ──────────────── Machine Detail ─────────────────  │
│              │  Name: PC-FRONT01                                    │
│ ──────────── │  Company: Glaztech Industries                        │
│ Smart Groups │  Site: Phoenix Office                                │
│ ──────────── │  OS: Windows 11 Pro (23H2)                          │
│  Attention  1│  User: jsmith                                        │
│  Online    847  IP: 192.168.1.45 / 72.194.62.4                     │
│  Offline 30d 241 Serial: 8XKJF93                                    │
│  Offline 1yr 238 Last Seen: Now                                     │
│  Outdated  516│                                                      │
│  Recent     5│  [ Connect ] [ Wake ] [ Tools ▼ ]                    │
│              │                                                      │
│ ▶ My Filters │                                                      │
│  + New Filter│                                                      │
└──────────────┴──────────────────────────────────────────────────────┘
```

**Left Sidebar - Groupings:**
- By Company (with counts, expandable)
- By Site
- By OS
- By Tag
- By Device Type
- Smart Groups (auto-generated)
- Custom Filters (user-created)

**Main Panel:**
- Machine list with status indicators (● online, ○ offline)
- Quick info columns (configurable)
- Click to select → shows detail panel

**Right Panel - Machine Detail:**
- Full machine info (Session, Device, Network sections)
- Action buttons: Connect, Wake (if offline), Tools dropdown

### Build Tab (Installer Builder)

**Layout:**
```
┌─────────────────────────────────────────────────────────────────────┐
│ Build Installer                                                     │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  Name:        [ Use Machine Name        ▼ ]                         │
│  Company:     [ __________________________ ]    (autocomplete)      │
│  Site:        [ __________________________ ]    (autocomplete)      │
│  Department:  [ __________________________ ]                        │
│  Device Type: [ Workstation              ▼ ]                        │
│  Tag:         [ __________________________ ]                        │
│                                                                     │
│  Platform:    ○ Windows 64-bit (recommended)                        │
│               ○ Windows 32-bit                                      │
│               ○ Linux (coming soon)                                 │
│                                                                     │
│  ─────────────────────────────────────────────────────────────────  │
│                                                                     │
│  [ Download EXE ]  [ Download MSI ]  [ Copy URL ]  [ Send Link ]    │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘
```

### Settings Tab

**Sections:**

**Appearance:**
- Theme: Light / Dark / System
- Sidebar: Expanded / Collapsed by default
- Default landing tab: Support / Access

**Groupings:**
- Default grouping for Access tab
- Show/hide specific smart groups
- Configure custom filter defaults

**Notifications:**
- Browser notifications: On/Off
- Sound alerts: On/Off
- Email alerts for support requests: On/Off

**Session Defaults:**
- Default session visibility: Private / Team / Company
- Auto-accept from specific companies

**Account:**
- Change password
- Two-factor authentication
- API keys (for integrations)

---

## Session Types

### 1. Support Sessions (Attended/One-Time)

**End-User Experience:**
- User visits portal (e.g., `support.azcomputerguru.com`)
- Portal generates a 5-6 digit numeric code (e.g., `847291`)
- User enters code OR clicks generated link
- Small executable downloads and runs (no install required)
- Session connects to assigned technician

**Technician Experience:**
- Generate session codes from dashboard
- Codes can be pre-assigned to specific tech or first-come
- Session appears on assigned tech's dashboard

**Code Management:**
- Codes remain active until used (no automatic expiration)
- Anti-collision: Active codes tracked in database, never reissued while active
- Once session completes, code is released back to pool
- Manual code cancellation available
- Optional: Tech can set manual expiration if desired
- 6 digits = 1M codes, plenty of headroom for concurrent active codes

### 2. Unattended Sessions (Permanent/MSP)

**Installer Builder:**

Build custom installers with pre-defined metadata fields:

| Field | Description | Example |
|-------|-------------|---------|
| Name | Machine identifier | "Use Machine Name" (auto) or custom |
| Company | Client/organization | "Glaztech Industries" |
| Site | Physical location | "Phoenix Office" |
| Department | Business unit | "Accounting" |
| Device Type | Machine category | "Workstation", "Server", "Laptop" |
| Tag | Custom label | "VIP", "Critical", "Testing" |

**Installer Output Options:**
- Download EXE directly
- Download MSI (for GPO deployment)
- Copy installer URL (for deployment scripts)
- Send link via email

**Server-Built Installers:**
- Server generates installers on-demand
- All metadata (Company, Site, etc.) baked into binary
- Unique installer per configuration
- No manual config file editing required
- Server URL and auth token embedded

**MSI Support:**
- MSI wrapper for Group Policy deployment
- Silent install support: `msiexec /i guruconnect.msi /qn`
- Uninstall via Add/Remove Programs or GPO
- Transform files (.mst) for custom configurations (optional)

**End-User Reconfiguration:**
- Re-run installer with flags to modify settings
- `--reconfigure` flag enters config mode instead of reinstall
- User can change: Name, Site, Tag, Department
- Changes sync to server on next check-in
- Useful for when machine moves to different site/department

Example:
```
guruconnect-agent.exe --reconfigure --site "New York Office" --tag "Laptop"
```

**Deployment:**
- Installed as Windows service
- Persists across reboots
- Auto-reconnects on network changes
- Can be bundled with GuruRMM agent OR standalone
- Metadata fields baked into agent at build time

**Management:**
- Assigned to client/site hierarchy
- Always available for remote access (when machine is on)
- Background service, no user interaction required

---

## Technician Dashboard

### Session Visibility & Permissions

| Role | Own Sessions | Team Sessions | All Sessions |
|------|--------------|---------------|--------------|
| Technician | Full access | View if permitted | No |
| Senior Tech | Full access | View + join | View |
| Admin | Full access | Full access | Full access |

**Permission Model:**
- Sessions created by a tech default to their dashboard
- Configurable visibility: Private, Team, Company-wide
- "Snoop" capability for supervisors (view session list, optionally join)
- Session handoff between technicians

### Auto-Generated Groups (Sidebar)

The dashboard automatically generates navigable groups based on metadata and status:

**By Metadata Field:**
- All Machines by Company (with counts per company)
- All Machines by Site
- All Machines by OS
- All Machines by Tag
- All Machines by Device Type

**Smart Status Groups:**
| Group | Definition |
|-------|------------|
| Attention | Machines flagged for follow-up |
| Host Connected | Tech currently connected |
| Guest Connected | End-user currently at machine |
| Recently Accessed | Connected within last 24 hours |
| Offline 30 Days | No check-in for 30+ days |
| Offline 1 Year | Stale agents, cleanup candidates |
| Outdated Clients | Agent version behind current |
| Powered on last 10 min | Just came online |

**Custom Session Groups:**
- Create saved filter combinations
- Name and organize custom groups
- Share groups with team (optional)

### Machine Detail Panel

When a machine is selected, show comprehensive info in side panel:

**Session Info:**
- Name, Company, Site, Department
- Device Type, Tag
- Hosts Connected (tech count)
- Guests Connected (user present)
- Guest Last Connected
- Logged On User
- Idle Time
- Pending Activity
- Custom Attributes

**Device Info:**
- Machine name
- Operating System + Version
- OS Install Date
- Processor
- Available Memory
- Manufacturer & Model
- Serial Number / Service Tag
- Machine Description

**Network Info:**
- Public IP Address
- Private IP Address(es)
- MAC Address(es)

**Other:**
- Agent Version
- Last Check-in
- First Seen
- Screenshot thumbnail (optional)

### Unattended Session Search

**Searchable Fields:**
- Hostname / Computer name
- Internal IP address
- External/Public IP address
- Currently logged-in user
- OS type (Windows 10, 11, Server 2019, etc.)
- OS version/build number
- Serial number
- Service tag (Dell, HP, Lenovo tags)
- Client/Site assignment
- Custom tags/labels
- Last check-in time
- Agent version

**Filter Capabilities:**
- Last check-in: < 1 hour, < 24 hours, < 7 days, > 30 days (stale)
- OS type grouping
- Client/Site hierarchy
- Online/Offline status
- Custom saved filters (user-defined queries)

**Saved Searches:**
- Create and name custom filter combinations
- Share saved searches with team
- Pin frequently used searches

---

## Remote Control Features

### Screen Control
- Real-time screen viewing
- Mouse control (click, drag, scroll)
- Keyboard input
- Multi-monitor support (switch displays, view all)

### Clipboard Integration

**Priority Feature - Full Bidirectional Clipboard:**

| Direction | Content Types |
|-----------|---------------|
| Local → Remote | Text, Files, Images, Rich text |
| Remote → Local | Text, Files, Images, Rich text |

**Special Capabilities:**
- **Keystroke injection from clipboard** - Paste local clipboard as keystrokes (for login screens, BIOS, pre-OS environments)
- Drag-and-drop file transfer
- Large file support (chunked transfer with progress)

### File Transfer
- Browse remote filesystem
- Upload files to remote
- Download files from remote
- Drag-and-drop support
- Transfer queue with progress

### Backstage Tools (No Screen Required)
- Remote command prompt / PowerShell
- Task manager view
- Services manager
- Registry editor (future)
- Event log viewer (future)
- System info panel

### Chat / Messaging

**Bidirectional Chat:**
- Tech can message end user during session
- End user can message tech
- Chat persists across session reconnects
- Chat history viewable in session log

**End-User Initiated Contact:**
- System tray icon for permanent agents
- "Request Support" option in tray menu
- User can type message/description of issue
- Creates support request visible to assigned technicians

**Technician Notifications:**
- Dashboard shows pending support requests
- Optional: Desktop/browser notifications for new requests
- Optional: Email/webhook alerts for after-hours requests
- Request queue with timestamps and user messages

### Credential Management (Future)

**Credential Injection:**
- Integration with ITGlue for credential lookup
- Integration with GuruRMM credential vault
- Tech selects credential from dropdown, never sees actual password
- Credential injected directly as keystrokes to remote session
- Audit log of which credential was used, by whom, when

**Local Credential Capture (Future):**
- Optional feature to capture credentials entered during session
- Stored encrypted, accessible only to admins
- For scenarios where client provides password verbally

---

## Security Requirements

### Authentication
- Technician login with username/password
- MFA/2FA support (TOTP)
- SSO integration (future - Azure AD, Google)
- API key auth for programmatic access

### Session Security
- All traffic over TLS/WSS
- End-to-end encryption for screen data
- Session consent prompt (attended sessions)
- Configurable session timeout

### Audit & Compliance
- Full audit log: who, when, what machine, duration
- Optional session recording
- Action logging (file transfers, commands run)
- Exportable audit reports

---

## Integration

### GuruRMM Integration
- Launch remote session from RMM agent list
- Share agent data (hostname, IP, user, etc.)
- Single authentication
- Unified dashboard option

### Standalone Mode
- Fully functional without GuruRMM
- Own user management
- Own agent deployment
- Can be licensed/sold separately

---

## Agent Requirements

### Support Session Agent (One-Time)
- Single executable, no installation
- Downloads and runs from portal
- Self-deletes after session ends
- Minimal footprint (<5MB)
- No admin rights required for basic screen share
- Admin rights optional for elevated access

### Unattended Agent (Permanent)
- Windows service installation
- Auto-start on boot
- Runs as SYSTEM for full access
- Configurable check-in interval
- Resilient reconnection

**Auto-Update:**
- Agent checks for updates on configurable interval
- Silent background update (no user interaction)
- Rollback capability if update fails
- Version reported to server for "Outdated Clients" filtering

**Lightweight Performance:**
- Minimal CPU/RAM footprint when idle
- No performance impact during normal operation
- Screen capture only active during remote session
- Target: <10MB RAM idle, <1% CPU idle

**Survival & Recovery:**
- Survives reboots (Windows service auto-start)
- Works in Safe Mode with Networking
- Registers as safe-mode-capable service
- Remote-initiated Safe Mode reboot (with networking)
- Auto-reconnects after safe mode boot

**Safe Mode Reboot Feature:**
- Tech can trigger safe mode reboot from dashboard
- Options: Safe Mode, Safe Mode with Networking, Safe Mode with Command Prompt
- Agent persists through safe mode boot
- Useful for malware removal, driver issues, repairs

**Emergency Reboot:**
- Force immediate reboot without waiting for processes
- Bypasses "program not responding" dialogs
- Equivalent to holding power button, but cleaner
- Use case: Frozen system, hung updates, unresponsive machine
- Confirmation required to prevent accidental use

**Wake-on-LAN:**
- Store MAC address for each agent
- Send WoL magic packet to wake offline machines
- Works within same broadcast domain (LAN)
- For remote WoL: requires WoL relay/proxy on local network
- Dashboard shows "Wake" button for offline machines with known MAC
- Optional: Integration with GuruRMM agent as WoL relay

### Reported Metrics (Unattended)
- Hostname
- Internal IP(s)
- External IP
- Current user
- OS type and version
- Serial number
- Service tag
- CPU, RAM, Disk (basic)
- Last boot time
- Agent version
- Custom properties (extensible)

---

## Platform Support

### Build Targets

| Target | Architecture | Priority | Notes |
|--------|--------------|----------|-------|
| `x86_64-pc-windows-msvc` | 64-bit | Primary | Default build, Win7+ |
| `i686-pc-windows-msvc` | 32-bit | Secondary | Legacy outliers |

### Phase 1 (MVP)
- Windows 10/11 agents (64-bit)
- Windows Server 2016+ agents (64-bit)
- Web dashboard (any browser)

### Phase 2
- 32-bit agent builds for legacy systems
- Windows 7/8.1 support

### Future Phases
- macOS agent
- Linux agent
- Mobile viewer (iOS/Android)

---

## Non-Functional Requirements

### Performance
- Screen updates: 30+ FPS on LAN, 15+ FPS on WAN
- Input latency: <100ms on LAN, <200ms on WAN
- Support 50+ concurrent unattended agents per server (scalable)

### Reliability
- Agent auto-reconnect on network change
- Server clustering for HA (future)
- Graceful degradation on poor networks

### Deployment
- Single binary server (Docker or native)
- Single binary agent (MSI installer + standalone EXE)
- Cloud-hostable or on-premises


Good, I've read the REQUIREMENTS.md file. Now I need to append Howard's feedback. Let me add a new section at the end for team feedback.


Edit

### Deployment
- Single binary server (Docker or native)
- Single binary agent (MSI installer + standalone EXE)
- Cloud-hostable or on-premises

### Deployment
- Single binary server (Docker or native)
- Single binary agent (MSI installer + standalone EXE)
- Cloud-hostable or on-premises

---

## Team Feedback (2025-12-28)

### Howard's Requirements

#### Core Remote Support & Access Capabilities

1. **Screen Sharing & Remote Control**
   - View and interact with the end-user's desktop in real time
   - Technicians can control mouse and keyboard, just like sitting at the remote machine

2. **Attended & Unattended Access**
   - Attended support: on-demand support sessions where the user connects via a session code or link
   - Unattended access: persistent remote connections that allow access anytime without user presence

3. **Session Management**
   - Initiate, pause, transfer, and end remote sessions
   - Session transfer: pass control of a session to another technician
   - Session pause and idle timeout controls

4. **File & Clipboard Sharing**
   - Drag-and-drop file transfer between local and remote systems
   - Clipboard sharing for copy/paste between devices

5. **Multi-Session Handling**
   - Technicians can manage multiple concurrent remote sessions

6. **Multi-Monitor Support**
   - Seamlessly switch between multiple monitors on the remote system

#### Advanced Support & Administrative Functions

7. **Backstage / Silent Support Mode**
   - Execute tasks, run scripts, and troubleshoot without disrupting the user's screen (background session)

8. **Shared & Personal Toolboxes**
   - Save commonly used tools, scripts, or executables
   - Share them with team members for reuse in sessions

9. **Custom Scripts & Automation**
   - Automate repetitive tasks during remote sessions

10. **Diagnostic & Command Tools**
    - Run PowerShell, Command Prompt, view system event logs, uninstall apps, start/stop services, kill processes, etc.
    - Better PowerShell/CMD running abilities with configurable timeouts (checkboxes/text boxes instead of typing every time)

#### Security & Access Control Features

11. **Encryption**
    - All traffic is secured with AES-256 encryption

12. **Role-Based Permissions**
    - Create granular technician roles and permissions to control who can do what

13. **Two-Factor & Login Security**
    - Support for multi-factor authentication (MFA) and other secure login methodologies

14. **Session Consent & Alerts**
    - Require end-user consent before connecting (configurable)
    - Alerts notify users of maintenance or work in progress

15. **Audit Logs & Session Recording**
    - Automatically record sessions
    - Maintain detailed logs of connections and actions for compliance

#### Communication & Collaboration Tools

16. **Real-Time Chat**
    - Text chat between technician and end user during sessions

17. **Screen Annotations**
    - Draw and highlight areas on the user's screen for clearer instructions

#### Cross-Platform & Mobile Support

18. **Cross-Platform Support**
    - Remote control across Windows, macOS, Linux, iOS, and Android

19. **Mobile Technician Support**
    - Technicians can support clients from mobile devices (view screens, send Ctrl-Alt-Delete, reboot)

20. **Guest Mobile Support**
    - Remote assistance for user Android and iOS devices

#### Integration & Customization

21. **PSA & Ticketing Integrations**
    - Launch support sessions from RMM/PSA and other ticketing systems

22. **Custom Branding & Interface**
    - White-labeling, logos, colors, and custom client titles

23. **Machine Organization & Search**
    - Dynamic grouping of devices and custom property filtering to locate machines quickly

#### Reporting & Monitoring

24. **Session & System Reports**
    - Audit logs, session histories, technician performance data, etc.

25. **Diagnostic Reporting**
    - Collect performance and diagnostic information during or after sessions

### Additional Notes from Howard

- **64-bit client requirement** - ScreenConnect doesn't have a 64-bit client, which limits deployment options
- **PowerShell timeout controls** - Should have UI controls (checkboxes/text boxes) for timeouts rather than typing commands every time


The file C:\Users\MikeSwanson\Claude\guru-connect\REQUIREMENTS.md has been updated. Here's the result of running `cat -n` on a snippet of the edited file:
   685→- Agent auto-reconnect on network change
   686→- Server clustering for HA (future)
   687→- Graceful degradation on poor networks
   688→
   689→### Deployment
   690→- Single binary server (Docker or native)
   691→- Single binary agent (MSI installer + standalone EXE)
   692→- Cloud-hostable or on-premises
   693→
   694→---
   695→
   696→## Team Feedback (2025-12-28)
   697→
   698→### Howard's Requirements
   699→
   700→#### Core Remote Support & Access Capabilities
   701→
   702→1. **Screen Sharing & Remote Control**
   703→   - View and interact with the end-user's desktop in real time
   704→   - Technicians can control mouse and keyboard, just like sitting at the remote machine
   705→
   706→2. **Attended & Unattended Access**
   707→   - Attended support: on-demand support sessions where the user connects via a session code or link
   708→   - Unattended access: persistent remote connections that allow access anytime without user presence
   709→
   710→3. **Session Management**
   711→   - Initiate, pause, transfer, and end remote sessions
   712→   - Session transfer: pass control of a session to another technician
   713→   - Session pause and idle timeout controls
   714→
   715→4. **File & Clipboard Sharing**
   716→   - Drag-and-drop file transfer between local and remote systems
   717→   - Clipboard sharing for copy/paste between devices
   718→
   719→5. **Multi-Session Handling**
   720→   - Technicians can manage multiple concurrent remote sessions
   721→
   722→6. **Multi-Monitor Support**
   723→   - Seamlessly switch between multiple monitors on the remote system
   724→
   725→#### Advanced Support & Administrative Functions
   726→
   727→7. **Backstage / Silent Support Mode**
   728→   - Execute tasks, run scripts, and troubleshoot without disrupting the user's screen (background session)
   729→
   730→8. **Shared & Personal Toolboxes**
   731→   - Save commonly used tools, scripts, or executables
   732→   - Share them with team members for reuse in sessions
   733→
   734→9. **Custom Scripts & Automation**
   735→   - Automate repetitive tasks during remote sessions
   736→
   737→10. **Diagnostic & Command Tools**
   738→    - Run PowerShell, Command Prompt, view system event logs, uninstall apps, start/stop services, kill processes, etc.
   739→    - Better PowerShell/CMD running abilities with configurable timeouts (checkboxes/text boxes instead of typing every time)
   740→
   741→#### Security & Access Control Features
   742→
   743→11. **Encryption**
   744→    - All traffic is secured with AES-256 encryption
   745→
   746→12. **Role-Based Permissions**
   747→    - Create granular technician roles and permissions to control who can do what
   748→
   749→13. **Two-Factor & Login Security**
   750→    - Support for multi-factor authentication (MFA) and other secure login methodologies
   751→
   752→14. **Session Consent & Alerts**
   753→    - Require end-user consent before connecting (configurable)
   754→    - Alerts notify users of maintenance or work in progress
   755→
   756→15. **Audit Logs & Session Recording**
   757→    - Automatically record sessions
   758→    - Maintain detailed logs of connections and actions for compliance
   759→
   760→#### Communication & Collaboration Tools
   761→
   762→16. **Real-Time Chat**
   763→    - Text chat between technician and end user during sessions
   764→
   765→17. **Screen Annotations**
   766→    - Draw and highlight areas on the user's screen for clearer instructions
   767→
   768→#### Cross-Platform & Mobile Support
   769→
   770→18. **Cross-Platform Support**
   771→    - Remote control across Windows, macOS, Linux, iOS, and Android
   772→
   773→19. **Mobile Technician Support**
   774→    - Technicians can support clients from mobile devices (view screens, send Ctrl-Alt-Delete, reboot)
   775→
   776→20. **Guest Mobile Support**
   777→    - Remote assistance for user Android and iOS devices
   778→
   779→#### Integration & Customization
   780→
   781→21. **PSA & Ticketing Integrations**
   782→    - Launch support sessions from RMM/PSA and other ticketing systems
   783→
   784→22. **Custom Branding & Interface**
   785→    - White-labeling, logos, colors, and custom client titles
   786→
   787→23. **Machine Organization & Search**
   788→    - Dynamic grouping of devices and custom property filtering to locate machines quickly
   789→
   790→#### Reporting & Monitoring
   791→
   792→24. **Session & System Reports**
   793→    - Audit logs, session histories, technician performance data, etc.
   794→
   795→25. **Diagnostic Reporting**
   796→    - Collect performance and diagnostic information during or after sessions
   797→
   798→### Additional Notes from Howard
   799→
   800→- **64-bit client requirement** - ScreenConnect doesn't have a 64-bit client, which limits deployment options
   801→- **PowerShell timeout controls** - Should have UI controls (checkboxes/text boxes) for timeouts rather than typing commands every time
   802→

### Deployment
- Single binary server (Docker or native)
- Single binary agent (MSI installer + standalone EXE)
- Cloud-hostable or on-premises

---

## Team Feedback (2025-12-28)

### Howard's Requirements

#### Core Remote Support & Access Capabilities

1. **Screen Sharing & Remote Control**
   - View and interact with the end-user's desktop in real time
   - Technicians can control mouse and keyboard, just like sitting at the remote machine

2. **Attended & Unattended Access**
   - Attended support: on-demand support sessions where the user connects via a session code or link
   - Unattended access: persistent remote connections that allow access anytime without user presence

3. **Session Management**
   - Initiate, pause, transfer, and end remote sessions
   - Session transfer: pass control of a session to another technician
   - Session pause and idle timeout controls

4. **File & Clipboard Sharing**
   - Drag-and-drop file transfer between local and remote systems
   - Clipboard sharing for copy/paste between devices

5. **Multi-Session Handling**
   - Technicians can manage multiple concurrent remote sessions

6. **Multi-Monitor Support**
   - Seamlessly switch between multiple monitors on the remote system

#### Advanced Support & Administrative Functions

7. **Backstage / Silent Support Mode**
   - Execute tasks, run scripts, and troubleshoot without disrupting the user's screen (background session)

8. **Shared & Personal Toolboxes**
   - Save commonly used tools, scripts, or executables
   - Share them with team members for reuse in sessions

9. **Custom Scripts & Automation**
   - Automate repetitive tasks during remote sessions

10. **Diagnostic & Command Tools**
    - Run PowerShell, Command Prompt, view system event logs, uninstall apps, start/stop services, kill processes, etc.
    - Better PowerShell/CMD running abilities with configurable timeouts (checkboxes/text boxes instead of typing every time)

#### Security & Access Control Features

11. **Encryption**
    - All traffic is secured with AES-256 encryption

12. **Role-Based Permissions**
    - Create granular technician roles and permissions to control who can do what

13. **Two-Factor & Login Security**
    - Support for multi-factor authentication (MFA) and other secure login methodologies

14. **Session Consent & Alerts**
    - Require end-user consent before connecting (configurable)
    - Alerts notify users of maintenance or work in progress

15. **Audit Logs & Session Recording**
    - Automatically record sessions
    - Maintain detailed logs of connections and actions for compliance

#### Communication & Collaboration Tools

16. **Real-Time Chat**
    - Text chat between technician and end user during sessions

17. **Screen Annotations**
    - Draw and highlight areas on the user's screen for clearer instructions

#### Cross-Platform & Mobile Support

18. **Cross-Platform Support**
    - Remote control across Windows, macOS, Linux, iOS, and Android

19. **Mobile Technician Support**
    - Technicians can support clients from mobile devices (view screens, send Ctrl-Alt-Delete, reboot)

20. **Guest Mobile Support**
    - Remote assistance for user Android and iOS devices

#### Integration & Customization

21. **PSA & Ticketing Integrations**
    - Launch support sessions from RMM/PSA and other ticketing systems

22. **Custom Branding & Interface**
    - White-labeling, logos, colors, and custom client titles

23. **Machine Organization & Search**
    - Dynamic grouping of devices and custom property filtering to locate machines quickly

#### Reporting & Monitoring

24. **Session & System Reports**
    - Audit logs, session histories, technician performance data, etc.

25. **Diagnostic Reporting**
    - Collect performance and diagnostic information during or after sessions

### Additional Notes from Howard

- **64-bit client requirement** - ScreenConnect doesn't have a 64-bit client, which limits deployment options
- **PowerShell timeout controls** - Should have UI controls (checkboxes/text boxes) for timeouts rather than typing commands every time

# GuruConnect Requirements

## Design Principles

1. **End-user simplicity** - One-click or code-based session joining
2. **Standalone capable** - Works independently, integrates with GuruRMM optionally
3. **Technician-centric** - Built for MSP workflows

---

## End-User Portal (connect.azcomputerguru.com)

### Unauthenticated View

When a user visits the portal without being logged in:

```
┌─────────────────────────────────────────────────────┐
│                                                     │
│              [Company Logo]                         │
│                                                     │
│         Enter your support code:                    │
│         ┌─────────────────────────┐                │
│         │      8 4 7 2 9 1        │                │
│         └─────────────────────────┘                │
│                                                     │
│              [ Connect ]                            │
│                                                     │
│  ─────────────────────────────────────────────────  │
│                                                     │
│  Instructions will appear here after clicking       │
│  Connect, based on your browser.                    │
│                                                     │
└─────────────────────────────────────────────────────┘
```

### Connection Flow

1. **User enters code** → Click "Connect"
2. **Server validates code** → Returns session info or error
3. **Attempt app launch** via custom protocol:
   - `guruconnect://session/{code}`
   - If app is installed, it launches and connects
4. **If app doesn't launch** (timeout ~3 seconds):
   - Auto-download small EXE (`GuruConnect-{code}.exe`)
   - Show browser-specific instructions

### Browser-Specific Instructions

Detect browser via User-Agent and show appropriate guidance:

**Chrome:**
> "Click the download in the bottom-left corner of your screen, then click 'Open'"
> [Screenshot of Chrome download bar]

**Firefox:**
> "Click 'Save File', then open your Downloads folder and double-click the file"
> [Screenshot of Firefox download dialog]

**Edge:**
> "Click 'Open file' in the download notification at the top of your screen"
> [Screenshot of Edge download prompt]

**Safari:**
> "Click the download icon in the toolbar, then double-click the file"
> [Screenshot of Safari downloads]

**Generic/Unknown:**
> "Your download should start automatically. Look for the file in your Downloads folder and double-click to run it."

### Custom Protocol Handler

**Protocol:** `guruconnect://`

**Format:** `guruconnect://session/{code}`

**Registration:**
- Permanent agent registers protocol handler on install
- One-time agent does NOT register (to avoid clutter)

**Behavior:**
- If registered: OS launches installed agent with session code
- If not registered: Browser shows "nothing happened" → triggers download fallback

### One-Time Session Agent (Temp/Support)

**Key Requirements:**
- Runs in **user space** - NO admin elevation required
- Downloads as `GuruConnect-{code}.exe` (code baked in)
- ~3-5MB executable
- Self-contained (no installer, no dependencies)
- Connects directly to session on launch
- Self-deletes after session ends (or on next reboot)

**Elevation Note:**
- Basic screen sharing works without admin
- Some features (input to elevated windows, UAC dialogs) need admin
- Show optional "Run as Administrator" button for full access

---

## Technician Dashboard (Logged-In View)

### Visual Style

Follow GuruRMM dashboard design:
- HSL CSS variables for theming (dark/light mode support)
- Sidebar navigation with lucide-react icons
- Card-based content areas
- Responsive layout (mobile hamburger menu)
- Consistent component library (Button, Card, Input)

### Navigation Structure

```
┌──────────────────────────────────────────────────────────────┐
│ ┌──────────┐                                                 │
│ │GuruConnect│                                                │
│ └──────────┘                                                 │
│                                                              │
│  📋 Support      ← Active temp sessions                      │
│  🖥 Access       ← Unattended/permanent sessions             │
│  🔧 Build        ← Installer builder                         │
│  ⚙ Settings     ← Preferences, groupings, appearance        │
│                                                              │
│ ─────────────                                                │
│  👤 Mike S.                                                  │
│     Admin                                                    │
│  [Sign out]                                                  │
└──────────────────────────────────────────────────────────────┘
```

### Support Tab (Active Temporary Sessions)

**Layout:**
```
┌─────────────────────────────────────────────────────────────────────┐
│ Support Sessions                        [ + Generate Code ]         │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  ▼ My Sessions (3)                                                  │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │ 847291 │ John's PC │ Connected │ 00:15:32 │ [Join] [End]    │   │
│  │ 293847 │ Waiting   │ Pending   │ -        │ [Cancel]        │   │
│  │ 182736 │ Sarah-PC  │ Connected │ 00:45:10 │ [Join] [End]    │   │
│  └─────────────────────────────────────────────────────────────┘   │
│                                                                     │
│  ▼ Team Sessions (2)                      [Howard's sessions]       │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │ 928374 │ DESKTOP-A │ Connected │ 00:05:22 │ [View] [Join]   │   │
│  │ 746382 │ Laptop-01 │ Connected │ 01:20:15 │ [View]          │   │
│  └─────────────────────────────────────────────────────────────┘   │
│                                                                     │
│  ▶ Support Requests (1)                   [End-user initiated]      │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘
```

**Features:**
- Sessions grouped by technician (own first, then team)
- Real-time status updates (WebSocket)
- Duration timer for active sessions
- Quick actions: Join, View (spectate), End, Cancel
- Support request queue from end-user tray icon requests

### Access Tab (Unattended/Permanent Sessions)

**Layout:**
```
┌─────────────────────────────────────────────────────────────────────┐
│ Access                    🔍 [Search...]           [ + Build ]      │
├──────────────┬──────────────────────────────────────────────────────┤
│              │                                                      │
│ ▼ By Company │  All Machines by Company              1083 machines  │
│   (empty) 120│  ─────────────────────────────────────────────────── │
│   4 Paws    1│  ┌──────────────────────────────────────────────┐   │
│   ACG      10│  │ ● PC-FRONT01    │ Glaztech │ Win 11 │ Online │   │
│   Glaztech 224  │ ● SERVER-DC01   │ Glaztech │ Svr 22 │ Online │   │
│   AirPros   2│  │ ○ LAPTOP-SALES  │ Glaztech │ Win 10 │ 2h ago │   │
│   ...        │  │ ● WORKSTATION-3 │ ACG      │ Win 11 │ Online │   │
│              │  │ ...                                           │   │
│ ▶ By Site    │  └──────────────────────────────────────────────┘   │
│ ▶ By OS      │                                                      │
│ ▶ By Tag     │  ──────────────── Machine Detail ─────────────────  │
│              │  Name: PC-FRONT01                                    │
│ ──────────── │  Company: Glaztech Industries                        │
│ Smart Groups │  Site: Phoenix Office                                │
│ ──────────── │  OS: Windows 11 Pro (23H2)                          │
│  Attention  1│  User: jsmith                                        │
│  Online    847  IP: 192.168.1.45 / 72.194.62.4                     │
│  Offline 30d 241 Serial: 8XKJF93                                    │
│  Offline 1yr 238 Last Seen: Now                                     │
│  Outdated  516│                                                      │
│  Recent     5│  [ Connect ] [ Wake ] [ Tools ▼ ]                    │
│              │                                                      │
│ ▶ My Filters │                                                      │
│  + New Filter│                                                      │
└──────────────┴──────────────────────────────────────────────────────┘
```

**Left Sidebar - Groupings:**
- By Company (with counts, expandable)
- By Site
- By OS
- By Tag
- By Device Type
- Smart Groups (auto-generated)
- Custom Filters (user-created)

**Main Panel:**
- Machine list with status indicators (● online, ○ offline)
- Quick info columns (configurable)
- Click to select → shows detail panel

**Right Panel - Machine Detail:**
- Full machine info (Session, Device, Network sections)
- Action buttons: Connect, Wake (if offline), Tools dropdown

### Build Tab (Installer Builder)

**Layout:**
```
┌─────────────────────────────────────────────────────────────────────┐
│ Build Installer                                                     │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  Name:        [ Use Machine Name        ▼ ]                         │
│  Company:     [ __________________________ ]    (autocomplete)      │
│  Site:        [ __________________________ ]    (autocomplete)      │
│  Department:  [ __________________________ ]                        │
│  Device Type: [ Workstation              ▼ ]                        │
│  Tag:         [ __________________________ ]                        │
│                                                                     │
│  Platform:    ○ Windows 64-bit (recommended)                        │
│               ○ Windows 32-bit                                      │
│               ○ Linux (coming soon)                                 │
│                                                                     │
│  ─────────────────────────────────────────────────────────────────  │
│                                                                     │
│  [ Download EXE ]  [ Download MSI ]  [ Copy URL ]  [ Send Link ]    │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘
```

### Settings Tab

**Sections:**

**Appearance:**
- Theme: Light / Dark / System
- Sidebar: Expanded / Collapsed by default
- Default landing tab: Support / Access

**Groupings:**
- Default grouping for Access tab
- Show/hide specific smart groups
- Configure custom filter defaults

**Notifications:**
- Browser notifications: On/Off
- Sound alerts: On/Off
- Email alerts for support requests: On/Off

**Session Defaults:**
- Default session visibility: Private / Team / Company
- Auto-accept from specific companies

**Account:**
- Change password
- Two-factor authentication
- API keys (for integrations)

---

## Session Types

### 1. Support Sessions (Attended/One-Time)

**End-User Experience:**
- User visits portal (e.g., `support.azcomputerguru.com`)
- Portal generates a 5-6 digit numeric code (e.g., `847291`)
- User enters code OR clicks generated link
- Small executable downloads and runs (no install required)
- Session connects to assigned technician

**Technician Experience:**
- Generate session codes from dashboard
- Codes can be pre-assigned to specific tech or first-come
- Session appears on assigned tech's dashboard

**Code Management:**
- Codes remain active until used (no automatic expiration)
- Anti-collision: Active codes tracked in database, never reissued while active
- Once session completes, code is released back to pool
- Manual code cancellation available
- Optional: Tech can set manual expiration if desired
- 6 digits = 1M codes, plenty of headroom for concurrent active codes

### 2. Unattended Sessions (Permanent/MSP)

**Installer Builder:**

Build custom installers with pre-defined metadata fields:

| Field | Description | Example |
|-------|-------------|---------|
| Name | Machine identifier | "Use Machine Name" (auto) or custom |
| Company | Client/organization | "Glaztech Industries" |
| Site | Physical location | "Phoenix Office" |
| Department | Business unit | "Accounting" |
| Device Type | Machine category | "Workstation", "Server", "Laptop" |
| Tag | Custom label | "VIP", "Critical", "Testing" |

**Installer Output Options:**
- Download EXE directly
- Download MSI (for GPO deployment)
- Copy installer URL (for deployment scripts)
- Send link via email

**Server-Built Installers:**
- Server generates installers on-demand
- All metadata (Company, Site, etc.) baked into binary
- Unique installer per configuration
- No manual config file editing required
- Server URL and auth token embedded

**MSI Support:**
- MSI wrapper for Group Policy deployment
- Silent install support: `msiexec /i guruconnect.msi /qn`
- Uninstall via Add/Remove Programs or GPO
- Transform files (.mst) for custom configurations (optional)

**End-User Reconfiguration:**
- Re-run installer with flags to modify settings
- `--reconfigure` flag enters config mode instead of reinstall
- User can change: Name, Site, Tag, Department
- Changes sync to server on next check-in
- Useful for when machine moves to different site/department

Example:
```
guruconnect-agent.exe --reconfigure --site "New York Office" --tag "Laptop"
```

**Deployment:**
- Installed as Windows service
- Persists across reboots
- Auto-reconnects on network changes
- Can be bundled with GuruRMM agent OR standalone
- Metadata fields baked into agent at build time

**Management:**
- Assigned to client/site hierarchy
- Always available for remote access (when machine is on)
- Background service, no user interaction required

---

## Technician Dashboard

### Session Visibility & Permissions

| Role | Own Sessions | Team Sessions | All Sessions |
|------|--------------|---------------|--------------|
| Technician | Full access | View if permitted | No |
| Senior Tech | Full access | View + join | View |
| Admin | Full access | Full access | Full access |

**Permission Model:**
- Sessions created by a tech default to their dashboard
- Configurable visibility: Private, Team, Company-wide
- "Snoop" capability for supervisors (view session list, optionally join)
- Session handoff between technicians

### Auto-Generated Groups (Sidebar)

The dashboard automatically generates navigable groups based on metadata and status:

**By Metadata Field:**
- All Machines by Company (with counts per company)
- All Machines by Site
- All Machines by OS
- All Machines by Tag
- All Machines by Device Type

**Smart Status Groups:**
| Group | Definition |
|-------|------------|
| Attention | Machines flagged for follow-up |
| Host Connected | Tech currently connected |
| Guest Connected | End-user currently at machine |
| Recently Accessed | Connected within last 24 hours |
| Offline 30 Days | No check-in for 30+ days |
| Offline 1 Year | Stale agents, cleanup candidates |
| Outdated Clients | Agent version behind current |
| Powered on last 10 min | Just came online |

**Custom Session Groups:**
- Create saved filter combinations
- Name and organize custom groups
- Share groups with team (optional)

### Machine Detail Panel

When a machine is selected, show comprehensive info in side panel:

**Session Info:**
- Name, Company, Site, Department
- Device Type, Tag
- Hosts Connected (tech count)
- Guests Connected (user present)
- Guest Last Connected
- Logged On User
- Idle Time
- Pending Activity
- Custom Attributes

**Device Info:**
- Machine name
- Operating System + Version
- OS Install Date
- Processor
- Available Memory
- Manufacturer & Model
- Serial Number / Service Tag
- Machine Description

**Network Info:**
- Public IP Address
- Private IP Address(es)
- MAC Address(es)

**Other:**
- Agent Version
- Last Check-in
- First Seen
- Screenshot thumbnail (optional)

### Unattended Session Search

**Searchable Fields:**
- Hostname / Computer name
- Internal IP address
- External/Public IP address
- Currently logged-in user
- OS type (Windows 10, 11, Server 2019, etc.)
- OS version/build number
- Serial number
- Service tag (Dell, HP, Lenovo tags)
- Client/Site assignment
- Custom tags/labels
- Last check-in time
- Agent version

**Filter Capabilities:**
- Last check-in: < 1 hour, < 24 hours, < 7 days, > 30 days (stale)
- OS type grouping
- Client/Site hierarchy
- Online/Offline status
- Custom saved filters (user-defined queries)

**Saved Searches:**
- Create and name custom filter combinations
- Share saved searches with team
- Pin frequently used searches

---

## Remote Control Features

### Screen Control
- Real-time screen viewing
- Mouse control (click, drag, scroll)
- Keyboard input
- Multi-monitor support (switch displays, view all)

### Clipboard Integration

**Priority Feature - Full Bidirectional Clipboard:**

| Direction | Content Types |
|-----------|---------------|
| Local → Remote | Text, Files, Images, Rich text |
| Remote → Local | Text, Files, Images, Rich text |

**Special Capabilities:**
- **Keystroke injection from clipboard** - Paste local clipboard as keystrokes (for login screens, BIOS, pre-OS environments)
- Drag-and-drop file transfer
- Large file support (chunked transfer with progress)

### File Transfer
- Browse remote filesystem
- Upload files to remote
- Download files from remote
- Drag-and-drop support
- Transfer queue with progress

### Backstage Tools (No Screen Required)
- Remote command prompt / PowerShell
- Task manager view
- Services manager
- Registry editor (future)
- Event log viewer (future)
- System info panel

### Chat / Messaging

**Bidirectional Chat:**
- Tech can message end user during session
- End user can message tech
- Chat persists across session reconnects
- Chat history viewable in session log

**End-User Initiated Contact:**
- System tray icon for permanent agents
- "Request Support" option in tray menu
- User can type message/description of issue
- Creates support request visible to assigned technicians

**Technician Notifications:**
- Dashboard shows pending support requests
- Optional: Desktop/browser notifications for new requests
- Optional: Email/webhook alerts for after-hours requests
- Request queue with timestamps and user messages

### Credential Management (Future)

**Credential Injection:**
- Integration with ITGlue for credential lookup
- Integration with GuruRMM credential vault
- Tech selects credential from dropdown, never sees actual password
- Credential injected directly as keystrokes to remote session
- Audit log of which credential was used, by whom, when

**Local Credential Capture (Future):**
- Optional feature to capture credentials entered during session
- Stored encrypted, accessible only to admins
- For scenarios where client provides password verbally

---

## Security Requirements

### Authentication
- Technician login with username/password
- MFA/2FA support (TOTP)
- SSO integration (future - Azure AD, Google)
- API key auth for programmatic access

### Session Security
- All traffic over TLS/WSS
- End-to-end encryption for screen data
- Session consent prompt (attended sessions)
- Configurable session timeout

### Audit & Compliance
- Full audit log: who, when, what machine, duration
- Optional session recording
- Action logging (file transfers, commands run)
- Exportable audit reports

---

## Integration

### GuruRMM Integration
- Launch remote session from RMM agent list
- Share agent data (hostname, IP, user, etc.)
- Single authentication
- Unified dashboard option

### Standalone Mode
- Fully functional without GuruRMM
- Own user management
- Own agent deployment
- Can be licensed/sold separately

---

## Agent Requirements

### Support Session Agent (One-Time)
- Single executable, no installation
- Downloads and runs from portal
- Self-deletes after session ends
- Minimal footprint (<5MB)
- No admin rights required for basic screen share
- Admin rights optional for elevated access

### Unattended Agent (Permanent)
- Windows service installation
- Auto-start on boot
- Runs as SYSTEM for full access
- Configurable check-in interval
- Resilient reconnection

**Auto-Update:**
- Agent checks for updates on configurable interval
- Silent background update (no user interaction)
- Rollback capability if update fails
- Version reported to server for "Outdated Clients" filtering

**Lightweight Performance:**
- Minimal CPU/RAM footprint when idle
- No performance impact during normal operation
- Screen capture only active during remote session
- Target: <10MB RAM idle, <1% CPU idle

**Survival & Recovery:**
- Survives reboots (Windows service auto-start)
- Works in Safe Mode with Networking
- Registers as safe-mode-capable service
- Remote-initiated Safe Mode reboot (with networking)
- Auto-reconnects after safe mode boot

**Safe Mode Reboot Feature:**
- Tech can trigger safe mode reboot from dashboard
- Options: Safe Mode, Safe Mode with Networking, Safe Mode with Command Prompt
- Agent persists through safe mode boot
- Useful for malware removal, driver issues, repairs

**Emergency Reboot:**
- Force immediate reboot without waiting for processes
- Bypasses "program not responding" dialogs
- Equivalent to holding power button, but cleaner
- Use case: Frozen system, hung updates, unresponsive machine
- Confirmation required to prevent accidental use

**Wake-on-LAN:**
- Store MAC address for each agent
- Send WoL magic packet to wake offline machines
- Works within same broadcast domain (LAN)
- For remote WoL: requires WoL relay/proxy on local network
- Dashboard shows "Wake" button for offline machines with known MAC
- Optional: Integration with GuruRMM agent as WoL relay

### Reported Metrics (Unattended)
- Hostname
- Internal IP(s)
- External IP
- Current user
- OS type and version
- Serial number
- Service tag
- CPU, RAM, Disk (basic)
- Last boot time
- Agent version
- Custom properties (extensible)

---

## Platform Support

### Build Targets

| Target | Architecture | Priority | Notes |
|--------|--------------|----------|-------|
| `x86_64-pc-windows-msvc` | 64-bit | Primary | Default build, Win7+ |
| `i686-pc-windows-msvc` | 32-bit | Secondary | Legacy outliers |

### Phase 1 (MVP)
- Windows 10/11 agents (64-bit)
- Windows Server 2016+ agents (64-bit)
- Web dashboard (any browser)

### Phase 2
- 32-bit agent builds for legacy systems
- Windows 7/8.1 support

### Future Phases
- macOS agent
- Linux agent
- Mobile viewer (iOS/Android)

---

## Non-Functional Requirements

### Performance
- Screen updates: 30+ FPS on LAN, 15+ FPS on WAN
- Input latency: <100ms on LAN, <200ms on WAN
- Support 50+ concurrent unattended agents per server (scalable)

### Reliability
- Agent auto-reconnect on network change
- Server clustering for HA (future)
- Graceful degradation on poor networks

### Deployment
- Single binary server (Docker or native)
- Single binary agent (MSI installer + standalone EXE)
- Cloud-hostable or on-premises

+#### Core Remote Support & Access Capabilities

+   - View and interact with the end-user's desktop in real time

+   - Technicians can control mouse and keyboard, just like sitting at the remote machine

+   - Attended support: on-demand support sessions where the user connects via a session code or link

+   - Unattended access: persistent remote connections that allow access anytime without user presence

+   - Initiate, pause, transfer, and end remote sessions

+   - Session transfer: pass control of a session to another technician

+   - Session pause and idle timeout controls

+   - Drag-and-drop file transfer between local and remote systems

+   - Clipboard sharing for copy/paste between devices

+   - Technicians can manage multiple concurrent remote sessions

+   - Seamlessly switch between multiple monitors on the remote system

+#### Advanced Support & Administrative Functions

+   - Execute tasks, run scripts, and troubleshoot without disrupting the user's screen (background session)

+   - Save commonly used tools, scripts, or executables

+   - Share them with team members for reuse in sessions

+   - Automate repetitive tasks during remote sessions

+    - Run PowerShell, Command Prompt, view system event logs, uninstall apps, start/stop services, kill processes, etc.

+    - Better PowerShell/CMD running abilities with configurable timeouts (checkboxes/text boxes instead of typing every time)

+#### Security & Access Control Features

+    - All traffic is secured with AES-256 encryption

+    - Create granular technician roles and permissions to control who can do what

+    - Support for multi-factor authentication (MFA) and other secure login methodologies

+    - Require end-user consent before connecting (configurable)

+    - Alerts notify users of maintenance or work in progress

+    - Maintain detailed logs of connections and actions for compliance

+#### Communication & Collaboration Tools

+    - Text chat between technician and end user during sessions

+    - Draw and highlight areas on the user's screen for clearer instructions

+    - Remote control across Windows, macOS, Linux, iOS, and Android

+    - Technicians can support clients from mobile devices (view screens, send Ctrl-Alt-Delete, reboot)

+    - Remote assistance for user Android and iOS devices

+    - Launch support sessions from RMM/PSA and other ticketing systems

+    - White-labeling, logos, colors, and custom client titles

+    - Dynamic grouping of devices and custom property filtering to locate machines quickly

+    - Audit logs, session histories, technician performance data, etc.

+    - Collect performance and diagnostic information during or after sessions

+- **64-bit client requirement** - ScreenConnect doesn't have a 64-bit client, which limits deployment options

+- **PowerShell timeout controls** - Should have UI controls (checkboxes/text boxes) for timeouts rather than typing commands every time


Conversation compacted