-

-

-
-
- Build AI agents that see, understand, and control any computer
-
-
+
+

+

+
Build AI agents that see, understand, and control any computer
-**Cua** is an open-source framework for Computer-Use Agents. Automate any desktop application without brittle selectors or APIs.
+**Cua** ("koo-ah") is an open-source framework for Computer-Use Agents - enabling AI systems to autonomously operate computers through visual understanding and action execution. Used for research, evaluation, and production deployment of desktop, browser, and mobile automation agents.
-## Highlights
+## What are Computer-Use Agents?
-- **100+ models** - Use Claude, GPT-4, Gemini, or run locally with Ollama and MLX
-- **Cross-platform** - Docker, macOS VMs, Windows Sandbox, or Cua Cloud
-- **Production-ready** - Cost tracking, PII anonymization, and observability built-in
+Computer-Use Agents (CUAs) are AI systems that can autonomously interact with computer interfaces through visual understanding and action execution. Unlike traditional automation tools that rely on brittle selectors or APIs, CUAs use vision-language models to perceive screen content and reason about interface interactions - enabling them to adapt to UI changes and handle complex, multi-step workflows across applications.
-## Get started
+## Key Features
-Follow the [Quickstart guide](/docs/get-started/quickstart) for step-by-step setup with Python or TypeScript.
+With the **Computer SDK**, you can:
+- Automate **Windows, Linux, and macOS** VMs with a consistent, pyautogui-like API
+- Create & manage VMs locally or using **Cua Cloud**
-If you're new to computer-use agents, check out our [tutorials](https://cua.ai/blog), [examples](https://github.com/trycua/cua/tree/main/examples), and [notebooks](https://github.com/trycua/cua/tree/main/notebooks) to start building with Cua today.
+With the **Agent SDK**, you can:
+- Run computer-use models with a consistent schema
+- Benchmark on **OSWorld-Verified**, **SheetBench-V2**, and **ScreenSpot**
+- Combine UI grounding models with any LLM using **composed agents**
+- Use **100+ models** via API or local inference (Claude, GPT-4, Gemini, Ollama, MLX)
+
+## Get Started
+
+Follow the [Quickstart guide](/get-started/quickstart) for step-by-step setup with Python or TypeScript.
+
+Check out our [tutorials](https://cua.ai/blog), [examples](https://github.com/trycua/cua/tree/main/examples), and [notebooks](https://github.com/trycua/cua/tree/main/notebooks) to start building with Cua today.
} href="/get-started/quickstart" title="Quickstart" />
@@ -42,5 +40,3 @@ If you're new to computer-use agents, check out our [tutorials](https://cua.ai/b
} href="/computer-sdk/computers" title="Computer SDK" />
} href="/example-usecases/form-filling" title="Examples" />
-
-We can't wait to see what you build with Cua ✨
diff --git a/docs/content/docs/libraries/agent/index.mdx b/docs/content/docs/libraries/agent/index.mdx
deleted file mode 100644
index 6772d5c81..000000000
--- a/docs/content/docs/libraries/agent/index.mdx
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: Agent
-description: Reference for the current version of the Agent library.
-pypi: cua-agent
-github:
- - https://github.com/trycua/cua/tree/main/libs/python/agent
----
-
-The Agent library provides the ComputerAgent class and tools for building AI agents that automate workflows on Cua Computers.
-
-## Agent Loops
-
-See the [Agent Loops](../agent-sdk/agent-loops) documentation for how agents process information and take actions.
-
-## Chat History
-
-See the [Chat History](../agent-sdk/chat-history) documentation for managing conversational context and turn-by-turn interactions.
-
-## Callbacks
-
-See the [Callbacks](../agent-sdk/callbacks) documentation for extending and customizing agent behavior with custom hooks.
diff --git a/docs/content/docs/libraries/computer-server/index.mdx b/docs/content/docs/libraries/computer-server/index.mdx
deleted file mode 100644
index d5affd25f..000000000
--- a/docs/content/docs/libraries/computer-server/index.mdx
+++ /dev/null
@@ -1,24 +0,0 @@
----
-title: Computer Server
-descrption: Reference for the current version of the Computer Server library.
-pypi: cua-computer-server
-github:
- - https://github.com/trycua/cua/tree/main/libs/python/computer-server
----
-
-
- A corresponding{' '}
-
- Jupyter Notebook
- {' '}
- is available for this documentation.
-
-
-The Computer Server API reference documentation is currently under development.
-
-## Overview
-
-The Computer Server provides WebSocket and REST API endpoints for remote computer control and automation.
diff --git a/docs/content/docs/libraries/computer/index.mdx b/docs/content/docs/libraries/computer/index.mdx
deleted file mode 100644
index 69478b207..000000000
--- a/docs/content/docs/libraries/computer/index.mdx
+++ /dev/null
@@ -1,23 +0,0 @@
----
-title: Computer
-description: Reference for the current version of the Computer library.
-pypi: cua-computer
-npm: '@trycua/computer'
-github:
- - https://github.com/trycua/cua/tree/main/libs/python/computer
- - https://github.com/trycua/cua/tree/main/libs/typescript/computer
----
-
-The Computer library provides a Computer class for controlling and automating containers running the Computer Server.
-
-## Connecting to Computers
-
-See the [Cua Computers](../computer-sdk/computers) documentation for how to connect to different computer types (cloud, local, or host desktop).
-
-## Computer Commands
-
-See the [Commands](../computer-sdk/commands) documentation for all supported commands and interface methods (Shell, Mouse, Keyboard, File System, etc.).
-
-## Sandboxed Python Functions
-
-See the [Sandboxed Python](../computer-sdk/sandboxed-python) documentation for running Python functions securely in isolated environments on a remote Cua Computer.
diff --git a/docs/content/docs/libraries/core/index.mdx b/docs/content/docs/libraries/core/index.mdx
deleted file mode 100644
index 394c7547b..000000000
--- a/docs/content/docs/libraries/core/index.mdx
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: Core
-description: Reference for the current version of the Core library.
-pypi: cua-core
-npm: '@trycua/core'
-github:
- - https://github.com/trycua/cua/tree/main/libs/python/core
- - https://github.com/trycua/cua/tree/main/libs/typescript/core
----
-
-## Overview
-
-The Core library provides foundational utilities and shared functionality across the CUA ecosystem.
diff --git a/docs/content/docs/libraries/cua-cli/index.mdx b/docs/content/docs/libraries/cua-cli/index.mdx
deleted file mode 100644
index 7a7ac9148..000000000
--- a/docs/content/docs/libraries/cua-cli/index.mdx
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: Cua CLI
-description: Command-line interface for managing Cua cloud sandboxes and authentication
----
-
-import { Tabs, Tab } from 'fumadocs-ui/components/tabs';
-
-The Cua CLI is a command-line tool that provides an intuitive interface for managing your Cua cloud sandboxes and authentication. It offers a streamlined workflow for creating, managing, and connecting to cloud sandboxes.
-
-## Key Features
-
-- **Authentication Management**: Secure login with browser-based OAuth flow
-- **Sandbox Lifecycle**: Create, start, stop, restart, and delete cloud sandboxes
-- **Quick Access**: Direct links to VNC and playground interfaces
-- **Cross-Platform**: Works on macOS, Linux, and Windows
-- **Environment Integration**: Automatic `.env` file generation
-
-## Quick Example
-
-```bash
-# Install the CLI (installs Bun + CUA CLI)
-curl -LsSf https://cua.ai/cli/install.sh | sh
-
-# Login to your CUA account
-cua auth login
-
-# Create a new Linux sandbox
-cua sb create --os linux --size small --region north-america
-
-# List your sandboxes
-cua sb list
-```
-
-## Use Cases
-
-### Development Workflow
-
-- Quickly spin up cloud sandboxes for testing
-- Manage multiple sandboxes across different regions
-- Integrate with CI/CD pipelines
-
-### Team Collaboration
-
-- Share sandbox configurations and access
-- Standardize development environments
-- Quick onboarding for new team members
-
-### Automation
-
-- Script sandbox provisioning and management
-- Integrate with deployment workflows
-- Automate environment setup
-
-## Next Steps
-
-- [Install the CLI](/libraries/cua-cli/installation)
-- [Learn about available commands](/libraries/cua-cli/commands)
-- [Get started with the quickstart guide](/get-started/quickstart#cli-quickstart)
diff --git a/docs/content/docs/libraries/cua-cli/installation.mdx b/docs/content/docs/libraries/cua-cli/installation.mdx
deleted file mode 100644
index 9e08a7f02..000000000
--- a/docs/content/docs/libraries/cua-cli/installation.mdx
+++ /dev/null
@@ -1,130 +0,0 @@
----
-title: Installation
-description: Install the CUA CLI on your system
----
-
-import { Tabs, Tab } from 'fumadocs-ui/components/tabs';
-import { Callout } from 'fumadocs-ui/components/callout';
-
-## Quick Install
-
-The fastest way to install the CUA CLI is using our installation scripts:
-
-
- ```bash curl -LsSf https://cua.ai/cli/install.sh | sh ```
-
- ```powershell powershell -ExecutionPolicy ByPass -c "irm https://cua.ai/cli/install.ps1 | iex"
- ```
-
-
-
-These scripts will automatically:
-
-1. Install [Bun](https://bun.sh) (a fast JavaScript runtime)
-2. Install the CUA CLI via `bun add -g @trycua/cli`
-
-
- The installation scripts will automatically detect your system and install the appropriate binary
- to your PATH.
-
-
-## Alternative: Install with Bun
-
-You can also install the CLI directly using Bun:
-
-```bash
-# Install Bun if you don't have it
-curl -fsSL https://bun.sh/install | bash
-
-# Install CUA CLI
-bun add -g @trycua/cli
-```
-
-
- Using Bun provides faster installation and better performance compared to npm. If you don't have
- Bun installed, the first command will install it for you.
-
-
-## Verify Installation
-
-After installation, verify the CLI is working:
-
-```bash
-cua --help
-```
-
-You should see the CLI help output with available commands.
-
-## First Time Setup
-
-After installation, you'll need to authenticate with your CUA account:
-
-```bash
-# Login with browser-based OAuth flow
-cua auth login
-
-# Or provide your API key directly
-cua auth login --api-key sk-your-api-key-here
-```
-
-## Updating
-
-To update to the latest version:
-
-
-
- Re-run the installation script: ```bash # macOS/Linux curl -LsSf https://cua.ai/cli/install.sh |
- sh # Windows powershell -ExecutionPolicy ByPass -c "irm https://cua.ai/cli/install.ps1 | iex"
- ```
-
- ```bash npm update -g @trycua/cli ```
-
-
-## Uninstalling
-
-
-
- Remove the binary from your PATH: ```bash # macOS/Linux rm $(which cua) # Windows # Remove from
- your PATH or delete the executable ```
-
- ```bash npm uninstall -g @trycua/cli ```
-
-
-## Troubleshooting
-
-### Command Not Found
-
-If you get a "command not found" error after installation:
-
-1. **Check your PATH**: Make sure the installation directory is in your PATH
-2. **Restart your terminal**: Close and reopen your terminal/command prompt
-3. **Manual PATH setup**: Add the installation directory to your PATH manually
-
-### Permission Issues
-
-If you encounter permission issues during installation:
-
-
-
- Try running with sudo (not recommended for the curl method): ```bash # If using npm sudo npm
- install -g @trycua/cli ```
-
-
- Run PowerShell as Administrator: ```powershell # Right-click PowerShell and "Run as
- Administrator" powershell -ExecutionPolicy ByPass -c "irm https://cua.ai/cli/install.ps1 | iex"
- ```
-
-
-
-### Network Issues
-
-If the installation script fails due to network issues:
-
-1. **Check your internet connection**
-2. **Try the npm installation method instead**
-3. **Check if your firewall is blocking the download**
-
-## Next Steps
-
-- [Learn about CLI commands](/libraries/cua-cli/commands)
-- [Follow the quickstart guide](/get-started/quickstart#cli-quickstart)
diff --git a/docs/content/docs/libraries/cua-cli/meta.json b/docs/content/docs/libraries/cua-cli/meta.json
deleted file mode 100644
index f1c957cc3..000000000
--- a/docs/content/docs/libraries/cua-cli/meta.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "title": "CLI",
- "description": "Command-line interface for CUA",
- "pages": ["index", "installation", "commands"]
-}
diff --git a/docs/content/docs/libraries/mcp-server/index.mdx b/docs/content/docs/libraries/mcp-server/index.mdx
deleted file mode 100644
index 7f2c7684c..000000000
--- a/docs/content/docs/libraries/mcp-server/index.mdx
+++ /dev/null
@@ -1,27 +0,0 @@
----
-title: MCP Server
-description: Reference for the current version of the MCP Server library.
-pypi: cua-mcp-server
-github:
- - https://github.com/trycua/cua/tree/main/libs/python/mcp-server
----
-
-**cua-mcp-server** is a MCP server for the Computer-Use Agent (CUA), allowing you to run CUA through Claude Desktop or other MCP clients.
-
-## Features
-
-- **Multi-Client Support**: Concurrent sessions with automatic resource management
-- **Progress Reporting**: Real-time progress updates during task execution
-- **Error Handling**: Robust error recovery with screenshot capture
-- **Concurrent Execution**: Run multiple tasks in parallel for improved performance
-- **Session Management**: Automatic cleanup and resource pooling
-- **LiteLLM Integration**: Support for multiple model providers
-- **VM Safety**: Default VM execution with optional host system control
-
-## Quick Start
-
-1. **Install**: `pip install cua-mcp-server`
-2. **Configure**: Add to your MCP client configuration
-3. **Use**: Ask Claude to perform computer tasks
-
-See the [Installation](/docs/libraries/mcp-server/installation) guide for detailed setup instructions.
diff --git a/docs/content/docs/libraries/som/configuration.mdx b/docs/content/docs/libraries/som/configuration.mdx
deleted file mode 100644
index b421fdae6..000000000
--- a/docs/content/docs/libraries/som/configuration.mdx
+++ /dev/null
@@ -1,78 +0,0 @@
----
-title: Configuration
----
-
-### Detection Parameters
-
-#### Box Threshold (0.3)
-
-Controls the confidence threshold for accepting detections:
-
-

-- Higher values (0.3) yield more precise but fewer detections - Lower values (0.01) catch more
-potential icons but increase false positives - Default is 0.3 for optimal precision/recall balance
-
-#### IOU Threshold (0.1)
-
-Controls how overlapping detections are merged:
-
-

-- Lower values (0.1) more aggressively remove overlapping boxes - Higher values (0.5) allow more
-overlapping detections - Default is 0.1 to handle densely packed UI elements
-
-### OCR Configuration
-
-- **Engine**: EasyOCR
- - Primary choice for all platforms
- - Fast initialization and processing
- - Built-in English language support
- - GPU acceleration when available
-
-- **Settings**:
- - Timeout: 5 seconds
- - Confidence threshold: 0.5
- - Paragraph mode: Disabled
- - Language: English only
-
-## Performance
-
-### Hardware Acceleration
-
-#### MPS (Metal Performance Shaders)
-
-- Multi-scale detection (640px, 1280px, 1920px)
-- Test-time augmentation enabled
-- Half-precision (FP16)
-- Average detection time: ~0.4s
-- Best for production use when available
-
-#### CPU
-
-- Single-scale detection (1280px)
-- Full-precision (FP32)
-- Average detection time: ~1.3s
-- Reliable fallback option
-
-### Example Output Structure
-
-```
-examples/output/
-├── {timestamp}_no_ocr/
-│ ├── annotated_images/
-│ │ └── screenshot_analyzed.png
-│ ├── screen_details.txt
-│ └── summary.json
-└── {timestamp}_ocr/
- ├── annotated_images/
- │ └── screenshot_analyzed.png
- ├── screen_details.txt
- └── summary.json
-```
diff --git a/docs/content/docs/libraries/som/index.mdx b/docs/content/docs/libraries/som/index.mdx
deleted file mode 100644
index 3eef53f12..000000000
--- a/docs/content/docs/libraries/som/index.mdx
+++ /dev/null
@@ -1,66 +0,0 @@
----
-title: Set-of-Mark
-description: Reference for the current version of the Set-of-Mark library.
-pypi: cua-som
-github:
- - https://github.com/trycua/cua/tree/main/libs/python/som
----
-
-
- A corresponding{' '}
-
- Python example
- {' '}
- is available for this documentation.
-
-
-## Overview
-
-The SOM library provides visual element detection and interaction capabilities. It is based on the [Set-of-Mark](https://arxiv.org/abs/2310.11441) research paper and the [OmniParser](https://github.com/microsoft/OmniParser) model.
-
-## API Documentation
-
-### OmniParser Class
-
-```python
-class OmniParser:
- def __init__(self, device: str = "auto"):
- """Initialize the parser with automatic device detection"""
-
- def parse(
- self,
- image: PIL.Image,
- box_threshold: float = 0.3,
- iou_threshold: float = 0.1,
- use_ocr: bool = True,
- ocr_engine: str = "easyocr"
- ) -> ParseResult:
- """Parse UI elements from an image"""
-```
-
-### ParseResult Object
-
-```python
-@dataclass
-class ParseResult:
- elements: List[UIElement] # Detected elements
- visualized_image: PIL.Image # Annotated image
- processing_time: float # Time in seconds
-
- def to_dict(self) -> dict:
- """Convert to JSON-serializable dictionary"""
-
- def filter_by_type(self, elem_type: str) -> List[UIElement]:
- """Filter elements by type ('icon' or 'text')"""
-```
-
-### UIElement
-
-```python
-class UIElement(BaseModel):
- id: Optional[int] = Field(None) # Element ID (1-indexed)
- type: Literal["icon", "text"] # Element type
- bbox: BoundingBox # Bounding box coordinates { x1, y1, x2, y2 }
- interactivity: bool = Field(default=False) # Whether the element is interactive
- confidence: float = Field(default=1.0) # Detection confidence
-```
diff --git a/docs/content/docs/libraries/lume/cli-reference.mdx b/docs/content/docs/macos-vm-cli-playbook/lume/cli-reference.mdx
similarity index 100%
rename from docs/content/docs/libraries/lume/cli-reference.mdx
rename to docs/content/docs/macos-vm-cli-playbook/lume/cli-reference.mdx
diff --git a/docs/content/docs/libraries/lume/faq.md b/docs/content/docs/macos-vm-cli-playbook/lume/faq.md
similarity index 100%
rename from docs/content/docs/libraries/lume/faq.md
rename to docs/content/docs/macos-vm-cli-playbook/lume/faq.md
diff --git a/docs/content/docs/libraries/lume/http-api.mdx b/docs/content/docs/macos-vm-cli-playbook/lume/http-api.mdx
similarity index 100%
rename from docs/content/docs/libraries/lume/http-api.mdx
rename to docs/content/docs/macos-vm-cli-playbook/lume/http-api.mdx
diff --git a/docs/content/docs/libraries/lume/index.mdx b/docs/content/docs/macos-vm-cli-playbook/lume/index.mdx
similarity index 100%
rename from docs/content/docs/libraries/lume/index.mdx
rename to docs/content/docs/macos-vm-cli-playbook/lume/index.mdx
diff --git a/docs/content/docs/libraries/lume/installation.mdx b/docs/content/docs/macos-vm-cli-playbook/lume/installation.mdx
similarity index 100%
rename from docs/content/docs/libraries/lume/installation.mdx
rename to docs/content/docs/macos-vm-cli-playbook/lume/installation.mdx
diff --git a/docs/content/docs/libraries/lume/meta.json b/docs/content/docs/macos-vm-cli-playbook/lume/meta.json
similarity index 100%
rename from docs/content/docs/libraries/lume/meta.json
rename to docs/content/docs/macos-vm-cli-playbook/lume/meta.json
diff --git a/docs/content/docs/libraries/lume/prebuilt-images.mdx b/docs/content/docs/macos-vm-cli-playbook/lume/prebuilt-images.mdx
similarity index 100%
rename from docs/content/docs/libraries/lume/prebuilt-images.mdx
rename to docs/content/docs/macos-vm-cli-playbook/lume/prebuilt-images.mdx
diff --git a/docs/content/docs/libraries/lumier/building-lumier.mdx b/docs/content/docs/macos-vm-cli-playbook/lumier/building-lumier.mdx
similarity index 100%
rename from docs/content/docs/libraries/lumier/building-lumier.mdx
rename to docs/content/docs/macos-vm-cli-playbook/lumier/building-lumier.mdx
diff --git a/docs/content/docs/libraries/lumier/docker-compose.mdx b/docs/content/docs/macos-vm-cli-playbook/lumier/docker-compose.mdx
similarity index 100%
rename from docs/content/docs/libraries/lumier/docker-compose.mdx
rename to docs/content/docs/macos-vm-cli-playbook/lumier/docker-compose.mdx
diff --git a/docs/content/docs/libraries/lumier/docker.mdx b/docs/content/docs/macos-vm-cli-playbook/lumier/docker.mdx
similarity index 100%
rename from docs/content/docs/libraries/lumier/docker.mdx
rename to docs/content/docs/macos-vm-cli-playbook/lumier/docker.mdx
diff --git a/docs/content/docs/libraries/lumier/index.mdx b/docs/content/docs/macos-vm-cli-playbook/lumier/index.mdx
similarity index 100%
rename from docs/content/docs/libraries/lumier/index.mdx
rename to docs/content/docs/macos-vm-cli-playbook/lumier/index.mdx
diff --git a/docs/content/docs/libraries/lumier/installation.mdx b/docs/content/docs/macos-vm-cli-playbook/lumier/installation.mdx
similarity index 100%
rename from docs/content/docs/libraries/lumier/installation.mdx
rename to docs/content/docs/macos-vm-cli-playbook/lumier/installation.mdx
diff --git a/docs/content/docs/libraries/lumier/meta.json b/docs/content/docs/macos-vm-cli-playbook/lumier/meta.json
similarity index 100%
rename from docs/content/docs/libraries/lumier/meta.json
rename to docs/content/docs/macos-vm-cli-playbook/lumier/meta.json
diff --git a/docs/content/docs/macos-vm-cli-playbook/meta.json b/docs/content/docs/macos-vm-cli-playbook/meta.json
new file mode 100644
index 000000000..a9c98b66d
--- /dev/null
+++ b/docs/content/docs/macos-vm-cli-playbook/meta.json
@@ -0,0 +1,5 @@
+{
+ "title": "macOS VM CLI",
+ "description": "CLI tools for macOS virtualization",
+ "pages": ["lume", "lumier"]
+}
diff --git a/docs/content/docs/meta.json b/docs/content/docs/meta.json
index 199556f10..ede657529 100644
--- a/docs/content/docs/meta.json
+++ b/docs/content/docs/meta.json
@@ -10,9 +10,11 @@
"...example-usecases",
"---[BookCopy]Computer Playbook---",
"...computer-sdk",
- "---[BookCopy]Agent Playbook---",
+ "---[Bot]Agent Playbook---",
"...agent-sdk",
- "---[CodeXml]API Reference---",
- "...libraries"
+ "---[Terminal]Cloud CLI Playbook---",
+ "...cli-playbook",
+ "---[Terminal]macOS VM CLI Playbook---",
+ "...macos-vm-cli-playbook"
]
}
diff --git a/docs/src/app/global.css b/docs/src/app/global.css
index 65ae0960f..08522ff50 100644
--- a/docs/src/app/global.css
+++ b/docs/src/app/global.css
@@ -2,6 +2,32 @@
@import 'fumadocs-ui/css/neutral.css';
@import 'fumadocs-ui/css/preset.css';
+/* Custom Sky + Emerald theme */
+@theme {
+ --color-fd-primary: hsl(199, 89%, 48%); /* sky-500 */
+ --color-fd-primary-foreground: hsl(0, 0%, 100%);
+ --color-fd-ring: hsl(199, 89%, 48%); /* sky-500 */
+ --color-fd-muted: hsl(160, 84%, 95%); /* emerald-50 */
+ --color-fd-accent: hsl(152, 76%, 92%); /* emerald-100 */
+}
+
+.dark {
+ --color-fd-primary: hsl(199, 89%, 48%); /* sky-500 */
+ --color-fd-primary-foreground: hsl(0, 0%, 100%);
+ --color-fd-ring: hsl(199, 89%, 48%); /* sky-500 */
+ --color-fd-muted: hsl(199, 89%, 14%); /* sky-950 */
+ --color-fd-accent: hsl(199, 89%, 20%); /* sky dark */
+}
+
+.dark body {
+ background-image: linear-gradient(
+ rgba(14, 165, 233, 0.1),
+ transparent 20rem,
+ transparent
+ );
+ background-repeat: no-repeat;
+}
+
/* Fix TOC overflow on production builds */
#nd-toc {
overflow-y: auto;