# Majoor Assets Manager - Settings & Configuration Guide

**Version**: 2.4.9
**Last Updated**: April 15, 2026

## Overview

The Majoor Assets Manager offers extensive configuration options to customize the interface, performance, and functionality to match your workflow. This guide covers all available settings and configuration options.

**Recent highlights**: Floating Viewer settings, output path configuration from the UI, a fully Settings-driven remote write security flow, and a configurable Index DB directory for users on network drives or NAS storage.

## Browser-Based Settings

### Storage Location

Browser-based settings are stored in `localStorage` under the `mjrSettings` key:

- Settings persist between browser sessions
- Settings are specific to each browser/computer
- Settings don't sync across different browsers or devices
- Settings are tied to the specific domain where ComfyUI is hosted

### Accessing Settings

Settings are primarily adjusted through the user interface:

1. Open the Assets Manager in ComfyUI
2. Look for settings icons or configuration panels
3. Adjust settings as needed
4. Settings are saved automatically

### Security Settings In The UI

Majoor now exposes the main remote write controls directly in Settings, including:

- `Recommended Remote LAN Setup`
- `Require Token For All Writes`
- `Allow Remote Full Access`
- `Allow HTTP Token Transport`
- `Majoor: API Token`

For the common trusted-LAN case, `Recommended Remote LAN Setup` is the intended one-click path. It generates a server-side token if needed, applies the recommended flags, and authorizes the current browser session immediately.

The following image shows the individual operation permissions. It does not authorize an anonymous remote browser by itself. For LAN access, either enable `Recommended Remote LAN Setup` and use its token, or explicitly enable `Allow Remote Full Access` for a no-token trusted-LAN configuration. Keeping `Confirm before deleting` enabled is strongly recommended.

![Majoor operation permission settings](images/security-settings-trusted-lan.svg)

`Require Token For All Writes` and `Allow Remote Full Access` solve different problems. Disabling the first does not automatically allow non-local clients; the second is the explicit anonymous-remote-access bypass and must never be enabled on an internet-facing or untrusted network. `Allow Remote Full Access` is effective even when an API token is configured (Majoor auto-generates one at first startup): it permits tokenless remote writes unless `Require Token For All Writes` is enabled, which always takes priority.

Majoor security permissions are independent of filesystem permissions. Full Windows or NAS access does not automatically authorize Majoor writes, and a Majoor authorization error does not by itself prove that the operating system rejected the file operation.

### Token Types And What They Mean

There are two unrelated token concepts in the UI:

- **Majoor: API Token**: protects remote write access to the local Majoor backend.
- **HuggingFace Token**: optional token used for downloading AI models from HuggingFace Hub with better rate limits.

The HuggingFace token is **not** a cloud inference API key. Its presence does not mean prompts or images are sent to an external hosted AI service.

### Browser Session Vs Server Token State

Not all security values live in the same place:

- browser settings in `localStorage` keep UI preferences and non-secret token state such as `tokenConfigured` and `tokenHint`
- the active write token for the current tab/browser session lives in `sessionStorage`
- the persistent shared token lives server-side once saved through Majoor Settings or environment variables

This means a browser can show that a token exists on the server without storing the plaintext token permanently in browser local storage.

### Visual Write Authorization Status

When the Assets Manager panel is open, the runtime status widget in the lower-right corner now includes a `Write auth:` line.

Examples:

- `Write auth: active ...ABCD`
- `Write auth: missing in this browser ...ABCD`
- `Write auth: not required`

Use that line as the quickest confirmation that the current browser session can perform write operations.

## Display Settings

### Page Size

- **Purpose**: Controls how many assets are loaded per request
- **Default**: Usually 50-100 assets per page
- **Range**: Typically 10-500 assets per page
- **Impact**: Larger pages mean fewer requests but more memory usage
- **Recommendation**: Adjust based on your system resources and usage patterns

### Sidebar Position

- **Options**: Left or Right
- **Default**: Usually Right
- **Purpose**: Controls where the details sidebar appears
- **Impact**: Affects layout and workflow depending on screen orientation
- **Recommendation**: Choose based on your screen setup and preferences

### Hide PNG Siblings

- **Purpose**: Hide PNG files when video previews exist
- **Default**: Usually Off/Disabled
- **Function**: Reduces clutter from duplicate content in different formats
- **Impact**: Cleaner interface when working with video generations that include PNG previews
- **Recommendation**: Enable if you frequently work with video generations

## Performance Settings

### Auto-Scan on Startup

- **Auto-scan on Startup**: Automatically scan when ComfyUI starts
- **Default**: Usually Disabled to save resources
- **Impact**: Ensures fresh index but uses system resources
- **Recommendation**: Enable for frequently updated directories

### Status Poll Interval

- **Purpose**: How often to check background tasks and status
- **Default**: Usually 1-5 seconds
- **Range**: 0.5-30 seconds
- **Impact**: More frequent polling provides more responsive status updates but uses more resources
- **Recommendation**: 1-2 seconds for good balance of responsiveness and resource usage

### Tags Cache TTL

- **Purpose**: Time-to-live for tag caching in milliseconds
- **Default**: Usually 30,000ms (30 seconds)
- **Range**: 1,000ms to 300,000ms (1 second to 5 minutes)
- **Impact**: Longer TTL means fewer requests but potentially stale data
- **Recommendation**: 30,000ms (30 seconds) for good balance

## Metadata & Viewer Settings

### Floating Viewer Default Toggles

- **UI location**: Settings → Majoor Assets Manager › Viewer
- **Majoor: MFV Live Stream Enabled by Default**
    - **Setting key**: `viewer.mfvLiveDefault`
    - **Default**: Enabled / On
    - **Purpose**: Controls whether Live Stream starts enabled when the Floating Viewer opens, initializes, or resets. Live Stream follows final generation outputs after execution; selected-node previews are handled by Node Stream.
- **Majoor: MFV KSampler Preview Enabled by Default**
    - **Setting key**: `viewer.mfvPreviewDefault`
    - **Default**: Enabled / On
    - **Purpose**: Controls whether the KSampler denoising preview starts enabled when the Floating Viewer opens, initializes, or resets. This stream shows sampler preview blobs during execution, not selected-node media.

### Media Probe Backend

- **Auto**: Automatically choose the best available backend
- **ExifTool**: Use ExifTool exclusively for metadata extraction
- **FFprobe**: Use FFprobe exclusively (especially for video)
- **Both**: Use both tools when available
- **Default**: Auto
- **Impact**: Affects metadata extraction speed and completeness
- **Recommendation**: Keep as Auto unless troubleshooting specific issues

### Workflow Minimap Display

- **Show Node Labels**: Display text labels on workflow minimap
- **Show Connection Lines**: Display connections between nodes
- **Show Parameter Values**: Display parameter values on nodes
- **Minimap Size**: Adjust the size of the workflow minimap
- **Default**: Varies by preference
- **Impact**: Affects readability of workflow previews
- **Recommendation**: Enable based on your need for workflow detail

### Observability

- **Request Logging**: Enable detailed logging of API requests
- **Performance Metrics**: Track timing and performance data
- **Debug Information**: Enable additional debugging output
- **Default**: Usually Disabled
- **Impact**: Provides detailed information for troubleshooting but increases log volume
- **Recommendation**: Enable only when troubleshooting issues

## File System Settings

### Workflow Roots

- **UI location**: Settings -> Majoor Assets Manager -> Advanced -> Paths / Workflows
- **Purpose**: Sets the folders scanned by the Workflow tab and the first folder used when saving/importing workflow JSON files from the tab.
- **Multiple folders**: Use one folder per line, or separate folders with semicolons.
- **Quick picker**: In the Workflow tab, use the folder button beside **Save current workflow** to pick and save the workflow root directly.
- **Default behavior**: Leave empty to use ComfyUI workflow defaults and the legacy `MJR_AM_WORKFLOW_DIRECTORY` environment variable.

Environment variables:

```bash
MJR_AM_WORKFLOW_DIRECTORIES=/path/to/workflows:/path/to/other/workflows
MJR_AM_WORKFLOW_DIRECTORY=/path/to/workflows
```

### Index Directory

- **Purpose**: Override where the SQLite index database and related index files are stored.
- **Default**: `<output_directory>/_mjr_index/` (next to your assets)
- **Why change it**: If your output directory lives on a network share (NAS, SMB, CIFS) or a slow/remote disk, SQLite may suffer file-locking issues. Moving the index to a fast local disk (e.g. `C:\mjr_index` on Windows) solves that without touching your asset files.
- **UI location**: Settings → Paths → Majoor: Index Directory
- **Takes effect after**: ComfyUI restart. The old index directory is **not** deleted automatically; run a fresh scan after restart.
- **Clear the override**: Leave the field empty and save to revert to the default (`<output>/_mjr_index/`).

### Custom Roots

- **Adding Custom Directories**: Add additional directories to browse
- **Path Validation**: Ensures paths are valid and accessible
- **Symlink Support**: Allow symbolic links in custom roots (if enabled)
- **Access Permissions**: Respects file system permissions
- **Default**: None initially
- **Impact**: Expands browsing capabilities beyond standard directories
- **Recommendation**: Add directories you frequently access

## Database Settings

### Connection Management

- **Max Connections**: Maximum simultaneous database connections
- **Connection Timeout**: Time to wait for database operations
- **Query Timeout**: Maximum time for individual queries
- **Default**: Usually 8 connections, 30-second timeouts
- **Impact**: Affects performance with concurrent operations
- **Recommendation**: Adjust based on system resources and usage patterns

### Optimization

- **Auto-Optimize**: Automatically optimize database periodically
- **Manual Optimization**: Run optimization tools manually
- **Maintenance Schedule**: When optimization occurs
- **Default**: Usually Manual
- **Impact**: Improves performance but requires temporary locking
- **Recommendation**: Schedule during low-usage periods

## Advanced Configuration

### AI Privacy And Offline Summary

- AI inference is intended to run locally after models are available on disk.
- First model bootstrap may require internet access to download model files from HuggingFace.
- After download and cache, AI features can run offline.
- Non-AI Majoor features do not require HuggingFace model downloads.

### AI / VRAM Controls

Settings -> Majoor Assets Manager -> Search -> AI exposes the runtime controls for Majoor's local AI models:

- **Enable AI semantic search** maps to `MJR_AM_ENABLE_VECTOR_SEARCH`.
- **Index vectors during scans** maps to `MJR_AM_VECTOR_INDEX_ON_SCAN`.
- **Generate AI captions during indexing** maps to `MJR_AM_VECTOR_CAPTION_ON_INDEX`.
- **Vector indexing concurrency** maps to `MJR_VECTOR_CONCURRENCY`.
- **Unload AI models after use** maps to `MJR_AM_VECTOR_UNLOAD_AFTER_USE`.
- **Memory purge now** and **Memory purge** call `/mjr/am/settings/vector-search/unload`.

For low-VRAM ComfyUI systems, disable semantic search and automatic vector work, keep concurrency at `1`, and unload Majoor AI models after use. The manual purge action releases Majoor SigLIP/X-CLIP/Florence references, asks ComfyUI to unload loaded models, and clears torch CUDA cache when the queue is idle.

### Environment Variables (Backend)

#### Directory Configuration

- **MAJOOR_OUTPUT_DIRECTORY** / **MJR_AM_OUTPUT_DIRECTORY**: Override default output directory
    - Default: ComfyUI's output directory
    - Format: Full path to directory
    - Impact: Changes where the indexer looks for assets
    - Example: `MAJOOR_OUTPUT_DIRECTORY=/path/to/my/output`

- **MJR_AM_INDEX_DIRECTORY** / **MAJOOR_INDEX_DIRECTORY**: Override the directory where the SQLite index database is stored
    - Default: `<output_directory>/_mjr_index/`
    - Format: Full absolute path to an existing or creatable directory
    - Impact: Moves the index DB (and vectors DB) to a different disk or path; assets themselves stay in the output directory
    - Takes effect: at ComfyUI startup (or restart after saving from the UI)
    - Example: `MJR_AM_INDEX_DIRECTORY=C:\mjr_index`
    - Example: `MJR_AM_INDEX_DIRECTORY=/var/local/mjr_index`
    - Priority: env var → sidecar file (`.mjr_index_directory_override`) → default
    - Also configurable from: Settings → Paths → Majoor: Index Directory (persists to the sidecar file)

#### External Tool Paths

- **MAJOOR_EXIFTOOL_PATH** / **MAJOOR_EXIFTOOL_BIN**: Path to ExifTool executable
    - Default: `exiftool` (assumes in PATH)
    - Format: Full path to exiftool executable
    - Impact: Used for metadata extraction and file tagging
    - Example: `MAJOOR_EXIFTOOL_PATH=/usr/local/bin/exiftool`

- **MAJOOR_FFPROBE_PATH** / **MAJOOR_FFPROBE_BIN**: Path to FFprobe executable
    - Default: `ffprobe` (assumes in PATH)
    - Format: Full path to ffprobe executable
    - Impact: Used for video/audio metadata extraction
    - Example: `MAJOOR_FFPROBE_PATH=/usr/local/bin/ffprobe`

#### Media Processing

- **MAJOOR_MEDIA_PROBE_BACKEND**: Media extraction backend selection
    - Options: `auto`, `exiftool`, `ffprobe`, `both`
    - Default: `auto`
    - Impact: Determines which tools are used for metadata extraction
    - Example: `MAJOOR_MEDIA_PROBE_BACKEND=both`

#### Database Tuning

- **MAJOOR_DB_TIMEOUT**: Database operation timeout in seconds
    - Default: 30.0
    - Range: 1.0 to 300.0
    - Impact: Maximum time to wait for database operations
    - Example: `MAJOOR_DB_TIMEOUT=60.0`

- **MAJOOR_DB_MAX_CONNECTIONS**: Maximum database connections
    - Default: 8
    - Range: 1 to 50
    - Impact: Concurrency level for database operations
    - Example: `MAJOOR_DB_MAX_CONNECTIONS=12`

- **MAJOOR_DB_QUERY_TIMEOUT**: Maximum query execution time
    - Default: 60.0 seconds
    - Range: 1.0 to 300.0
    - Impact: Prevents long-running queries from blocking
    - Example: `MAJOOR_DB_QUERY_TIMEOUT=45.0`

#### Performance Tuning

- **MAJOOR_TO_THREAD_TIMEOUT**: Timeout for background thread operations
    - Default: 30 seconds
    - Range: 10 to 600 seconds
    - Impact: Maximum time for background operations
    - Example: `MAJOOR_TO_THREAD_TIMEOUT=60`

- **MAJOOR_MAX_METADATA_JSON_BYTES**: Maximum metadata JSON size
    - Default: 2097152 (2MB)
    - Range: 1024 to 104857600 (100MB)
    - Impact: Limits memory usage for metadata storage
    - Example: `MAJOOR_MAX_METADATA_JSON_BYTES=4194304`

- **MJR_AM_ENABLE_VECTOR_SEARCH**: Enable AI semantic/vector features
    - Default: `1`
    - Impact: When enabled, semantic search, find-similar, prompt alignment, AI tags, and captions can load local AI models
    - Low-VRAM recommendation: `0`

- **MJR_AM_VECTOR_INDEX_ON_SCAN**: Compute vector embeddings during scans
    - Default: `0`
    - Impact: Can load SigLIP/X-CLIP during scan workflows
    - Low-VRAM recommendation: `0`

- **MJR_AM_VECTOR_CAPTION_ON_INDEX**: Generate Florence captions during vector indexing/backfill
    - Default: `0`
    - Impact: Florence is heavier and can use significant VRAM/CPU
    - Low-VRAM recommendation: `0`

- **MJR_VECTOR_CONCURRENCY** / **MJR_AM_VECTOR_CONCURRENCY**: Concurrent vector embedding workers
    - Default: `2`
    - Range: `1` to `16`
    - Impact: Higher values can improve throughput but increase transient VRAM spikes
    - Low-VRAM recommendation: `1`

- **MJR_AM_VECTOR_UNLOAD_AFTER_USE**: Unload Majoor AI models after heavy vector actions
    - Default: `0`
    - Impact: Frees VRAM after semantic search/backfill/caption/index actions, but the next AI action reloads models and is slower
    - Low-VRAM recommendation: `1`

#### Collection Management

- **MJR_COLLECTION_MAX_ITEMS**: Maximum items per collection
    - Default: 50000
    - Range: 1000 to 1000000
    - Impact: Prevents extremely large collections from impacting performance
    - Example: `MJR_COLLECTION_MAX_ITEMS=100000`

#### Security & Networking

- **MJR_ALLOW_SYMLINKS**: Allow symbolic links in custom roots
    - Options: `on`, `off`, `true`, `false`
    - Default: `off`
    - Impact: Enables browsing of linked directories
    - Example: `MJR_ALLOW_SYMLINKS=on`

- **MAJOOR_TRUSTED_PROXIES**: IPs/CIDRs allowed for forwarded headers
    - Default: `127.0.0.1,::1`
    - Format: Comma-separated IP addresses or CIDR blocks
    - Impact: Security setting for proxy environments
    - Example: `MAJOOR_TRUSTED_PROXIES=127.0.0.1,192.168.1.0/24`

#### Dependency Management

- **MJR_AM_NO_AUTO_PIP**: Disable automatic dependency installation
    - Options: `1`, `true`, `yes`, `on` to disable
    - Default: Automatic installation enabled
    - Impact: Prevents automatic pip installs at startup
    - Example: `MJR_AM_NO_AUTO_PIP=1`

## Setting Up Environment Variables

### Windows

Create a batch file to set environment variables:

```batch
@echo off
set MAJOOR_MEDIA_PROBE_BACKEND=auto
set MAJOOR_DB_TIMEOUT=60.0

REM Start ComfyUI with the environment variables
cd /d "C:\path\to\ComfyUI"
python main.py --auto-launch
pause
```

### Unix/Linux/macOS

Create a shell script to set environment variables:

```bash
#!/bin/bash
export MAJOOR_MEDIA_PROBE_BACKEND=auto
export MAJOOR_DB_TIMEOUT=60.0

# Start ComfyUI with the environment variables
cd /path/to/ComfyUI
python main.py --auto-launch
```

Or add to your shell profile (`.bashrc`, `.zshrc`, etc.):

```bash
export MAJOOR_MEDIA_PROBE_BACKEND=auto
export MAJOOR_DB_TIMEOUT=60.0
```

## Configuration Best Practices

### Performance Optimization

- Adjust page size based on your system's RAM
- Set appropriate timeouts based on your storage speed
- Monitor database performance and adjust connections as needed

### Security Considerations

- Keep default security settings unless you have specific requirements
- Only enable symlink support if you trust the linked directories
- Configure trusted proxies appropriately in networked environments
- Regularly update external tools (ExifTool, FFprobe) for security

### Resource Management

- Monitor memory usage with large collections
- Adjust cache settings based on available RAM
- Set appropriate timeouts for your storage system
- Consider SSD storage for better database performance

### Backup and Recovery

- Regularly backup the index database (`assets.sqlite`)
- Backup custom root configurations
- Maintain copies of important collections
- Document your configuration settings for recovery

## Troubleshooting Configuration Issues

### Common Problems

#### Settings Not Saving

- Clear browser cache and cookies
- Check browser localStorage quota
- Verify no browser extensions are interfering
- Try a different browser

#### Performance Issues

- Reduce page size if experiencing slowdowns
- Disable auto-scan if not needed
- Adjust database connection settings
- Check system resources (RAM, disk space)

#### External Tool Issues

- Verify tools are in PATH or set explicit paths
- Check tool permissions and access rights
- Ensure tools are properly installed
- Test tools independently before using with Assets Manager

### Diagnostic Steps

1. Check ComfyUI console for error messages
2. Verify all required dependencies are installed
3. Test external tools independently
4. Review environment variable settings
5. Try default settings to isolate configuration issues

## Migration and Updates

### Settings Preservation

- Browser settings are preserved across updates
- Environment variables need to be reapplied after system restarts
- Custom root configurations are stored in the index directory
- Collections are preserved as JSON files

### Configuration Updates

- New settings are added with sensible defaults
- Old settings remain unchanged during updates
- Review new settings after updates to optimize functionality
- Check release notes for configuration changes

---

_Settings & Configuration Guide Version: 1.0_
_Last Updated: April 5, 2026_
