# AidaIDE — full documentation corpus > Every chapter of the AidaIDE user guide concatenated as markdown (26 chapters, ~48,304 words). Generated from docs-content.json by scripts/build-docs-chapter.py --export-llms-full. Canonical HTML lives at https://aidaide.app/docs/. See https://aidaide.app/llms.txt for the short index. ## Chapters - [AidaIDE User Guide](https://aidaide.app/docs/user-guide) - [Keyword Index](https://aidaide.app/docs/keyword-index) - [Getting Started](https://aidaide.app/docs/getting-started) - [SSH Devices and Connections](https://aidaide.app/docs/ssh-devices) - [File Browser and Editor](https://aidaide.app/docs/file-browser) - [LCOT Panel](https://aidaide.app/docs/lcot) - [Fleet Management](https://aidaide.app/docs/fleet) - [Network Tools](https://aidaide.app/docs/network-tools) - [Security Tools](https://aidaide.app/docs/security-tools) - [AI Assistant and Sidebar](https://aidaide.app/docs/ai-assistant) - [AI Hierarchy Builder](https://aidaide.app/docs/hierarchy-builder) - [Cameras](https://aidaide.app/docs/cameras) - [Databases](https://aidaide.app/docs/databases) - [Sysadmin Tools](https://aidaide.app/docs/sysadmin) - [Settings, Themes, Preferences](https://aidaide.app/docs/settings-themes) - [Shortcuts and Command Palette](https://aidaide.app/docs/shortcuts) - [Plugins, Widgets, Marketplace](https://aidaide.app/docs/plugins) - [Workspaces and Layouts](https://aidaide.app/docs/workspaces) - [Updates, Licensing, Support](https://aidaide.app/docs/licensing) - [Troubleshooting & FAQ](https://aidaide.app/docs/troubleshooting) - [Glossary](https://aidaide.app/docs/glossary) - [Quick Reference (Cheat Sheet)](https://aidaide.app/docs/quick-reference) - [Cloud Portal and Web Access](https://aidaide.app/docs/cloud-portal-docs) - [Input Devices in the Browser](https://aidaide.app/docs/input-devices) - [Hardware Lab](https://aidaide.app/docs/hardware-lab) - [OTA Updates](https://aidaide.app/docs/ota-updates) --- # AidaIDE User Guide Source: https://aidaide.app/docs/user-guide Welcome to AidaIDE — the terminal-first IDE for SSH, fleet management, embedded/IoT workflows, and AI agent hierarchies. This guide is organized by what you see on screen. Each chapter walks through one part of the UI, defines its terms, and ends with a **Terms & Setup** section that explains anything the chapter assumes you already have (a working SSH server, an API key, a license, etc.). If you know the name of the thing you are looking for, jump to the **[Keyword Index](/docs/keyword-index)** and it will point you at the right chapter and section. ## How to read this guide - **Bold UI text** matches what you see on screen — menu items, button labels, tab names. - `code` is exactly what you type or copy. - "Click **File → Open File…**" means open the **File** menu and pick **Open File…**. - Shortcut hints follow the Windows convention: `Ctrl+S`. On macOS substitute `⌘+S`. - Every chapter has a Terms & Setup section at the end. If a step says *"Use your SSH credentials,"* and you do not have any, follow the link there. ## Chapters 1. **[Getting Started](/docs/getting-started)** — From a fresh install to the main window. Vault unlock, splash, first-run wizards, what every part of the screen is called. 2. **[SSH Devices and Connections](/docs/ssh-devices)** — The primary workflow. Add a host, connect, save credentials, manage keys. 3. **[File Browser and Editor](/docs/file-browser)** — Local and remote files, the code editor, split panes, find/replace, run-file. 4. **[LCOT Panel](/docs/lcot)** — The Local Chain of Thought panel. READ vs. WRITE zones, the Sysadmin Quick Toolkit, adding your own commands. 5. **[Fleet Management](/docs/fleet)** — Manage many devices at once. Fleet Manager, Deploy Lite, OTA updates. 6. **[Network Tools](/docs/network-tools)** — Scanner, topology map, packet capture, traffic analyzer, diagnostics. 7. **[Security Tools](/docs/security-tools)** — Vulnerability/CVE/secret/SAST scanners, certificate inventory, PKI, IP ACL, compliance. 8. **[AI Assistant and Sidebar](/docs/ai-assistant)** — Inline AI suggestions, chat, Claude Agent Manager, AI workflows, persona portal. 9. **[AI Hierarchy Builder](/docs/hierarchy-builder)** — The SoC/IC canvas. Build, wire, and run multi-agent pipelines. 10. **[Cameras](/docs/cameras)** — ONVIF/RTSP discovery, Camera Manager, grid viewers. 11. **[Databases](/docs/databases)** — Connect to MySQL, PostgreSQL, MongoDB, Redis. Query Editor. 12. **[Sysadmin Tools](/docs/sysadmin)** — Windows management, patching, configuration, containers, alerts, backup/DR. 13. **[Settings, Themes, Preferences](/docs/settings-themes)** — Settings, themes, the Workbench switch, and display tweaks. 14. **[Shortcuts and Command Palette](/docs/shortcuts)** — Default shortcuts, Command Palette (`Ctrl+Shift+P`), Feature Browser, custom bindings. 15. **[Plugins, Widgets, Marketplace](/docs/plugins)** — Install, manage, and create plugins and widgets. 16. **[Workspaces and Layouts](/docs/workspaces)** — Split, stack, or tear off panels, and save named layouts (desktop, ships with rc18). 17. **[Updates, Licensing, Support](/docs/licensing)** — Enter a license key, check for updates, file a bug, contact support. 18. **[Troubleshooting & FAQ](/docs/troubleshooting)** — Symptom-first lookup for "it broke" moments. Cheapest fix first; how to file a useful bug. 19. **[Glossary](/docs/glossary)** — Every term defined across the guide, consolidated A–Z with chapter cross-references. 20. **[Quick Reference (Cheat Sheet)](/docs/quick-reference)** — Single printable page. Every CLI flag, environment variable, file path, default port, and full shortcut table consolidated. Plus a per-OS quirks list and top "how do I…?" one-liners. 21. **[Cloud Portal and Web Access](/docs/cloud-portal-docs)** — Browser access via aidaide.app, guest passes, remote desktop in a tab, web dashboards, web Hierarchy Composer. 22. **[Input Devices in the Browser](/docs/input-devices)** — Touch gestures, virtual cursor, on-screen shortcut bar, international keyboard layouts (QWERTZ/AZERTY/ES), presence and spectate. ## Quick start (one-minute path) 1. Launch AidaIDE. Enter your master password to **unlock the vault**. (Brand-new install? Create a master password — write it down.) 2. The cyan `$_` splash plays for ~4 seconds, then the main window opens. 3. The **toolbar** at the top has a **New Tab** button (`+`). Click it. 4. Pick an existing connection from the dropdown, or click **Connection Manager** (`≡` icon) to add a host. 5. Once connected, the left pane is your terminal, the middle pane is the file browser/editor, and the right pane is **LCOT** — your one-click command library. For anything more involved, open the relevant chapter above. ## Where help lives inside the app - **Help → User Guide** — Opens this guide in a polished in-app viewer with TOC, cross-chapter search, bookmarks, light/dark theme, font zoom, and reader mode. See [Chapter 14 §User Guide viewer](/docs/shortcuts#user-guide-viewer-help--user-guide) for the keyboard shortcuts; `Ctrl+I` jumps to the Keyword Index, `Ctrl+P` copies the current chapter to the clipboard, `F11` is reader mode. - **Help → Welcome Guide** — Short overview of the IDE. - **Help → Setup Wizard** — Re-runs the first-run wizard. - **Help → Ask Macy (Interactive Guide)** — Voice-narrated guided tour, including the 16-section Hierarchy Builder tour. - **Help → Documentation** — Opens the online docs at aidaide.app. - **Help → Bug Reports / Report a Bug** — Captures logs and opens a report. - **Help → Check for Updates** — Pulls a manifest from updates.aidaide.app. - **View → Feature Browser** — Searchable list of every feature tab, grouped by category. If you cannot remember where something is, this is the fastest path. - **View → Command Palette** (`Ctrl+Shift+P`) — Type a few letters of anything (menu items, tabs, settings) and it jumps you there. ## Layout reminders From rc18 the desktop window is a workbench, on by default. Every tab is a panel: drag it to an edge to split, to the middle to stack, or outside the window to tear it off. Named layouts live in the toolbar **Workspace** list. This is how the app is arranged, not a separate product. See [Workspaces and Layouts](/docs/workspaces). Android stays a separate Lite-class app, not a desktop host download. The Cloud Portal is unchanged. Linux experimental (soft peer). To use a plain tabbed window, uncheck **View → Workbench → Use the workbench shell** and restart. The old Grid Layout mode does not come back. ## Conventions used in this guide - **Cyan** = the AidaIDE brand accent (`#4DE4E4`). When you see a cyan lin ## Using the User Guide viewer The window you are reading right now is the **AidaIDE User Guide viewer** (Help → User Guide). It is built to feel like a small book reader: - **Sidebar TOC.** Chapters in the top list; click any chapter to open it. Expand the triangle to drill into the chapter's H2 sections — clicking a section jumps directly to that heading. - **Search.** Click in the search box (or press `Ctrl+F`), type, and hit `Enter` for **Next**, `Shift+Enter` for **Prev**. `F3` and `Shift+F3` work too. `Esc` clears the search. - **Chapter navigation.** **◂ Prev** / **Next ▸** in the toolbar and footer. Or `Alt+Left` / `Alt+Right`, or `Ctrl+PgUp` / `Ctrl+PgDn`. `Ctrl+Home` jumps to the first chapter, `Ctrl+End` to the last. - **Font zoom.** `Ctrl+=` makes everything bigger, `Ctrl+-` smaller, `Ctrl+0` resets. The TOC sidebar follows the body font. - **Index button.** The **📖 Index** toolbar button (`Ctrl+I`) jumps to the [Keyword Index](/docs/keyword-index) — fastest way to find a term whose name you remember. - **Theme toggle.** The **◐ Theme** button (`Ctrl+L`) flips between dark and light palettes. Your choice is remembered for next time. - **Reader mode.** **Reader** in the toolbar (or `F11`) hides the toolbar, footer, and sidebar for distraction-free reading. `F11` or `Esc` to come back. - **Clickable cross-references.** Any `[link](anchor)` inside a chapter — like the chapter links above — is clickable and navigates within the viewer. Try clicking [SSH Devices](/docs/ssh-devices) below to see it in action. - **Web docs button.** Opens the same guide at in your browser. The viewer remembers the last chapter you were reading, your font size, theme, reader-mode state, last search term, and sidebar width. State lives in `~/.aidaide/user_guide_state.json` (or `%APPDATA%\AidaIDE\user_guide_state.json` on Windows). > **Tip.** If you ever lose your place, `Ctrl+I` always lands you at the keyword index. --- # Keyword Index Source: https://aidaide.app/docs/keyword-index Alphabetical lookup. Click any entry to jump to the chapter that explains it. If a term has more than one home, the most useful place is listed first. Tip: your browser's in-page search (`Ctrl+F`) on this page is often the fastest way to find a term. If you know your symptom but not the term ("save did not work", "license will not activate") jump straight to [Chapter 18 — Troubleshooting & FAQ](/docs/troubleshooting). If you need the definition of a term in plain language, [Chapter 19 — Glossary](/docs/glossary) lists every term A–Z with one-line definitions. If you want a single printable page of every flag/path/port/shortcut, see [Chapter 20 — Quick Reference](/docs/quick-reference). ## A - **About dialog** — [Ch. 17 §Help menu](/docs/licensing#help-menu) - **Accent colour** — [Ch. 13 §Themes and appearance](/docs/settings-themes#themes-and-appearance) - **Access panel (Cloud Portal)** — [Ch. 21 §The Access panel](/docs/cloud-portal-docs#the-access-panel) - **Active Directory tab** — [Ch. 12 §Windows management](/docs/sysadmin#windows-management) - **Add command (LCOT)** — [Ch. 4 §Adding your own command](/docs/lcot#adding-your-own-command) - **Add host (Connection Manager)** — [Ch. 2 §Adding a host](/docs/ssh-devices#adding-a-host) - **Add panel** — [Ch. 16 §Add any panel](/docs/workspaces#add-any-panel) (`Ctrl+Shift+B`; `Ctrl+Shift+A` is AI Chat) - **Admin Dashboard (web)** — [Ch. 21 §Other web dashboards](/docs/cloud-portal-docs#other-web-dashboards) - **AI Agent Manager** — see *Claude Agent Manager* - **AI Agent Portal** — [Ch. 8 §AI Agent Portal](/docs/ai-assistant#ai-agent-portal) - **AI Agents tab** — [Ch. 8 §AI sidebar vs AI tabs](/docs/ai-assistant#ai-sidebar-vs-ai-tabs) - **AI Chat** — [Ch. 8 §AI Chat](/docs/ai-assistant#ai-chat-ctrlshifta) - **AI Hierarchy Builder** — [Ch. 9](/docs/hierarchy-builder) - **AI sidebar (toggle)** — [Ch. 8 §AI sidebar vs AI tabs](/docs/ai-assistant#ai-sidebar-vs-ai-tabs) - **AI Workflows** — [Ch. 8 §AI Workflows](/docs/ai-assistant#ai-workflows) - **aida-lite** — [Ch. 5 §Terms & Setup](/docs/fleet#aida-lite) - **AidaVirtualCursor** — [Ch. 22 §Trackpad mode and the virtual cursor](/docs/input-devices#trackpad-mode-and-the-virtual-cursor) - **Air-gapped install** — [Ch. 17 §"I want an air-gapped install"](/docs/licensing#i-want-an-air-gapped-install) - **Alert Manager** — [Ch. 12 §Monitoring & alerts](/docs/sysadmin#monitoring--alerts) - **Anatomy of a connection tab** — [Ch. 2 §Anatomy of a connection tab](/docs/ssh-devices#anatomy-of-a-connection-tab) - **Animations toggle** — [Ch. 13 §Animations](/docs/settings-themes#animations) - **Ansible Runner** — [Ch. 12 §Configuration management](/docs/sysadmin#configuration-management) - **Anthropic Claude** — [Ch. 8 §Claude Agent Manager](/docs/ai-assistant#claude-agent-manager-ctrlshiftm); see also *API key* - **API key** — [Ch. 8 §Terms & Setup](/docs/ai-assistant#api-key) - **API key (no key yet, setup paths)** — [Ch. 8 §"I don't have an API key yet" — setup paths](/docs/ai-assistant#i-dont-have-an-api-key-yet--setup-paths) - **Ask Macy (Interactive Guide)** — [Ch. 1 §Onboarding & guided tours](/docs/getting-started#onboarding--guided-tours) - **Audit log** — [Ch. 7 §Where the audit log lives](/docs/security-tools#terms--setup) | [Ch. 13 §Security](/docs/settings-themes#security) - **Auto Layout (Composer)** — [Ch. 9 §Web Composer](/docs/hierarchy-builder#web-composer-browser-version) | [Ch. 21 §Web Hierarchy Composer](/docs/cloud-portal-docs#web-hierarchy-composer) - **Auto Wire (Composer)** — [Ch. 9 §Web Composer](/docs/hierarchy-builder#web-composer-browser-version) - **Auto-save (arrangement)** — [Ch. 16 §Pick up where you left off](/docs/workspaces#pick-up-where-you-left-off) - **Auto-save (editor)** — [Ch. 3 §Editor features](/docs/file-browser#editor-features-worth-knowing) | [Ch. 13 §Editor](/docs/settings-themes#behaviour) - **Auto-update** — [Ch. 17 §Auto-update](/docs/licensing#auto-update) - **Autocomplete (SQL)** — [Ch. 11 §Query Editor](/docs/databases#query-editor) - **Autosave (Hierarchy Builder drafts)** — [Ch. 9 §Autosave & crash recovery](/docs/hierarchy-builder#autosave--crash-recovery) - **AZERTY (French keyboard)** — [Ch. 22 §International keyboard layouts](/docs/input-devices#international-keyboard-layouts) - **Azure OpenAI** — [Ch. 8 §Terms & Setup](/docs/ai-assistant#api-key) ## B - **Backup Dashboard (web)** — [Ch. 21 §Other web dashboards](/docs/cloud-portal-docs#other-web-dashboards) - **Backup Manager** — [Ch. 12 §Backup & disaster recovery](/docs/sysadmin#backup--disaster-recovery) - **Beta features** — see *Experimental Features* - **Board Library Manager** — [Ch. 5 §Board Library Manager](/docs/fleet#board-library-manager) - **Bookmarks (editor)** — [Ch. 3 §Editor features](/docs/file-browser#editor-features-worth-knowing) (`Ctrl+F2`) - **BPF filter** — [Ch. 6 §Terms & Setup](/docs/network-tools#bpf-filter) - **Branch (Git)** — [Ch. 3 §Git integration](/docs/file-browser#git-integration) - **Browser remote access** — [Ch. 21 — Cloud Portal](/docs/cloud-portal-docs) - **Bug Reports** — [Ch. 17 §Filing a bug](/docs/licensing#filing-a-bug) | [Ch. 18 §Filing a useful bug report](/docs/troubleshooting#filing-a-useful-bug-report) - **Bulk actions (Fleet)** — [Ch. 5 §Bulk actions](/docs/fleet#bulk-actions) - **Buying a license** — [Ch. 17 §Buying a license](/docs/licensing#buying-a-license) ## C - **"Connection refused" / "Connection timed out"** — [Ch. 18 §SSH and connections](/docs/troubleshooting#connection-refused-or-connection-timed-out) - **CA (Certificate Authority)** — [Ch. 7 §Terms & Setup](/docs/security-tools#ca-root-ca-intermediate) - **Camera Feed Grid** — [Ch. 10 §Feed Grid vs Grid Viewer](/docs/cameras#feed-grid-vs-grid-viewer) - **Camera Grid Viewer** — [Ch. 10 §Feed Grid vs Grid Viewer](/docs/cameras#feed-grid-vs-grid-viewer) - **Camera Manager** — [Ch. 10 §Camera Manager](/docs/cameras#camera-manager) - **Capture buffer (network)** — [Ch. 13 §Network](/docs/settings-themes#network) - **Certificate Inventory** — [Ch. 7 §Certificate Inventory](/docs/security-tools#certificate-inventory) - **Chain of Thought (LCOT)** — [Ch. 4 §Why "Chain of Thought"?](/docs/lcot#why-chain-of-thought) - **Cheat Sheet (quick reference)** — [Ch. 20](/docs/quick-reference) - **Check for Updates** — [Ch. 17 §Checking for updates](/docs/licensing#checking-for-updates) - **chmod +x (remote)** — [Ch. 3 §Remote file browser (SFTP)](/docs/file-browser#remote-file-browser-sftp) - **CIDR notation** — [Ch. 6 §Terms & Setup](/docs/network-tools#cidr-notation) - **CIS benchmark** — [Ch. 7 §Compliance Assessment](/docs/security-tools#compliance-assessment) - **Classic layout** — [Ch. 16 §Classic layout](/docs/workspaces#classic-layout). The old Classic Tabs layout mode is retired; see [Go back to tabs](/docs/workspaces#go-back-to-tabs). - **Claude Agent Manager** — [Ch. 8 §Claude Agent Manager](/docs/ai-assistant#claude-agent-manager-ctrlshiftm) - **Claude models (Sonnet/Opus/Haiku)** — [Ch. 8 §Claude Agent Manager](/docs/ai-assistant#claude-agent-manager-ctrlshiftm) - **CLI (Redis)** — [Ch. 11 §Redis Management](/docs/databases#redis-management) - **CLI flags / command-line flags** — [Ch. 20 §Command-line flags](/docs/quick-reference#command-line-flags) | [Ch. 18 §Safe mode](/docs/troubleshooting#safe-mode) - **Cloud Portal** — [Ch. 21 — Cloud Portal](/docs/cloud-portal-docs) | [Ch. 13 §Cloud Portal](/docs/settings-themes#cloud-portal) - **Cloud Portal — tunnel down** — [Ch. 18 §Cloud Portal — tunnel down](/docs/troubleshooting#cloud-portal--tunnel-down) - **Collaborator (permission group)** — [Ch. 21 §Permission groups in plain language](/docs/cloud-portal-docs#permission-groups-in-plain-language) - **Command ID** — [Ch. 14 §Terms & Setup](/docs/shortcuts#command-id) - **Command Palette** — [Ch. 14 §Command Palette](/docs/shortcuts#command-palette-ctrlshiftp) - **Command Palette prefixes (`>` `@` `:`)** — [Ch. 14 §Command Palette tips](/docs/shortcuts#command-palette-tips) | [Ch. 20 §Default keyboard shortcuts (full table)](/docs/quick-reference#default-keyboard-shortcuts-full-table) - **Comment line (`Ctrl+/`)** — [Ch. 14 §Edit shortcuts](/docs/shortcuts#edit) - **Compliance Assessment** — [Ch. 7 §Compliance Assessment](/docs/security-tools#compliance-assessment) - **Composer (Web Hierarchy)** — [Ch. 21 §Web Hierarchy Composer](/docs/cloud-portal-docs#web-hierarchy-composer) | [Ch. 9 §Web Composer](/docs/hierarchy-builder#web-composer-browser-version) - **Composer parity gaps (web vs desktop)** — [Ch. 18 §Composer (web vs desktop) parity](/docs/troubleshooting#composer-web-vs-desktop-parity) - **Config Dashboard (web)** — [Ch. 21 §Other web dashboards](/docs/cloud-portal-docs#other-web-dashboards) - **Config Drift Detection** — [Ch. 12 §Configuration management](/docs/sysadmin#configuration-management) - **Connection Manager** — [Ch. 2 §Connection Manager](/docs/ssh-devices#connection-manager) - **Connection tab** — [Ch. 2 §Anatomy of a connection tab](/docs/ssh-devices#anatomy-of-a-connection-tab) - **Connection timeout (SSH)** — [Ch. 13 §SSH](/docs/settings-themes#ssh) - **Container Dashboard (web)** — [Ch. 21 §Other web dashboards](/docs/cloud-portal-docs#other-web-dashboards) - **Containers** — see *Docker / Kubernetes* - **Core updates** — see *Check for Updates* - **Crash recovery (Hierarchy Builder)** — [Ch. 9 §Autosave & crash recovery](/docs/hierarchy-builder#autosave--crash-recovery) - **Create New Plugin/Widget** — [Ch. 15 §Creating a plugin](/docs/plugins#creating-a-plugin-or-widget) - **Crosshair (virtual cursor)** — see *AidaVirtualCursor* - **Customer Portal** — [Ch. 17 §License Status](/docs/licensing#license-status) - **CVE Scanner** — [Ch. 7 §CVE Scanner](/docs/security-tools#cve-scanner) - **CVSS score** — [Ch. 7 §Terms & Setup](/docs/security-tools#cvss) ## D - **"Demo mode" output** — [Ch. 18 §"Demo mode" vs real data](/docs/troubleshooting#demo-mode-vs-real-data) - **Dashboard (Device)** — [Ch. 5 §Device Dashboard](/docs/fleet#device-dashboard) - **Database Manager** — [Ch. 11 §Database Manager](/docs/databases#database-manager) - **DB Connection Manager** — [Ch. 11 §Saving connections](/docs/databases#saving-connections) - **Debug Console** — [Ch. 13 §Debug Console](/docs/settings-themes#debug-console-ctrlshiftd) | [Ch. 18 §Diagnostics you can run yourself](/docs/troubleshooting#diagnostics-you-can-run-yourself) - **Default port (SSH)** — [Ch. 13 §SSH](/docs/settings-themes#ssh) | [Ch. 2 §Ports and the port-22 trap](/docs/ssh-devices#ports-and-the-port-22-trap) - **Dependency Scanner** — [Ch. 7 §Dependency Scanner](/docs/security-tools#dependency-scanner) - **Deploy ESP32** — see *Deploy Lite* - **Deploy Lite** — [Ch. 5 §Deploy Lite](/docs/fleet#deploy-lite) - **Desired State Configuration (DSC)** — [Ch. 12 §Configuration management](/docs/sysadmin#configuration-management) - **Device binding (license)** — [Ch. 17 §Device binding](/docs/licensing#device-binding) - **Device Dashboard** — [Ch. 5 §Device Dashboard](/docs/fleet#device-dashboard) - **Device detail page (Cloud Portal)** — [Ch. 21 §The device detail page](/docs/cloud-portal-docs#the-device-detail-page) - **Device enrolment** — [Ch. 21 §Registering a device](/docs/cloud-portal-docs#registering-a-device) | [Ch. 21 §Terms](/docs/cloud-portal-docs#device-enrolment) - **Device Setup Wizard** — [Ch. 1 §First-run wizards](/docs/getting-started#first-run-wizards) - **Diagnostics (self-serve)** — [Ch. 18 §Diagnostics you can run yourself](/docs/troubleshooting#diagnostics-you-can-run-yourself) - **Diff Viewer** — [Ch. 3 §Diff Viewer](/docs/file-browser#diff-viewer) - **Direct Touch mode** — [Ch. 22 §Touch modes](/docs/input-devices#touch-modes) - **Disaster Recovery** — [Ch. 12 §Backup & disaster recovery](/docs/sysadmin#backup--disaster-recovery) - **Disconnect (active session)** — [Ch. 21 §The Access panel](/docs/cloud-portal-docs#the-access-panel) - **Disconnect / Reconnect (DB)** — [Ch. 11 §Database Manager](/docs/databases#database-manager) - **Discover Devices** — [Ch. 5 §Discover Devices](/docs/fleet#discover-devices) - **Display settings** — [Ch. 13 §Display settings](/docs/settings-themes#display-settings) - **DNS resolver** — [Ch. 13 §Network](/docs/settings-themes#network) - **Docker Compose** — [Ch. 12 §Containers](/docs/sysadmin#containers) - **Docker Manager** — [Ch. 12 §Containers](/docs/sysadmin#containers) - **Double tap (touch)** — [Ch. 22 §Gesture vocabulary](/docs/input-devices#gesture-vocabulary) - **DPI scaling** — [Ch. 13 §Multi-monitor + DPI](/docs/settings-themes#multi-monitor--dpi) - **Drafts (Hierarchy Builder)** — [Ch. 9 §Autosave & crash recovery](/docs/hierarchy-builder#autosave--crash-recovery) - **Drag-and-drop (file transfer)** — [Ch. 3 §Remote file browser (SFTP)](/docs/file-browser#remote-file-browser-sftp) ## E - **Edge swipe (top)** — [Ch. 22 §Gesture vocabulary](/docs/input-devices#gesture-vocabulary) - **Editor** — [Ch. 3](/docs/file-browser) - **Editor font** — [Ch. 13 §Font and spacing](/docs/settings-themes#font-and-spacing) - **Enable Cloud Access (Settings)** — [Ch. 13 §Cloud Portal](/docs/settings-themes#cloud-portal) | [Ch. 21 §Registering a device](/docs/cloud-portal-docs#registering-a-device) - **Encoding (UTF-8)** — [Ch. 3 §Encoding (UTF-8)](/docs/file-browser#encoding-utf-8) | [Ch. 13 §Behaviour](/docs/settings-themes#behaviour) - **Encryption profile** — [Ch. 13 §Security](/docs/settings-themes#security) - **Enter License Key** — [Ch. 17 §Activating your license](/docs/licensing#activating-your-license) - **Environment variables (AIDA_SPLASH, AIDA_LOG_DIR, etc.)** — [Ch. 20 §Environment variables](/docs/quick-reference#environment-variables) - **ESP32** — [Ch. 5 §Deploy Lite](/docs/fleet#deploy-lite) - **EU jurisdiction (R2)** — [Ch. 17 §EU/data-residency note](/docs/licensing#eudata-residency-note) - **Experimental Features** — [Ch. 13 §Experimental Features](/docs/settings-themes#experimental-features) - **Export chapter as PDF (Ctrl+Shift+E)** — [Ch. 14 §User Guide viewer (Help → User Guide)](/docs/shortcuts#user-guide-viewer-help--user-guide) - **Export query results** — [Ch. 11 §"Export a query result to my team"](/docs/databases#export-a-query-result-to-my-team) - **Export whole guide as one PDF (Ctrl+Shift+G)** — [Ch. 14 §User Guide viewer (Help → User Guide)](/docs/shortcuts#user-guide-viewer-help--user-guide) ## F - **F1-F12 (on-screen)** — [Ch. 22 §The mobile shortcut bar](/docs/input-devices#the-mobile-shortcut-bar) - **F5 (Run file / Run query)** — [Ch. 14 §Editor shortcuts](/docs/shortcuts#editor) | [Ch. 11 §Query Editor](/docs/databases#query-editor) | [Ch. 20 §Default keyboard shortcuts](/docs/quick-reference#default-keyboard-shortcuts-full-table) - **F8 (Run selection in SQL)** — [Ch. 11 §Query Editor](/docs/databases#query-editor) | [Ch. 20 §Default keyboard shortcuts](/docs/quick-reference#default-keyboard-shortcuts-full-table) - **Feature Browser** — [Ch. 14 §Feature Browser](/docs/shortcuts#feature-browser) - **Feature tab** — [Ch. 1 §What you see](/docs/getting-started#what-you-see) - **File menu** — [Ch. 1 §Menu bar](/docs/getting-started#menu-bar) - **File paths (vault.enc, layouts/, logs/, etc.)** — [Ch. 20 §File and directory paths](/docs/quick-reference#file-and-directory-paths) - **Find / Find in Files** — [Ch. 3 §Find and Find in Files](/docs/file-browser#find-and-find-in-files) - **First-run wizard** — [Ch. 1 §First-run wizards](/docs/getting-started#first-run-wizards) - **Fleet Manager** — [Ch. 5 §Fleet Manager](/docs/fleet#fleet-manager) - **Floating panels** — [Ch. 16 §Floating panels](/docs/workspaces#floating-panels) - **Fly.io (Cloud Portal deploy)** — [Ch. 21 §Self-hosting the portal](/docs/cloud-portal-docs#self-hosting-the-portal) - **Forgot password (vault)** — [Ch. 1 §Unlocking the vault](/docs/getting-started#unlocking-the-vault) - **Format on save** — [Ch. 3 §Editor features](/docs/file-browser#editor-features-worth-knowing) - **Format SQL** — [Ch. 11 §Query Editor](/docs/databases#query-editor) (`Ctrl+Shift+F`) - **Freeze (UI hang)** — [Ch. 18 §The UI freezes for a few seconds at a time](/docs/troubleshooting#the-ui-freezes-for-a-few-seconds-at-a-time) ## G - **Gamepad (browser)** — [Ch. 22 §"I do not have a gamepad yet" — Gamepad API](/docs/input-devices#i-do-not-have-a-gamepad-yet--gamepad-api) - **General settings** — [Ch. 13 §General](/docs/settings-themes#general) - **Gesture (touch)** — [Ch. 22 §Gesture vocabulary](/docs/input-devices#gesture-vocabulary) - **Ghost text (AI inline)** — [Ch. 8 §Toggle Inline Suggestions](/docs/ai-assistant#toggle-inline-suggestions) | [Ch. 18 §Ghost text appears in the wrong place](/docs/troubleshooting#ghost-text-appears-in-the-wrong-place) - **Git Manager** — [Ch. 3 §Git integration](/docs/file-browser#git-integration) - **Git Pull / Push / Status** — [Ch. 3 §Git integration](/docs/file-browser#git-integration) - **Glossary** — [Ch. 19](/docs/glossary) - **Go to Line** — [Ch. 3 §Find and Find in Files](/docs/file-browser#find-and-find-in-files) - **Grid Layout (retired)** — rc18 replaced the per-tab Grid Layout mode. Old grid layouts are not carried over. [Ch. 16 §Go back to tabs](/docs/workspaces#go-back-to-tabs) - **Groups (Connection Manager)** — [Ch. 2 §Grouping hosts](/docs/ssh-devices#grouping-hosts) - **Groups (Fleet)** — [Ch. 5 §Groups](/docs/fleet#groups) - **Guest Pass** — [Ch. 21 §Inviting a guest](/docs/cloud-portal-docs#inviting-a-guest) | [Ch. 21 §Terms](/docs/cloud-portal-docs#guest-pass) - **Guest pass claim fails** — [Ch. 18 §Guest pass claim fails](/docs/troubleshooting#guest-pass-claim-fails) - **Guided Tour** — see *Ask Macy* ## H - **"Host key has changed!"** — [Ch. 18 §"Host key has changed!"](/docs/troubleshooting#host-key-has-changed) - **Hardware Lab** — [Ch. 23](/docs/hardware-lab); citation-ready definition [/guides/hardware-lab](/guides/hardware-lab) - **HIL (virtual)** — see *Hardware Lab* — not Fleet Test Panel - **Haptic (vibrate on mode switch)** — [Ch. 22 §Touch modes](/docs/input-devices#touch-modes) - **Heartbeat (presence)** — [Ch. 22 §Terms](/docs/input-devices#heartbeat-presence) - **Help menu** — [Ch. 17 §Help menu](/docs/licensing#help-menu) - **Hidden commands (LCOT)** — [Ch. 4 §Hidden commands](/docs/lcot#terms--setup) | [Ch. 13 §LCOT](/docs/settings-themes#lcot) - **Hierarchy Builder** — [Ch. 9](/docs/hierarchy-builder) - **Host Discovery** — [Ch. 6 §Host Discovery](/docs/network-tools#host-discovery) - **Host key** — [Ch. 2 §Terms & Setup](/docs/ssh-devices#host-key) - **HTTP proxy** — [Ch. 13 §Network](/docs/settings-themes#network) | [Ch. 17 §"My license stopped working"](/docs/licensing#my-license-stopped-working) ## I - **"Invalid API key"** — [Ch. 18 §"Invalid API key"](/docs/troubleshooting#invalid-api-key) - **IC (Integrated Circuit)** — [Ch. 9 §Component library](/docs/hierarchy-builder#component-library) - **Import (Connection Manager from SSH config)** — [Ch. 2 §Importing existing SSH config](/docs/ssh-devices#importing-existing-ssh-config) - **Import / Export bindings** — [Ch. 14 §Importing / exporting](/docs/shortcuts#importing--exporting) - **Industrial PLC** — [Ch. 5 §PLC Monitor](/docs/fleet#plc-monitor) | [Ch. 5 §"Industrial PLC: how do I find my register addresses?"](/docs/fleet#industrial-plc-how-do-i-find-my-register-addresses) - **Inline images (User Guide viewer)** — [Ch. 14 §User Guide viewer (Help → User Guide)](/docs/shortcuts#user-guide-viewer-help--user-guide) - **Inline Suggestions (AI)** — [Ch. 8 §Toggle Inline Suggestions](/docs/ai-assistant#toggle-inline-suggestions) | [Ch. 18 §Inline suggestions appear in unrelated files](/docs/troubleshooting#inline-suggestions-appear-in-unrelated-files) - **Input devices (browser RD)** — [Ch. 22 — Input Devices in the Browser](/docs/input-devices) - **Intel Panel** — [Ch. 2 §Anatomy of a connection tab](/docs/ssh-devices#anatomy-of-a-connection-tab) - **Invite a guest** — [Ch. 21 §Inviting a guest](/docs/cloud-portal-docs#inviting-a-guest) - **IOC Database** — [Ch. 7 §IOC Database](/docs/security-tools#ioc-database) - **IP Access Control** — [Ch. 7 §IP Access Control](/docs/security-tools#ip-access-control) ## J - **JSON (workspace files)** — [Ch. 16 §"How do I share a workspace with a teammate?"](/docs/workspaces#how-do-i-share-a-workspace-with-a-teammate) - **JSON (settings)** — [Ch. 13 §Where settings persist](/docs/settings-themes#where-settings-persist) ## K - **Keepalive interval (SSH)** — [Ch. 13 §SSH](/docs/settings-themes#ssh) - **Key file / passphrase** — [Ch. 2 §Authentication](/docs/ssh-devices#authentication) - **Key permissions errors** — [Ch. 2 §Key permissions errors](/docs/ssh-devices#key-permissions-errors) - **Keybinding context** — [Ch. 14 §Keybinding context](/docs/shortcuts#keybinding-context) - **Keyboard layout (en-US / GB / de / fr / es)** — [Ch. 22 §International keyboard layouts](/docs/input-devices#international-keyboard-layouts) - **Keyboard Shortcuts editor** — [Ch. 14 §Customising shortcuts](/docs/shortcuts#customising-shortcuts) - **Known hosts file** — [Ch. 13 §SSH](/docs/settings-themes#ssh) - **Kubernetes Client** — [Ch. 12 §Containers](/docs/sysadmin#containers) ## L - **Layout (keyboard)** — [Ch. 22 §Terms](/docs/input-devices#layout-keyboard) - **Layout Mode (retired)** — Grid vs Classic Tabs is gone. [Ch. 16 §Go back to tabs](/docs/workspaces#go-back-to-tabs) - **Layout Presets (retired)** — No bundled presets. Named layouts: [Ch. 16 §Save named layouts](/docs/workspaces#save-named-layouts) - **Layout Wizard (retired)** — The sparkle wizard is gone. Save a named layout from the toolbar **Workspace** list. [Ch. 16 §Save named layouts](/docs/workspaces#save-named-layouts) - **LCOT Panel** — [Ch. 4](/docs/lcot) - **LDAP / LDAPS** — [Ch. 12 §Terms & Setup](/docs/sysadmin#ldap--ldaps) - **License gating (AI features)** — [Ch. 8 §License gating](/docs/ai-assistant#license-gating) - **License key format** — [Ch. 17 §Terms & Setup](/docs/licensing#license-key-format) - **License Status** — [Ch. 17 §License Status](/docs/licensing#license-status) - **License will not activate** — [Ch. 18 §License will not activate](/docs/troubleshooting#license-will-not-activate) - **Linting** — [Ch. 3 §Editor features](/docs/file-browser#editor-features-worth-knowing) - **Live Coding Agents** — [Ch. 8 §Live Coding Agents](/docs/ai-assistant#live-coding-agents-ctrlshiftj) - **Loading Splash** — [Ch. 1 §Splash screen](/docs/getting-started#splash-screen) - **Local file browser** — [Ch. 3 §Local file browser](/docs/file-browser#local-file-browser) - **Local model (Ollama)** — [Ch. 8 §"I don't have an API key yet" — setup paths](/docs/ai-assistant#i-dont-have-an-api-key-yet--setup-paths) - **Logs** — [Ch. 17 §Logs](/docs/licensing#logs) - **Long press (touch right-click)** — [Ch. 22 §Gesture vocabulary](/docs/input-devices#gesture-vocabulary) - **Loopback testing (`127.0.0.1`)** — [Ch. 6 §"I don't have a network to scan" — practice without disturbing real hosts](/docs/network-tools#i-dont-have-a-network-to-scan--practice-without-disturbing-real-hosts) ## M - **Marketplace Store** — [Ch. 15 §Marketplace Store](/docs/plugins#marketplace-store) - **Master password** — [Ch. 1 §Unlocking the vault](/docs/getting-started#unlocking-the-vault) - **Menu bar** — [Ch. 1 §Menu bar](/docs/getting-started#menu-bar) - **Metrics Collector** — [Ch. 12 §Monitoring & alerts](/docs/sysadmin#monitoring--alerts) - **Minimap** — [Ch. 9 §Navigation and tools](/docs/hierarchy-builder#navigation-and-tools) - **Mobile shortcut bar** — [Ch. 22 §The mobile shortcut bar](/docs/input-devices#the-mobile-shortcut-bar) - **Modifier latch (Ctrl/Alt/Shift)** — [Ch. 22 §The mobile shortcut bar](/docs/input-devices#the-mobile-shortcut-bar) - **Module (Hierarchy Builder)** — [Ch. 9 §Component library](/docs/hierarchy-builder#component-library) - **Mojibake (UTF-8 mismatch)** — [Ch. 18 §File browser, editor, save](/docs/troubleshooting#file-browser-editor-save) - **MongoDB Management** — [Ch. 11 §Per-engine tabs](/docs/databases#per-engine-tabs) - **Monitoring Dashboard** — [Ch. 12 §Monitoring & alerts](/docs/sysadmin#monitoring--alerts) - **Mouse gestures** — [Ch. 14 §Mouse gestures](/docs/shortcuts#mouse-gestures) - **Multi-cursor** — [Ch. 3 §Cursor and selection](/docs/file-browser#cursor-and-selection) - **Multi-monitor** — [Ch. 13 §Multi-monitor + DPI](/docs/settings-themes#multi-monitor--dpi) - **Multi-port agents (roadmap)** — [Ch. 9 §Multi-port agents — coming](/docs/hierarchy-builder#multi-port-agents--coming) - **Multi-window** — [Ch. 16 §Multi-window](/docs/workspaces#multi-window) - **My Devices (portal)** — [Ch. 21 §Logging in](/docs/cloud-portal-docs#logging-in) - **MySQL Management** — [Ch. 11 §Per-engine tabs](/docs/databases#per-engine-tabs) ## N - **Named layouts** — [Ch. 16 §Save named layouts](/docs/workspaces#save-named-layouts) - **Network Diagnostics** — [Ch. 6 §Network Diagnostics](/docs/network-tools#network-diagnostics) - **Network Topology** — [Ch. 6 §Network Topology](/docs/network-tools#network-topology) - **Network (no LAN to scan)** — [Ch. 6 §"I don't have a network to scan" — practice without disturbing real hosts](/docs/network-tools#i-dont-have-a-network-to-scan--practice-without-disturbing-real-hosts) - **New Tab** — [Ch. 2 §Opening a new connection](/docs/ssh-devices#opening-a-new-connection) - **"No API key yet"** — [Ch. 8 §"I don't have an API key yet" — setup paths](/docs/ai-assistant#i-dont-have-an-api-key-yet--setup-paths) - **"No device yet"** — [Ch. 5 §"I don't have a device yet"](/docs/fleet#i-dont-have-a-device-yet) - **"No SSH server yet"** — [Ch. 2 §"I do not have an SSH server" — setup paths](/docs/ssh-devices#i-do-not-have-an-ssh-server--setup-paths) - **Notifications (SMTP / Slack / Webhook)** — [Ch. 13 §Network](/docs/settings-themes#network) - **Npcap (Windows Packet Capture)** — [Ch. 20 §Platform-specific notes](/docs/quick-reference#windows) - **Notify (web link)** — *Retired. AidaIDE is now free forever; Pro ($19/mo) adds the AI suite.* See [Ch. 17 §Buying a license](/docs/licensing#buying-a-license). ## O - **OIDC (OpenID Connect)** — [Ch. 21 §Logging in](/docs/cloud-portal-docs#logging-in) | [Ch. 21 §Terms](/docs/cloud-portal-docs#oidc-openid-connect) - **Ollama (local AI)** — [Ch. 8 §Terms & Setup](/docs/ai-assistant#api-key) | [Ch. 8 §"I don't have an API key yet" — setup paths](/docs/ai-assistant#i-dont-have-an-api-key-yet--setup-paths) - **Onboarding Wizard** — [Ch. 1 §First-run wizards](/docs/getting-started#first-run-wizards) - **ONVIF discovery** — [Ch. 10 §Scanning for cameras](/docs/cameras#scanning-for-cameras) - **Open Project Folder** — [Ch. 3 §Opening files and projects](/docs/file-browser#opening-files-and-projects) - **OpenSSH (server setup)** — [Ch. 2 §"I do not have an SSH server" — setup paths](/docs/ssh-devices#i-do-not-have-an-ssh-server--setup-paths) - **OS fingerprinting** — [Ch. 6 §Terms & Setup](/docs/network-tools#os-fingerprinting) - **OTA signing keys** — [Ch. 5 §Signing keys](/docs/fleet#signing-keys) - **OTA Update Manager** — [Ch. 5 §OTA Update Manager](/docs/fleet#ota-update-manager) - **Owner (permission group)** — [Ch. 21 §Permission groups in plain language](/docs/cloud-portal-docs#permission-groups-in-plain-language) ## P - **"Permission denied (publickey)"** — [Ch. 18 §"Permission denied (publickey)"](/docs/troubleshooting#permission-denied-publickey) - **.plugin file** — [Ch. 15 §Terms & Setup](/docs/plugins#plugin-file) - **Packet Capture** — [Ch. 6 §Packet Capture](/docs/network-tools#packet-capture) - **Page-break-before-H1 (whole-guide PDF)** — [Ch. 14 §User Guide viewer (Help → User Guide)](/docs/shortcuts#user-guide-viewer-help--user-guide) - **Pass (Guest)** — see *Guest Pass* - **Patch Manager / Patch Policies** — [Ch. 12 §Patch management](/docs/sysadmin#patch-management) - **pcap** — [Ch. 6 §Terms & Setup](/docs/network-tools#pcap) - **PDF export of a chapter** — [Ch. 14 §User Guide viewer (Help → User Guide)](/docs/shortcuts#user-guide-viewer-help--user-guide) - **PDF export of the whole guide (single document)** — [Ch. 14 §User Guide viewer (Help → User Guide)](/docs/shortcuts#user-guide-viewer-help--user-guide) - **Performance Monitor** — [Ch. 13 §Performance Monitor](/docs/settings-themes#performance-monitor) | [Ch. 18 §Performance](/docs/troubleshooting#performance) - **Permanent collaborators** — [Ch. 21 §The Access panel](/docs/cloud-portal-docs#the-access-panel) - **Permission group** — [Ch. 21 §Permission groups in plain language](/docs/cloud-portal-docs#permission-groups-in-plain-language) - **Permissions (widgets)** — [Ch. 15 §Widget permissions](/docs/plugins#widget-permissions) - **Persona Portal** — [Ch. 8 §Persona Portal](/docs/ai-assistant#persona-portal) - **Pinch (client-side zoom)** — [Ch. 22 §Gesture vocabulary](/docs/input-devices#gesture-vocabulary) - **Pinning tabs** — [Ch. 16 §Pinning tabs](/docs/workspaces#pinning-tabs) - **Pipeline (Hierarchy Builder)** — [Ch. 9 §Running a pipeline](/docs/hierarchy-builder#running-a-pipeline) - **PKI Manager** — [Ch. 7 §PKI Manager](/docs/security-tools#pki-manager) - **Platform notes (Windows / macOS / Linux)** — [Ch. 20 §Platform-specific notes](/docs/quick-reference#platform-specific-notes) - **PLC Monitor** — [Ch. 5 §PLC Monitor](/docs/fleet#plc-monitor) - **Plugin & Widget Manager** — [Ch. 15 §Plugin and Widget Manager](/docs/plugins#plugin-and-widget-manager) - **Port Scanner** — [Ch. 6 §Port Scanner](/docs/network-tools#port-scanner) - **Portal (Cloud)** — see *Cloud Portal* - **Ports (default — SSH, DB, OTA, RTSP, etc.)** — [Ch. 20 §Default ports and endpoints](/docs/quick-reference#default-ports-and-endpoints) - **PostgreSQL Management** — [Ch. 11 §Per-engine tabs](/docs/databases#per-engine-tabs) - **Presence (other watchers)** — [Ch. 22 §Presence and spectate](/docs/input-devices#presence-and-spectate) - **Preview menu** — [Ch. 1 §Menu bar](/docs/getting-started#menu-bar) - **Pricing tiers** — [Ch. 17 §Buying a license](/docs/licensing#buying-a-license) | [Ch. 20 §Pricing tiers at a glance](/docs/quick-reference#pricing-tiers-at-a-glance) - **Privacy notes (AI)** — [Ch. 8 §Privacy notes](/docs/ai-assistant#privacy-notes) - **Privileges (DB safety)** — [Ch. 11 §Privileges and safety](/docs/databases#privileges-and-safety) - **Project from Template** — [Ch. 3 §Opening files and projects](/docs/file-browser#opening-files-and-projects) | [Ch. 3 §Project templates available](/docs/file-browser#project-templates-available) - **Project root** — [Ch. 3 §Terms & Setup](/docs/file-browser#project-root) - **Prompt-host approval** — [Ch. 21 §Permission groups in plain language](/docs/cloud-portal-docs#permission-groups-in-plain-language) | [Ch. 21 §Terms](/docs/cloud-portal-docs#prompt-host) - **Protocol Wizard** — [Ch. 5 §Protocol Wizard](/docs/fleet#protocol-wizard) - **Public key vs private key** — [Ch. 2 §Terms & Setup](/docs/ssh-devices#public-key-vs-private-key) ## Q - **Query Editor** — [Ch. 11 §Query Editor](/docs/databases#query-editor) - **Quick Push (Git)** — [Ch. 3 §Git integration](/docs/file-browser#git-integration) - **Quick Reference / Cheat Sheet** — [Ch. 20](/docs/quick-reference) - **Quick Toolkit (Sysadmin)** — [Ch. 4 §Sysadmin Quick Toolkit](/docs/lcot#sysadmin-quick-toolkit) - **QWERTZ (German keyboard)** — [Ch. 22 §International keyboard layouts](/docs/input-devices#international-keyboard-layouts) ## R - **RD PIN** — [Ch. 21 §Remote Desktop in the browser](/docs/cloud-portal-docs#remote-desktop-in-the-browser) | [Ch. 18 §Cloud Portal — RD PIN issues](/docs/troubleshooting#cloud-portal--rd-pin-issues) - **READ scripts (LCOT)** — [Ch. 4 §READ vs WRITE zones](/docs/lcot#read-vs-write-zones) - **Read-Only (permission group)** — [Ch. 21 §Permission groups in plain language](/docs/cloud-portal-docs#permission-groups-in-plain-language) - **Recent Connections** — [Ch. 16 §Recent things](/docs/workspaces#recent-things) | [Ch. 2 §Recent connections](/docs/ssh-devices#recent-connections) - **Recent Files** — [Ch. 16 §Recent things](/docs/workspaces#recent-things) - **Recording (cameras)** — [Ch. 10 §Recording](/docs/cameras#recording) - **Recurring trap** — [Ch. 18 §Recurring trap](/docs/troubleshooting#recurring-trap) | [Ch. 19 Glossary](/docs/glossary#r) | [Ch. 20 §Recurring traps to be aware of](/docs/quick-reference#recurring-traps-to-be-aware-of) - **Redis Management** — [Ch. 11 §Per-engine tabs](/docs/databases#per-engine-tabs) - **Registry Client (Docker)** — [Ch. 12 §Containers](/docs/sysadmin#containers) - **Remote Desktop (browser)** — [Ch. 21 §Remote Desktop in the browser](/docs/cloud-portal-docs#remote-desktop-in-the-browser) - **Remote file browser** — [Ch. 3 §Remote file browser (SFTP)](/docs/file-browser#remote-file-browser-sftp) - **Replace (Find/Replace)** — [Ch. 3 §Find and Find in Files](/docs/file-browser#find-and-find-in-files) - **Reset section to defaults** — [Ch. 13 §"I changed something and it broke"](/docs/settings-themes#i-changed-something-and-it-broke) - **Reset vault** — [Ch. 1 §Unlocking the vault](/docs/getting-started#unlocking-the-vault) - **Revoke (Guest Pass)** — [Ch. 21 §Inviting a guest](/docs/cloud-portal-docs#inviting-a-guest) - **Roadmap** — [Ch. 17 §Roadmap pointers (subject to change)](/docs/licensing#roadmap-pointers-subject-to-change) - **RTSP** — [Ch. 10 §Terms & Setup](/docs/cameras#rtsp) - **Run (file / SQL)** — [Ch. 3 §Running files](/docs/file-browser#running-files) | [Ch. 11 §Query Editor](/docs/databases#query-editor) - **Run (Hierarchy Builder)** — [Ch. 9 §Running a pipeline](/docs/hierarchy-builder#running-a-pipeline) - **Run panel** — [Ch. 3 §Terms & Setup](/docs/file-browser#run-panel) ## S - **--safe-mode (launch flag)** — [Ch. 17 §"AidaIDE will not start after an update"](/docs/licensing#aidaide-will-not-start-after-an-update) | [Ch. 18 §Safe mode](/docs/troubleshooting#safe-mode) - **SAST Scanner** — [Ch. 7 §SAST Scanner](/docs/security-tools#sast-scanner) - **SAST vs DAST** — [Ch. 7 §Terms & Setup](/docs/security-tools#sast-vs-dast) - **Save Chat Session** — [Ch. 8 §Saving and loading sessions](/docs/ai-assistant#saving-and-loading-sessions) - **Save did not persist (remote)** — [Ch. 18 §Save to a remote file appears to succeed but the file did not change](/docs/troubleshooting#save-to-a-remote-file-appears-to-succeed-but-the-file-did-not-change) - **Save layout** — [Ch. 16 §Save named layouts](/docs/workspaces#save-named-layouts) - **Scan for Cameras** — [Ch. 10 §Scanning for cameras](/docs/cameras#scanning-for-cameras) - **Scroll mode (touch)** — [Ch. 22 §Touch modes](/docs/input-devices#touch-modes) - **Secret Scanner** — [Ch. 7 §Secret Scanner](/docs/security-tools#secret-scanner) - **Security Scanner** — [Ch. 7 §Security Scanner](/docs/security-tools#security-scanner) - **Self-hosting (Cloud Portal)** — [Ch. 21 §Self-hosting the portal](/docs/cloud-portal-docs#self-hosting-the-portal) - **Serial Monitor** — [Ch. 5 §Serial Monitor](/docs/fleet#serial-monitor) - **Service Detection** — [Ch. 6 §Service Detection](/docs/network-tools#service-detection) - **Sessions (active)** — [Ch. 21 §The Access panel](/docs/cloud-portal-docs#the-access-panel) - **Settings dialog** — [Ch. 13](/docs/settings-themes) - **Setup Wizard** — see *First-run wizard* - **SFTP** — [Ch. 2 §Terms & Setup](/docs/ssh-devices#sftp) | [Ch. 3 §Remote file browser (SFTP)](/docs/file-browser#remote-file-browser-sftp) - **Shortcut bar (mobile)** — see *Mobile shortcut bar* - **Shortcuts Editor** — [Ch. 14 §Customising shortcuts](/docs/shortcuts#customising-shortcuts) - **Sidebar (AI)** — [Ch. 8 §AI sidebar vs AI tabs](/docs/ai-assistant#ai-sidebar-vs-ai-tabs) - **SignalFlowEngine** — [Ch. 9 §Terms & Setup](/docs/hierarchy-builder#signalflowengine) - **Smart Login** — [Ch. 1 §Unlocking the vault](/docs/getting-started#unlocking-the-vault) - **SoC (System on Chip)** — [Ch. 9 §Component library](/docs/hierarchy-builder#component-library) - **Soft-restart bypass** — [Ch. 1 §Soft-restart bypass](/docs/getting-started#soft-restart-bypass) - **Spectate (follow another watcher)** — [Ch. 22 §Presence and spectate](/docs/input-devices#presence-and-spectate) - **Splash screen** — [Ch. 1 §Splash screen](/docs/getting-started#splash-screen) - **Split panes (editor)** — [Ch. 3 §Split panes](/docs/file-browser#split-panes) - **SQLite (Beta)** — [Ch. 11 §"I do not have a database to play with"](/docs/databases#i-do-not-have-a-database-to-play-with) - **SSH (Secure Shell)** — [Ch. 2 §Terms & Setup](/docs/ssh-devices#ssh-secure-shell) - **SSH key manager** — [Ch. 2 §Keys vs passwords](/docs/ssh-devices#keys-vs-passwords) - **SSH key pair (setup)** — [Ch. 2 §Setting up your first SSH key pair](/docs/ssh-devices#setting-up-your-first-ssh-key-pair) - **SSH Port** — [Ch. 2 §Ports and the port-22 trap](/docs/ssh-devices#ports-and-the-port-22-trap) - **Status bar** — [Ch. 1 §What you see](/docs/getting-started#what-you-see) | [Ch. 3 §Line endings](/docs/file-browser#editor-features-worth-knowing) - **Substream (cameras)** — [Ch. 10 §Terms & Setup](/docs/cameras#substream) - **Symptom-first lookup** — [Ch. 18 — Troubleshooting & FAQ](/docs/troubleshooting) - **Sysadmin** — [Ch. 12](/docs/sysadmin) ## T - **Tab (panel)** — In the workbench every tab is a panel. [Ch. 16](/docs/workspaces) - **Tab management** — [Ch. 16 §Tab management](/docs/workspaces#tab-management) - **Telemetry** — [Ch. 13 §General](/docs/settings-themes#general) - **Template Manager** — [Ch. 12 §Configuration management](/docs/sysadmin#configuration-management) - **Templates (project)** — [Ch. 3 §Opening files and projects](/docs/file-browser#opening-files-and-projects) - **Terminal (in connection tab)** — [Ch. 2 §Anatomy of a connection tab](/docs/ssh-devices#anatomy-of-a-connection-tab) - **Terminal type (xterm-256color)** — [Ch. 13 §SSH](/docs/settings-themes#ssh) - **Test connection (AI)** — [Ch. 8 §Claude Agent Manager](/docs/ai-assistant#claude-agent-manager-ctrlshiftm) - **Test Panel** — [Ch. 5 §Test Panel](/docs/fleet#test-panel) - **Theme** — [Ch. 13 §Themes and appearance](/docs/settings-themes#themes-and-appearance) - **Threat Intel Feeds** — [Ch. 7 §Threat Intel Feeds](/docs/security-tools#threat-intel-feeds) - **Three-finger tap (toggle keyboard)** — [Ch. 22 §Gesture vocabulary](/docs/input-devices#gesture-vocabulary) - **TLS (databases)** — [Ch. 11 §Terms & Setup](/docs/databases#tls) - **Toolbar** — [Ch. 1 §Toolbar](/docs/getting-started#toolbar) - **Touch mode pill** — [Ch. 22 §Touch modes](/docs/input-devices#touch-modes) - **Trace mode (Hierarchy Builder)** — [Ch. 9 §Terms & Setup](/docs/hierarchy-builder#trace-mode) - **Trackpad mode (touch)** — [Ch. 22 §Touch modes](/docs/input-devices#touch-modes) - **Traffic Analyzer** — [Ch. 6 §Traffic Analyzer](/docs/network-tools#traffic-analyzer) - **Troubleshooting** — [Ch. 18 — Troubleshooting & FAQ](/docs/troubleshooting) - **Trusted (permission group)** — [Ch. 21 §Permission groups in plain language](/docs/cloud-portal-docs#permission-groups-in-plain-language) - **Trusted authors (plugins)** — [Ch. 15 §Terms & Setup](/docs/plugins#trusted-authors) - **Tunnel down (Cloud Portal)** — [Ch. 18 §Cloud Portal — tunnel down](/docs/troubleshooting#cloud-portal--tunnel-down) - **Tunnel gateway** — [Ch. 21 §Terms](/docs/cloud-portal-docs#tunnel-gateway) - **Two-finger tap (right-click)** — [Ch. 22 §Gesture vocabulary](/docs/input-devices#gesture-vocabulary) ## U - **Uninstalling AidaIDE** — [Ch. 17 §Uninstalling](/docs/licensing#uninstalling) - **Unlock (vault)** — [Ch. 1 §Unlocking the vault](/docs/getting-started#unlocking-the-vault) - **Updates (check)** — [Ch. 17 §Checking for updates](/docs/licensing#checking-for-updates) - **Update channels (stable/beta/nightly)** — [Ch. 17 §Update channels](/docs/licensing#update-channels) - **Update history (rollback)** — [Ch. 17 §Update history & rollback](/docs/licensing#update-history--rollback) - **Upgrade plan** — [Ch. 17 §Licensing](/docs/licensing#licensing) - **USB camera (local webcam)** — [Ch. 10 §"I do not have a camera yet"](/docs/cameras#i-do-not-have-a-camera-yet--setup-paths) - **User Guide (Help menu)** — [Ch. 17 §Support and feedback](/docs/licensing#support-and-feedback) ## V - **Validate (Composer)** — [Ch. 9 §Web Composer](/docs/hierarchy-builder#web-composer-browser-version) - **Vault** — [Ch. 1 §Unlocking the vault](/docs/getting-started#unlocking-the-vault) | [Ch. 19 §V](/docs/glossary#v) - **Vault rotate password** — [Ch. 13 §Security](/docs/settings-themes#security) - **Vault timeout (auto-lock)** — [Ch. 13 §Security](/docs/settings-themes#security) - **Verbose / debug log mode** — [Ch. 18 §Verbose / debug log mode](/docs/troubleshooting#verbose--debug-log-mode) - **Verify the vault** — [Ch. 18 §Verify the vault](/docs/troubleshooting#verify-the-vault) - **Version (current build)** — [Ch. 17 §Checking for updates](/docs/licensing#checking-for-updates) - **Vibrate (haptic feedback)** — see *Haptic* - **View menu** — [Ch. 13 §General](/docs/settings-themes#general) | [Ch. 16 §Go back to tabs](/docs/workspaces#go-back-to-tabs) - **Virtual cursor** — see *AidaVirtualCursor* - **Virtual environment (Python)** — [Ch. 3 §Run a file](/docs/file-browser#run-a-file) - **Visual themes (Hierarchy Builder)** — [Ch. 9 §Visual themes](/docs/hierarchy-builder#visual-themes) - **VLAN tagging** — [Ch. 6 §Topology](/docs/network-tools#topology) - **VM (virtual machine for SSH practice)** — [Ch. 2 §"I do not have an SSH server"](/docs/ssh-devices#i-do-not-have-an-ssh-server--setup-paths) - **VNC** — [Ch. 19 §V](/docs/glossary#v) - **VS Code import / keybindings** — [Ch. 14 §Importing other editor keymaps](/docs/shortcuts#shortcuts-editor) - **Vulnerability scanner** — [Ch. 7 §Vulnerability Scanner](/docs/security-tools#vulnerability-scanner) ## W - **Watcher pill** — [Ch. 22 §Presence and spectate](/docs/input-devices#presence-and-spectate) | [Ch. 22 §Terms](/docs/input-devices#watcher-pill) - **Watchlist (alerts)** — [Ch. 12 §Monitoring](/docs/sysadmin#monitoring-and-alerts) - **Web Composer** — see *Composer (Web Hierarchy)* - **Web Dashboard** — [Ch. 5 §Web Dashboard](/docs/fleet#web-dashboard) | [Ch. 19 §W](/docs/glossary#w) - **Web Dashboards (portal)** — [Ch. 21 §Other web dashboards](/docs/cloud-portal-docs#other-web-dashboards) - **Web docs button** — [Ch. 17 §Support and feedback](/docs/licensing#support-and-feedback) - **webportal/d// path** — [Ch. 21 §Terms](/docs/cloud-portal-docs#webportaldid-path) - **WebSocket** — [Ch. 6 §Traffic Analyzer](/docs/network-tools#traffic-analyzer) - **WebSocket tunnel (portal)** — [Ch. 21 §What is the Cloud Portal?](/docs/cloud-portal-docs#what-is-the-cloud-portal) - **Widget** — [Ch. 15 §Plugin vs widget](/docs/plugins#plugin-vs-widget) | [Ch. 19 §W](/docs/glossary#w) - **Widget Palette (retired)** — Replaced by **Add panel**. [Ch. 16 §Add any panel](/docs/workspaces#add-any-panel) - **Widget Health Dashboard** — [Ch. 15 §Widget Health Dashboard](/docs/plugins#widget-health-dashboard) - **Widget Permissions** — [Ch. 15 §Permissions are real](/docs/plugins#permissions-are-real) - **Win key (on-screen)** — [Ch. 22 §The mobile shortcut bar](/docs/input-devices#the-mobile-shortcut-bar) - **Window (tear-off)** — [Ch. 16 §Tear off into a new window](/docs/workspaces#tear-off-windows) - **Windows management** — [Ch. 12 §Windows management](/docs/sysadmin#windows-management) - **Windows quirks** — [Ch. 20 §Windows](/docs/quick-reference#windows) - **Windows Services** — [Ch. 12 §Windows management](/docs/sysadmin#windows-management) - **Windows Updates** — [Ch. 12 §Windows management](/docs/sysadmin#windows-management) - **WinRM** — [Ch. 12 §WinRM](/docs/sysadmin#winrm) | [Ch. 19 §W](/docs/glossary#w) - **Wiring (Hierarchy Builder)** — [Ch. 9 §Wiring data flow](/docs/hierarchy-builder#wiring-data-flow) - **Workbench** — [Ch. 16 — Workspaces and Layouts](/docs/workspaces) - **Workflow (AI)** — [Ch. 8 §AI Workflows](/docs/ai-assistant#ai-workflows) | [Ch. 19 §W](/docs/glossary#w) - **Workspace list** — Toolbar named layouts. [Ch. 16 §Save named layouts](/docs/workspaces#save-named-layouts) | [Ch. 3 §Workspace](/docs/file-browser#workspace) - **Workspace vs layout** — The toolbar **Workspace** list is your named layouts. [Ch. 16 §Save named layouts](/docs/workspaces#save-named-layouts) - **WRITE confirmations (LCOT, DB)** — [Ch. 4 §WRITE sub-groups](/docs/lcot#write-sub-groups) | [Ch. 11 §WRITE confirmations](/docs/databases#write-confirmations) - **WSL (Windows Subsystem for Linux)** — [Ch. 2 §"I do not have an SSH server"](/docs/ssh-devices#i-do-not-have-an-ssh-server--setup-paths) ## X - **X11 forwarding** — [Ch. 13 §SSH](/docs/settings-themes#ssh) - **XML (config / export)** — [Ch. 13 §General](/docs/settings-themes#general) - **XSS / HTML-escape in exports** — [Ch. 18 §Symptom-first lookup](/docs/troubleshooting#symptom-first-lookup) - **xterm-256color (terminal type)** — [Ch. 13 §SSH](/docs/settings-themes#ssh) ## Y - **YAML (workflows, ansible, k8s)** — [Ch. 8 §AI Workflows](/docs/ai-assistant#ai-workflows) | [Ch. 12 §Configuration management](/docs/sysadmin#configuration-management) - **YubiKey (key passphrase)** — [Ch. 2 §Keys vs passwords](/docs/ssh-devices#keys-vs-passwords) ## Z - **Zoom (Hierarchy Builder canvas)** — [Ch. 9 §Window layout](/docs/hierarchy-builder#window-layout) | [Ch. 19 §Z](/docs/glossary#z) - **Zoom (User Guide viewer)** — `Ctrl+=` / `Ctrl+-` / `Ctrl+0` — see Ch. 14 §Default shortcuts - **Zoom In/Out/Fit (Composer)** — [Ch. 21 §Web Hierarchy Composer](/docs/cloud-portal-docs#web-hierarchy-composer) - **Zsh (remote shell)** — [Ch. 2 §Anatomy of a connection tab](/docs/ssh-devices#anatomy-of-a-connection-tab) --- *Did not find the term you were looking for? Try **Ctrl+F** in the User Guide viewer, or open the [Glossary (Chapter 19)](/docs/glossary) for plain-language definitions.* --- # Getting Started Source: https://aidaide.app/docs/getting-started This chapter walks you through the very first minutes with AidaIDE — from launching the app to recognising every part of the main window. Read it once, then keep it open as a glossary while you explore. ## What this chapter assumes - AidaIDE is installed. If not, grab the installer from **aidaide.app** and run it. - You have not yet entered a master password or set anything up. If you have a license key, you can use it later — AidaIDE will launch without one. ## Launching AidaIDE Double-click the **AidaIDE** shortcut (or run `aidaide` from a terminal). The first thing you see is the **Smart Login** window — a navy panel about 460 × 600 px, centered on screen, with the `$_` chip logo at the top. The window is small, simple, and intentional: nothing else in the IDE will be visible until you authenticate. ## Unlocking the vault The login window has one job: unlock (or create) your **vault**. The vault is an encrypted file on disk that holds every secret AidaIDE knows about — SSH passwords, SSH key passphrases, API keys, database credentials, and the like. ### First time (new install) The status line reads **"Create Master Key"** and the button reads **Create**. 1. Type a master password. There is no recovery path — write it down somewhere safe. 2. Press **Enter** or click **Create**. 3. The vault is initialised, the splash plays, and the main window opens. ### Returning user The status line reads **"Vault Locked"** and the button reads **Unlock**. 1. Type your master password. 2. Press **Enter** or click **Unlock**. If you have genuinely forgotten the password, the small link under the password box — **Forgot password? Reset vault** — will wipe the salt and force you to create a new one. *Every secret previously stored in the vault is lost when you do this.* You will have to re-enter every SSH password and key passphrase. ### Soft-restart bypass If AidaIDE restarted itself (because the web admin pushed a soft-restart, or because you applied an update), the login window may not appear at all. That is by design — your session is restored automatically. Lock the vault manually from **File → Exit** if you want to force a password prompt next launch. ## Splash screen After a successful unlock, a 4-second splash plays before the main IDE appears: - **lite** (default) — a small centered panel: the `$_` tile draws itself in, the glyphs fade, the cursor blinks, then the tile collapses to a singularity. - **full** — full-screen with a cyan "code rain" of ~1,400 glyphs. Opt in by setting the environment variable `AIDA_SPLASH=full`. You can skip the splash entirely with `AIDA_SPLASH=off`. The brand palette during the splash is navy `#0B1620` with cyan `#4DE4E4`. ## What you see Once the splash clears, the main window has five named regions. Memorising these names makes the rest of the guide much easier. ``` ┌───────────────────────────────────────────────────────────────────┐ │ Menu bar: File Edit Tools AI Fleet Network Security ... │ ├───────────────────────────────────────────────────────────────────┤ │ Toolbar: [+] [≡] [🔍] | Fleet ⚡ | Scan Serial Dash OTA | ★ AI ...│ ├──────────┬─────────────────────────────────────┬──────────────────┤ │ │ │ │ │ Sidebar │ Notebook (tabs) │ LCOT panel │ │ (left) │ - Connection tabs (pinned left) │ (right) │ │ │ - Feature tabs (pinned right) │ │ │ │ │ │ ├──────────┴─────────────────────────────────────┴──────────────────┤ │ Status bar │ └───────────────────────────────────────────────────────────────────┘ ``` - **Menu bar** — the dropdowns at the top. - **Toolbar** — icon buttons under the menu bar. - **Sidebar (left)** — collapsible panels for Connections, Files, and AI chat. - **Notebook (center)** — the tab strip where every workspace lives. **Connection tabs** (one per SSH host) pin to the left, **feature tabs** (Fleet Manager, Security Scanner, etc.) pin to the right. - **LCOT panel (right)** — the **L**ocal **C**hain **o**f **T**hought one-click script library. Shows only when a connection tab is in front. See [Chapter 4](/docs/lcot). - **Status bar** — current file, cursor position, encoding, line endings. ## Menu bar The complete menu list. Each item is covered in its own chapter — this is the lookup table. - **File** — New Tab, project templates, Open File, Save, Recent submenus, Workspaces, **Connection Manager**, **Settings**, Experimental Features, **Keyboard Shortcuts…**, Exit. - **Edit** — Undo/Redo, Cut/Copy/Paste, **Find** (`Ctrl+F`), **Find in Files** (`Ctrl+Shift+F`), **Go to Line** (`Ctrl+G`). - **Tools** — Git submenu, **Protocol Wizard**, **Board Library Manager**, **Test Panel**, Device Monitoring submenu, **Plugins & Widgets** submenu, **Check for Core Updates**. - **AI** — Toggle AI Sidebar, **AI Chat**, **Claude Agent Manager**, **Agent Hierarchy Builder**, **Live Coding Agents**, **AI Agent Portal**, **Persona Portal**, **AI Workflows**, Toggle Inline Suggestions, Save/Load Chat Session. - **Fleet** — Fleet Manager, Deploy Lite, Discover Devices, Device Dashboard, OTA Update Manager, Web Dashboard. - **Network** — Port Scanner, Network Topology, Packet Capture, Traffic Analyzer, Network Diagnostics, Host Discovery, Service Detection; **Cameras** submenu. - **Security** — Security Scanner, CVE Scanner, Dependency Scanner, Secret Scanner, SAST Scanner, Threat Intel Feeds, IOC Database, PKI Manager, Certificate Inventory, IP Access Control, Compliance Assessment. - **Preview** — early-access groups: **Sysadmin**, **Database**, **Debug**. - **View** — Command Palette, Feature Browser, Open Project Folder, **Workbench** (Use the workbench shell, Classic layout), **Theme**, sidebar toggles. - **Help** — Welcome Guide, Setup Wizard, **Ask Macy** (interactive tour), About, Documentation, Check for Updates, **Enter License Key**, License Status, Bug Reports. ## Toolbar Left to right: 1. **New Tab** (`+`) — opens a connection tab. If you have at least one saved host it shows a chooser; otherwise opens Connection Manager. 2. **Connections** (`≡`) — opens **Connection Manager**. 3. **Features** (magnifier) — opens the **Feature Browser** (every feature tab grouped by category, with search). 4. **Fleet Manager** — opens the fleet management tab. 5. **Deploy ESP32** (`⚡` orange) — shortcut to Deploy Lite scoped to ESP32 targets. 6. **Scan / Serial / Dashboard / OTA Update** — monitoring shortcuts. 7. **AI Assistant** (`★` green) — opens Claude Agent Manager. 8. **Workspace** list and **Save** — your named layouts. **+ Panel** (`Ctrl+Shift+B`) opens Add panel. 9. **Git Branch** dropdown and **Git Push** (`↑`). 10. **Settings** (gear, far right). Every button has a tooltip; hover for a second to see its name and shortcut. ## First-run wizards The very first session may show one (or both) wizards. They are independent: ### Onboarding Wizard Fires when no saved connections exist *and* `config["onboarding_completed"]` is false. Seven steps: 1. **Welcome** — short description of what AidaIDE is. 2. **Theme** — pick a colour theme with live preview. 3. **AI Assistant Setup** — choose a provider (Anthropic Claude is recommended), paste an API key, set a skill level. Skipping is fine; you can do this later in **AI → Claude Agent Manager**. 4. **Editor Preferences** — font family and size. 5. **First Connection** — optional. Add one SSH host now or skip and use Connection Manager later. 6. **Navigation Guide** — quick tour of where things live. 7. **Keyboard Shortcuts** — printable reference of default bindings. ### Device Setup Wizard Fires when `~/.aidaide/first_run_complete` is missing. Six steps focused on hardware: 1. Welcome. 2. **Device Type** — pick from cards: Raspberry Pi, ESP32, Arduino, generic Linux. 3. **Connection Method** — SSH (most common), Serial, or mDNS auto-discovery. 4. **First Connection** — validate live. 5. (Optional) deploy a sample project to your device. 6. Success — you are ready to go. If you skip or close either wizard, AidaIDE remembers and will not re-prompt. To re-run either one, use **Help → Setup Wizard**. ## Onboarding & guided tours Help-menu tours you can replay at any time: - **Welcome Guide** — short overview of what each menu does. - **Setup Wizard** — re-runs the appropriate first-run wizard. - **Ask Macy (Interactive Guide)** — voice-narrated tour. Two flavours: - **General IDE tour** — every region of the main window. - **Hierarchy Builder tour** — 16 sections, covered in [Chapter 9](/docs/hierarchy-builder). Run it from inside the Hierarchy Builder tab. ## Exiting AidaIDE **File → Exit** (or close the window) locks the vault. Next launch you will need your master password again. From rc18, with the workbench shell on, the arrangement saves itself as you go — windows, splits, stacks, and floating windows — and comes back at the next start. SSH sessions do not reconnect by themselves. Save a named layout from the toolbar **Workspace** list when you want to switch setups. See [Chapter 16](/docs/workspaces). ## Terms & Setup ### Vault The encrypted store for all your secrets — SSH passwords, SSH key passphrases, API tokens, database credentials, license info. Backed by Fernet symmetric encryption derived from your master password plus a per-install salt. Lives on your machine; never transmitted anywhere. ### Master password The password you set on the Smart Login window. There is **no recovery path** — write it down. If you lose it, the **Forgot password? Reset vault** link nukes the vault and starts over. ### Splash The 4-second animated reveal between vault unlock and the main IDE. Cosmetic only; the IDE is loading in the background. Disable with the `AIDA_SPLASH=off` environment variable. ### Connection tab vs feature tab A **connection tab** is your workspace for one SSH host: terminal + file browser + editor + LCOT panel. A **feature tab** is a tool that does not belong to a single host: Fleet Manager, Security Scanner, Database Manager, AI Hierarchy Builder, etc. ### Feature Browser A searchable list of every feature tab grouped by category. Open it from the toolbar magnifier or **View → Feature Browser**. The fastest way to find a tool when you forget which menu it lives under. ### "I do not have an SSH server yet" You can launch AidaIDE without one, but most workflows assume at least one device you can SSH into. The quickest options: - **Local OpenSSH on Windows** — Settings → Apps → Optional Features → Add → **OpenSSH Server**. Start the **OpenSSH SSH Server** service. Connect AidaIDE to `localhost:22` with your Windows username. - **A Raspberry Pi** — Pi OS has SSH disabled by default since 2016. Enable it with `sudo raspi-config` → Interface Options → SSH → Enable, or by dropping an empty file named `ssh` (no extension) in the boot partition. - **A cloud VM** — DigitalOcean, AWS, Azure all give you a Linux VM with SSH enabled in minutes. - **WSL** — On Windows, `wsl --install` gives you a Linux environment that AidaIDE can SSH into via `localhost`. See [Chapter 2](/docs/ssh-devices) for the full add-host walkthrough. ### Where do my settings live? - Vault and salt: `%APPDATA%\AidaIDE\` on Windows, `~/Library/Application Support/AidaIDE/` on macOS, `~/.aidaide/` on Linux. - Named layouts: `~/.aidaide/layouts/`. Current arrangement: `~/.aidaide/workbench_layout.json`. - Hierarchy Builder drafts: `~/.aidaide/builder_drafts/`. - Logs (for bug reports): `~/.aidaide/logs/`. --- # SSH Devices and Connections Source: https://aidaide.app/docs/ssh-devices The primary workflow in AidaIDE is "open a connection tab, work on a remote device." This chapter walks you through getting that first tab open and keeping it organised as you accumulate hosts. ## What this chapter covers - Opening a new SSH connection from the toolbar or menu. - Using **Connection Manager** to add, edit, and group hosts. - Storing passwords, key files, and key passphrases in the vault. - The anatomy of a connection tab — what each pane does. - Common pitfalls: non-22 ports, key permissions, host-key changes. ## Opening a new connection There are four entry points and they all converge on the same dialog: 1. **Toolbar → New Tab** (`+`). If you have at least one saved host, you get a chooser dropdown; pick a host or click **Manage…** to open Connection Manager. 2. **File → New Tab** (`Ctrl+T`). 3. **File → Connection Manager** — full management UI. 4. **Toolbar → Connections** (`≡`) — same as the menu option. If this is the very first time, you have no saved hosts. Click **Manage…** or open **Connection Manager** directly. ## Connection Manager Connection Manager is the central registry of every host AidaIDE knows about. It has three columns: - **Left** — group tree (All, Production, Lab, etc.). Right-click to add or rename a group. - **Center** — table of hosts in the selected group with columns for Name, Host, Port, Username, Last Connected. - **Right** — editor for the currently selected host. ### Adding a host 1. Click **Add** (or **Add Host** in the toolbar of the dialog). 2. Fill in: - **Name** — a friendly label (e.g. `pi-lab-01`). - **Host** — IP address or DNS name. - **Port** — `22` is the default, **change it if your server listens elsewhere**. See [Ports and the port-22 trap](#ports-and-the-port-22-trap) below. - **Username** — Linux user on the remote box. - **Authentication** — password, key file, or both. 3. Click **Save**. Your secrets go into the vault immediately, encrypted under your master password. 4. Click **Connect** (or close the dialog and use **New Tab → your host**). ### Editing a host Select it on the right, change fields, click **Save**. AidaIDE re-encrypts any changed secret in place. ### Grouping hosts Drag a host between groups in the left tree, or right-click → Move to Group. Groups have no functional meaning beyond making the **New Tab** dropdown easier to navigate. ### Importing existing SSH config If you already have a `~/.ssh/config`, Connection Manager has an **Import…** button. It reads `Host`, `HostName`, `Port`, `User`, and `IdentityFile` directives and creates entries for each. Passwords and key passphrases still have to be entered manually — they are not in `~/.ssh/config`. ## Anatomy of a connection tab A connection tab is the per-host workspace. Once connected, the tab is divided into four regions (defaults shown; you can rearrange them): ``` ┌─────────────────────────────────────────────────────────┐ │ Top toolbar: file controls, run, terminal toggles │ ├──────────────────┬──────────────────────┬───────────────┤ │ File Browser │ Editor │ LCOT Panel │ │ - Remote tree │ - Tabs of opened │ READ ▶ │ │ - Local tree │ remote files │ WRITE ▶ │ │ │ - Syntax highlight │ │ ├──────────────────┴──────────────────────┤ │ │ Terminal (xterm-compatible, full PTY) │ │ │ $ _ │ │ └─────────────────────────────────────────┴───────────────┘ ``` - **File Browser (left)** — two trees stacked: the remote filesystem over SFTP and your local filesystem. Drag-and-drop between them. - **Editor (center, top)** — syntax-highlighted text editor with tabs for every file you have open on this host. See [Chapter 3](/docs/file-browser) for full editor details. - **Terminal (center, bottom)** — full PTY into the remote shell. Resizes with the pane. - **LCOT Panel (right)** — one-click READ/WRITE scripts targeted at this connection. See [Chapter 4](/docs/lcot). - **Intel Panel** — context info about the host (uptime, OS, IP). Toggle with the panel button on the top toolbar. The tab title is the host name (or `name@host` if multiple sessions to the same host are open). A red dot next to the tab name means the connection is down. A spinner means it is reconnecting. ## Authentication ### Password Type it in once when adding the host. It is stored in the vault and re-supplied on every connection. ### Key file 1. Pick the private key from your filesystem (`~/.ssh/id_ed25519`, `~/.ssh/id_rsa`, etc.). 2. If the key is passphrase-protected, AidaIDE prompts for the passphrase once and stores it in the vault. 3. The public key must already be installed on the remote box in `~/.ssh/authorized_keys`. AidaIDE will not push it for you. (See [Setting up your first SSH key pair](#setting-up-your-first-ssh-key-pair) below.) ### Both / fallback You can store both a key and a password. If the key fails (wrong key, host does not accept it), AidaIDE falls back to the password silently. ### Keys vs passwords For anything beyond local lab use, prefer keys. They are stronger, do not transit the wire on every login, and play nicely with `sudo`. Passwords are easier to set up the first time and are fine for a single Raspberry Pi on your bench. ## Ports and the port-22 trap AidaIDE saves a custom port the moment you set one in Connection Manager, but several places in the codebase have historically hardcoded `22`. If a connection fails with "Connection refused" on a non-default port: 1. Re-open the host in Connection Manager and verify **Port** is correct. 2. Check **Connection Method** (some scan-style tools probe port 22 regardless). 3. Try `ssh -p user@host` from your terminal as a sanity check. The intended probe order in AidaIDE is `device.ssh_port → device.port → 22`. If you suspect your custom port is being ignored anywhere, file a bug from **Help → Report a Bug** and attach the connection log — that is a known recurring trap. ## Common operations ### Run a command quickly - Click in the terminal pane and type it. The terminal is a real PTY, not a wrapper. - Or use **LCOT** for one-click commands (e.g. *Disk Usage*, *List Services*). ### Edit a remote file 1. In the remote File Browser tree, double-click the file. 2. It opens in the editor with the path prefixed by the host name. 3. Save with `Ctrl+S`. AidaIDE writes back over SFTP. **Save will not fall back to a local file if SFTP fails** — you will see an error dialog. This is intentional to prevent silent wrong-filesystem data loss. ### Drag a local file to the remote 1. In the local File Browser tree, click and drag the file onto a folder in the remote tree. 2. AidaIDE uploads it via SFTP. A progress notification appears in the status bar. ### Reconnect after the connection drops The tab shows a red dot and a **Reconnect** button. Click it. If the host is genuinely gone, the reconnect button stays and the terminal pane is preserved (so you do not lose what was on screen). ### Open multiple sessions to the same host **New Tab → same host → New Session**. Each session is independent — they do not share the working directory, environment, or terminal scrollback. ## Recent connections **File → Recent Connections** lists the last 10 hosts you connected to with one-click reconnect. The list survives across launches. ## Terms & Setup ### SSH (Secure Shell) An encrypted protocol for logging into another machine and running commands. AidaIDE speaks SSH (and SFTP, which rides on top of SSH) using a Python implementation, so you do not need a separate `ssh` client installed. ### SFTP SSH File Transfer Protocol. Lets AidaIDE read and write files on the remote box without opening a shell. The remote file browser and the editor's save mechanism both use SFTP. ### Host key The remote server's identity fingerprint. The first time you connect, AidaIDE asks you to trust it. If a host key changes on a subsequent connection (e.g. the server was reinstalled), AidaIDE refuses to connect and shows the old vs. new fingerprint. This is a security feature, not a bug — verify with the server admin before clicking **Accept New Key**. ### Public key vs private key The **private** key stays on your machine. The **public** key (one short line ending in your email or username) goes on the remote server in `~/.ssh/authorized_keys`. Anyone with the public key can verify a signature made with the private key, but cannot forge one. ### "I do not have an SSH server" — setup paths **Windows local (for testing AidaIDE itself):** 1. Settings → Apps → Optional Features → Add → **OpenSSH Server**. 2. Open *Services* (`services.msc`), find **OpenSSH SSH Server**, set it to **Automatic** and click **Start**. 3. Allow port 22 in Windows Firewall (a popup may appear; click Allow). 4. Connect AidaIDE to `localhost:22` with your Windows username. **Raspberry Pi (Pi OS):** 1. Insert the SD card on your PC. In the `boot` partition, create an empty file named `ssh` (no extension). When the Pi boots it will enable SSH. 2. *Or* on the running Pi, `sudo raspi-config` → Interface Options → SSH → Enable. 3. Default username on Pi OS is whatever you set in Imager (or `pi` on older images). 4. Connect AidaIDE to the Pi's IP, port 22. **Linux server / cloud VM:** - The provider (DigitalOcean, AWS, GCP, Azure) usually delivers an Ubuntu/Debian VM with SSH enabled and key-only authentication preconfigured. They give you a key file and an IP — feed both into Connection Manager. **WSL on Windows (no extra box):** 1. `wsl --install` in PowerShell as admin. Reboot. 2. Inside WSL, `sudo apt install openssh-server`, `sudo systemctl enable --now ssh`, set a password with `passwd`. 3. Find WSL's IP with `ip addr` (eth0). Connect AidaIDE there. Note: WSL2's IP changes on every Windows reboot. ### Setting up your first SSH key pair If your remote box requires keys (or you simply want to use them), here is the shortest path: 1. **Generate a key on your local machine:** - Windows PowerShell or macOS/Linux terminal: `ssh-keygen -t ed25519 -C "your_email@example.com"` - Accept the default path (`~/.ssh/id_ed25519`). - Set a passphrase (recommended). AidaIDE will store it in the vault so you only type it once. 2. **Copy the public key to the server:** - Easiest: `ssh-copy-id user@host` (works on macOS/Linux/WSL). - On Windows without `ssh-copy-id`: `type %USERPROFILE%\.ssh\id_ed25519.pub | ssh user@host "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"` - Or just paste the contents of `id_ed25519.pub` into `~/.ssh/authorized_keys` on the server by hand. 3. **Tell AidaIDE about the key:** In Connection Manager, set Authentication → Key File and point at the **private** key (no `.pub`). Connect. ### Key permissions errors If SSH refuses your key with a permissions complaint, on the remote server run: ``` chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys ``` On Windows, key file permissions are checked by OpenSSH. If you see a "WARNING: UNPROTECTED PRIVATE KEY FILE" error, right-click the key in Explorer → Properties → Security → Advanced → Disable inheritance and remove all users except your own account. ### Saved credential security Every secret stored in Connection Manager is encrypted with a multi-layer scheme (PBKDF2/Scrypt-derived keys, per-credential salts). Only your master password unlocks the chain. If you suspect compromise, **rotate the secret on the server** and update it in Connection Manager — there is no replay protection beyond the encryption itself. ### Recurring traps to know These bugs have shipped before and may resurface. If a connection behaves oddly, suspect them first: - **Hardcoded port 22** — even when Connection Manager has the right port. Symptom: "Connection refused" or "Connection timed out" on a non-22 port that you can clearly reach with the system `ssh`. - **Silent SFTP fallback to local `open()`** — fixed, but if a save appears to succeed but the remote file is unchanged, check that you are not editing the local mirror. - **Decrypt failure returning empty string** — fixed; should now surface an error dialog. If you ever see a password field that mysteriously goes blank, file a bug. --- # File Browser and Editor Source: https://aidaide.app/docs/file-browser The editor is where you spend most of your time inside a connection tab. This chapter covers everything that lives in the center pane and its file-tree neighbours. ## Opening files and projects There are several routes to getting code on screen: - **File → Open File…** (`Ctrl+O`) — single file picker. Opens the file in the editor of the currently focused connection tab. If no connection is focused, opens in a local editor tab. - **File → Open Project Folder…** (`Ctrl+Shift+O`) — opens an entire directory as the workspace root. The local file browser tree jumps to that folder. - **File → New Project from Template…** (`Ctrl+Shift+N`) — scaffolds a starter project. Templates include Python script, Flask API, ESP32 firmware, Raspberry Pi script, FastAPI service, etc. - **Double-click a file in the file browser** — opens it in the editor. Works for remote files too (over SFTP). - **Drag a file from your OS file manager onto the editor area** — opens it. The recently used items live under **File → Recent Files** (last 20). ## Local file browser The local tree shows your computer's filesystem. By default it is rooted at your home directory; **Open Project Folder** changes the root. Useful right-click items: - **New File / New Folder** — quickly scaffold next to an existing path. - **Rename**, **Duplicate**, **Delete** — usual file ops. Delete sends to the OS recycle bin/trash on supported platforms; otherwise prompts for hard delete. - **Open in OS Explorer / Finder** — reveals the file outside AidaIDE. - **Copy Path** — full absolute path to the clipboard. ## Remote file browser (SFTP) Inside a connection tab, the **Remote** tree shows the file system on the SSH host, fetched on demand via SFTP. The columns are Name, Size, Modified. Behaviour worth knowing: - Right-click an empty area to refresh. - Double-click a folder to expand; double-click a file to open it in the editor. - Right-click a file for **Run** (calls a sensible interpreter — `python` for `.py`, `bash` for `.sh`, `node` for `.js`, `cat`/`tail` for log-like files), **Rename**, **Delete**, **Download** (copies to local), **chmod +x** (adds execute), **Properties**. - Drag-and-drop between the local and remote trees uploads / downloads. - Permissions stick. Renaming or moving a file does not change its mode bits. If you delete a file by mistake, there is no remote trash. Be careful with **Delete** on the remote tree. ## The editor The editor pane has a tab strip at the top — one tab per open file. Files open in the same editor regardless of whether they live locally or on the remote host. ### Syntax highlighting Driven by file extension. Supported out of the box: Python, JavaScript/TypeScript, C/C++, Go, Rust, Java, HTML, CSS, Markdown, JSON, YAML, TOML, INI, Bash/Shell, PowerShell, SQL. New file types can be added via **Settings → Editor → Syntax**. If you save a file with a different extension (Save As… `.txt` → `.py`), the highlighter re-evaluates. If for any reason highlighting does not update, close and reopen the file — this is a known minor trap. ### Cursor and selection - Standard arrow / shift-arrow navigation. - `Ctrl+→` / `Ctrl+←` move by word. - `Home` / `End` jump to line start/end. Pressing `Home` twice jumps to column 1 vs. first non-whitespace, like most editors. - `Ctrl+A` selects the whole document. - Multi-cursor: `Alt+Click` adds a cursor at the click point. ### Split panes Open a second editor next to the first to compare files or edit two regions of the same file: - **Right-click an editor tab → Split Right** opens a copy in a side pane. - The active pane has a highlighted border. Click in a pane to focus it. - Each pane has its own cursor and scroll position; saves apply to the underlying file regardless of pane. ### Save and Save As - `Ctrl+S` — save the current file. If it is a remote file, the save goes over SFTP and **does not** silently fall back to local on failure. - **File → Save As…** — save under a new path. Updates the highlighter if the extension changed. - Files with unsaved changes show an asterisk in the tab title. - Closing an unsaved tab prompts to save first. ## Find and Find in Files Two related dialogs: - **Find** (`Ctrl+F`) — search inside the current file. Options: case-sensitive, whole word, regex. Replace with `Ctrl+H`. **Find next** is `F3` (or `Enter` in the find box). - **Find in Files** (`Ctrl+Shift+F`) — search across the project root (set by Open Project Folder). Results list groups by file; double-click a result to jump to the line. - **Go to Line** (`Ctrl+G`) — type a line number and jump. Accepts `42:10` syntax to put the cursor at column 10 of line 42. ## Running files The editor's top toolbar has a **Run** (`▶`) button. It runs the current file using a sensible interpreter: - `.py` → `python` on the host where the file lives. On a remote file it runs in the remote terminal; on a local file it spawns a process and pipes output to a Run panel. - `.sh` → `bash`. - `.js`, `.ts` → `node`. - `.go`, `.rs`, `.c`, `.cpp` → compile + run (where toolchains are present). - Log/data files (`.log`, `.json`, `.yaml`, `.txt`, `.md`) → opened with `cat`/`tail` so you can preview without an editor session. If the file type has no runner, the button is disabled and the tooltip explains why. ## Git integration **Tools → Git** holds: - **Git Manager** — list of repos AidaIDE knows about, branches, dirty status. Click a repo to drill into a sub-window with file diffs. - **Quick Push** — stages all, commits with a prompt for the message, pushes the current branch. - **Git Pull** — fetches and fast-forwards. - **Git Status** — equivalent of `git status` in a panel rather than a terminal. - **Diff Viewer** — side-by-side diff of working tree vs. HEAD. Also reachable from the toolbar Git button on the far right. - **Publish to GitHub** — wraps `gh repo create` if the `gh` CLI is installed. Otherwise prints instructions. Branch selector lives on the right side of the toolbar. The `↑` button next to it is **Push** for the current branch. ## Diff Viewer Three modes: - **Working vs HEAD** — current uncommitted changes. - **Two commits** — pick any two from a dropdown. - **Two files** — compare any two open editor tabs side by side. Useful when you have a remote and local copy of the same file. ## Editor features worth knowing - **Auto-save (optional)** — off by default. Toggle in **Settings → Editor → Save**. - **Format on save** — off by default. When on, calls the language's default formatter (`black` for Python, `prettier` for JS, etc.). - **Linting** — Python and JavaScript get inline lint warnings if `ruff`/`eslint` is on `PATH` of the host where the file lives. - **Bookmark a line** — `Ctrl+F2`. Jump between bookmarks with `F2` / `Shift+F2`. - **Multi-line edit / column edit** — `Alt+Shift+drag` to make a column selection. ## Terms & Setup ### Workspace From rc18 the desktop window arrangement — panels, splits, stacks, and floating windows — saves itself and comes back after a restart. Named layouts are files you save from the toolbar **Workspace** list. SSH sessions do not reconnect by themselves. See [Chapter 16](/docs/workspaces). ### Local vs remote file A **local** file lives on your computer. A **remote** file lives on the SSH host of the currently focused connection tab. The editor handles both transparently; the tab title shows the host name in front of remote paths. ### Project root The directory passed to **Open Project Folder**. Find-in-Files and the local file tree both scope to this. Change it any time by opening a different folder. ### Run panel The bottom panel where script output appears when you click **Run** on a local file. Auto-scrolls. Right-click for **Clear** and **Save Output As…**. ### "I am editing but my changes do not seem to save" - Did you click in the correct pane? Saves apply to the focused editor. - For remote files, is the connection alive? A red dot on the connection tab means SFTP saves will fail. - If the file persists but reopens with old content, you may be looking at a stale local mirror. AidaIDE does not maintain mirrors on purpose — close the tab and re-open the file from the remote tree to verify. ### Encoding (UTF-8) All files are read and written as UTF-8 by default. If you open a legacy CP1252 / Latin-1 file, AidaIDE will show replacement characters (�). Use **File → Reopen With…** to pick a different encoding. Save back as UTF-8 when possible — mixed encodings cause real data loss across reload cycles. ### Line endings The status bar shows the current file's line ending mode (CRLF or LF). New files default to LF on all platforms. Change with **File → Line Endings** in the menu. ### "How do I open a file in two editors at once?" Right-click the tab → **Split Right**, then `Ctrl+P` (Open File) in the new pane to load the same file. Edits in one pane reflect in the other after each save. ### Project templates available - Python script (single file) - Flask web app - FastAPI service - ESP32 firmware (PlatformIO layout) - Arduino sketch - Raspberry Pi Python project - Node.js CLI - Static HTML site Pick one in **File → New Project from Template…** and AidaIDE scaffolds it into the folder you choose. --- # LCOT Panel Source: https://aidaide.app/docs/lcot LCOT stands for **L**ocal **C**hain **o**f **T**hought. In practice it is a categorised library of 800+ ready-made commands you can run on the currently focused connection with a single click. Think of it as a button-driven cheat sheet that knows what kind of device you are on. ## Where it lives The LCOT panel docks on the **right** side of every **connection tab**. It is **not** visible on feature tabs (Fleet Manager, etc.) because those tabs do not target a specific host. If you do not see it: 1. Make sure you are looking at a connection tab, not a feature tab. 2. **View → Toggle LCOT Panel** — re-enables it if you previously hid it. 3. Drag the splitter from the right edge of the window leftward if the panel has been collapsed to zero width. ## How it works LCOT is a tree. Top-level nodes are **zones**, then **categories**, then **subcategories**, then individual commands at the leaves. Click a leaf and the command runs in the connection's terminal pane immediately. ``` [R] READ Scripts ← green/neutral icons ├ System Snapshot │ ├ uptime │ ├ kernel │ └ ... ├ Network Diagnostics ├ Services └ Hardware Health [W] WRITE Scripts ← red leaves ├ Service Control ├ Package Management ├ Filesystem Ops ├ Network Config └ Embedded Quick Ops ``` ## READ vs WRITE zones Every command in LCOT is classified as either READ or WRITE. - **[R] READ Scripts** — safe, diagnostic. Reads state but does not modify it. Examples: `uptime`, `ps aux`, `df -h`, `ip addr`, `systemctl list-units`. - **[W] WRITE Scripts** — modifies state. Examples: package install, service restart, firewall rule, GPIO write, reboot. **WRITE leaves are coloured red.** Clicking one always pops up a confirmation dialog showing the exact command before it runs. You have to click **Confirm** explicitly. This is intentional — it prevents the "I meant to ping, I rebooted production" class of accident. The classification is part of the metadata, not a per-user setting. You cannot turn off the WRITE confirmation prompt by accident. ## Command categories The built-in library is organised by domain. Most users only see the categories relevant to the kind of device they are connected to, but everything is available everywhere: - **Network Utilities** — ping, traceroute, dig, nmap, ip, ss, netstat, tcpdump, iperf. - **Built-in / Linux** — basic Linux ops (file listings, processes, users, journalctl). - **Containers** — Docker (`docker ps`, image listings, prune), Docker Compose, basic Kubernetes. - **Databases** — MySQL, PostgreSQL, MongoDB, Redis client commands. - **IoT** — common Pi/ESP32/Jetson commands (GPIO, I²C, SPI scans, temp/voltage probes). - **Development** — git, build/run idioms for various toolchains. - **Monitoring** — system / network / logging probes. - **PLC (Industrial)** — Modbus, Ethernet/IP, S7, OPC UA snippets. - **Manufacturer-specific** — Cisco IOS, Juniper Junos, Ubiquiti EdgeOS/UniFi, MikroTik RouterOS, Fortinet, Palo Alto PAN-OS, Netgate pfSense, Arista. - **Bluetooth** — discovery, pairing, GATT probes. The full count is north of 800 commands today. Searching is the way to find a specific one. ## Sysadmin Quick Toolkit A curated set of 62 commands across 9 sub-groups designed for the "fix it in 30 seconds" sysadmin loop. Lives under its own **Quick Toolkit** category. Half the sub-groups are READ-tagged, half WRITE-tagged: ### READ sub-groups 1. **System Snapshot** — uptime, kernel, last logins, who, top CPU/MEM, ports, disk usage, big files. 2. **Network Diagnostics** — IP + routes, DNS resolvers, gateway ping, public IP, dig, nc port check. 3. **Services** — systemctl listings. 4. **Hardware Health** — temp/power/sensors. ### WRITE sub-groups 5. **Service Control** — start/stop/restart/enable systemd units. 6. **Package Management** — apt/yum/dnf install, upgrade, remove. 7. **Filesystem Ops** — mkdir, chmod, chown, rm patterns. 8. **Network Config** — ip route, iptables/ufw rules, restart networking. 9. **Embedded Quick Ops** — reboot, dmesg clear, GPIO writes. ## Searching The search box at the top of the LCOT panel filters the tree as you type. Search matches against the command name, description, and tags. Press `Esc` to clear. ## Running a command 1. Find the command in the tree (or by search). 2. Click the leaf. For READ commands the terminal runs it immediately. For WRITE commands you get a confirmation dialog with the full text — read it, then click **Confirm**. 3. Output appears in the terminal pane of the connection tab. Scroll buffer is preserved. Many commands include `{placeholder}` slots — when you click them, AidaIDE prompts for the placeholder values first (e.g. *port* for an `nc -z host port` probe). Recently used values are remembered per command per host. ## Adding your own command Right-click anywhere in the LCOT tree → **Add Command…** opens **AddCommandDialog**: - **Name** — what the leaf will say in the tree. - **Description** — shown as tooltip. - **Category / Subcategory** — where it lives. Pick existing or type a new one. - **Command** — the actual text to run. Use `{placeholder}` for prompted variables. - **WRITE checkbox** — tick this if the command modifies state. The leaf will be red and confirmation will be required. - **Tags** — for search. Click **Save**. The command is added to your personal LCOT library at `~/.aidaide/lcot_user_commands.json` and survives across launches and across hosts (it shows up on every connection). ## Edit / delete a custom command Right-click the custom leaf → **Edit** or **Delete**. Built-in commands are read-only; you cannot edit them, but you can hide them via **Settings → Editor → LCOT → Hidden Commands**. ## Per-device command sets LCOT can show different categories depending on the connected host: - A Raspberry Pi tab gets the IoT and Linux categories highlighted. - A Cisco router tab puts manufacturer-specific Cisco IOS commands at the top. - A Windows-via-WinRM tab swaps out Linux commands for PowerShell equivalents. This is driven by host detection on first connect. Override it from **Connection Manager → host → Type** if AidaIDE guesses wrong. ## Keyboard navigation - Tab into the LCOT tree. - Arrow keys navigate. **Enter** runs the focused leaf (with confirmation if WRITE). - `Ctrl+F` (when LCOT panel is focused) jumps into the search box. ## Terms & Setup ### Why "Chain of Thought"? The original intent of LCOT was to give the AI assistant a list of vetted commands to suggest, so the AI's reasoning steps were grounded in real, runnable building blocks. The library outgrew its origin; today it is also a great human cheat sheet. ### "I clicked a WRITE command and nothing seems to have happened" Look at the terminal pane. The confirmation dialog runs, then output goes there. If output is empty, the command may have succeeded silently (e.g. `systemctl restart nginx` prints nothing on success). ### "A command is failing" Most LCOT failures are environment, not bug: - Missing tool on the remote (`nmap` not installed → `nmap` commands fail). - Sudo not configured (`apt install` requires root). - Wrong device type (a Cisco IOS command on a Linux box). The terminal shows the actual error. Fix on the remote, retry. ### "I want a command across all my devices" LCOT is interactive — it runs one command on one host at a time. For "do X on every device in my fleet," use **Fleet Manager** (see [Chapter 5](/docs/fleet)). Fleet Manager can ingest the same command catalogue. ### Editing the user-command file by hand `~/.aidaide/lcot_user_commands.json` is a plain JSON file. Power users can edit it directly. AidaIDE re-reads it on next LCOT panel open. Schema: ```json { "commands": [ { "name": "Tail nginx error log", "description": "Live tail", "category": "Monitoring", "subcategory": "Web", "command": "tail -f /var/log/nginx/error.log", "write": false, "tags": ["nginx", "log", "web"] } ] } ``` **Always include `encoding="utf-8"` if you edit this in another tool** — non-ASCII command names corrupt silently on Windows otherwise. ### Hidden commands Hide built-in commands you never use via **Settings → Editor → LCOT → Hidden Commands**. Hidden commands are filtered from the tree but remain in the source library; un-hide any time. --- # Fleet Management Source: https://aidaide.app/docs/fleet When you have more than two or three devices, single-host workflows stop scaling. Fleet management is AidaIDE's answer to "I have 50 Raspberry Pis on a network and need to update all of them." The whole **Fleet** menu and the orange `⚡` toolbar button live here. The core SSH/SFTP workspace is **agentless**. Terminal, SFTP, and LCOT need only standard SSH/SFTP on the remote host — no on-device agent is required for a normal session. **Deploy Lite** is optional and additive: a Fleet menu that installs an on-device agent (**agent name TBD**) for fleet OTA and health. We don’t sell “AidaIDE Lite” as a separate product. ## What this chapter covers - The **Fleet Command Center** — central registry of every fleet device. The device panel is a full device page. - **Edit Device** — a device password. Leave it blank to keep the stored password. Clearing it uses `clear_password`. The audit line `DEVICE_LOGIN_SET` never carries the password. - Devices marked **Camera** — listed and viewable on the **Cameras** screen (`from_fleet`, `device_id`, never a password). Removing one says to change its category. - **Wi-Fi Surveys...** — on a site's Fleet-tab right-click menu. Phone **Send to PC** files surveys under the site. The desktop Wi-Fi Survey window covers bands, overlap, four heatmaps, site spectrum, and CSV. Six routes under `/api/fleet/sites//wifi-surveys`. - **Fleet Map** — towers and devices on a map. Open it from **Wireless → Fleet Map (towers + devices)...**, the Fleet Manager toolbar **Fleet Map**, or the **Fleet Map** workbench tab. OSM device pins, USGS 3DEP terrain and line of sight, RF coverage, and LiDAR canopy when available. On the desktop map, **Offline…** downloads the area on screen for offline use. - **Deploy Lite** — optional Fleet menu that installs an on-device agent (agent name TBD) or a custom payload. Not an AidaIDE Lite SKU, and not required for agentless SSH/SFTP. - **Discover Devices** — scan a subnet for new candidates to add. - **Device Dashboard** — status grid of everything in your fleet. - **OTA Update Manager** — sign and roll out over-the-air firmware updates to devices that have the optional fleet agent. - **Serial Monitor**, **PLC Monitor**, **Protocol Wizard**, **Board Library Manager**, **Test Panel** — supporting feature tabs. - **Web Dashboard** — browser pages from the built-in web server (default port 5001), including `/fleet/map` and the device **Router/Firewall** tab. Router and switch reads and router actions sign in with the device's own password, falling back to the site's sign-in. A refused login answers 502 with `needs_login`. ## Fleet Manager This tab is the **Fleet Command Center**. Open it from **Fleet → Fleet Manager** or the **Fleet Manager** toolbar button. The same toolbar has **Fleet Map**, covered in the next section. The tab has three regions: ``` ┌────────────────────────────────────────────────────────────────┐ │ Toolbar: Add Device | Import CSV | Bulk Action | Refresh │ ├──────────────────┬─────────────────────────────────────────────┤ │ Group tree │ Device table (Name, IP, OS, Status, Last) │ │ All │ ───────────────────────────────────────── │ │ ├ Production │ pi-01 10.0.0.11 Pi OS ●online │ │ ├ Lab │ pi-02 10.0.0.12 Pi OS ○offline │ │ └ Edge │ esp32-A 10.0.0.40 FreeRTOS ●online │ │ │ │ │ ├─────────────────────────────────────────────┤ │ │ Device panel (full device page) │ │ │ ~550 px default; drag the left edge │ └──────────────────┴─────────────────────────────────────────────┘ ``` ### Adding a device 1. Click **Add Device**. Fill in Name, IP, SSH port, username, credential reference (pulls from the Connection Manager vault), device type (Pi / ESP32 / generic Linux / Windows / network gear). 2. Click **Save**. AidaIDE attempts a connection on save and marks it online/offline. ### Importing in bulk **Import CSV** accepts a file with columns `name,host,port,username,type`. The credentials are not in the CSV — link them after import. ### Groups Drag devices between groups. Bulk actions (next section) scope to the selected group. ### Bulk actions Select multiple devices in the table (Shift+click or Ctrl+click), then **Bulk Action**: - **Run Command** — runs the same shell command on every selected device in parallel. Output is collected per-device. This uses agentless SSH. - **Deploy Payload** — pushes a file or directory. - **Update optional fleet agent** — bumps the optional on-device agent (agent name TBD) on every selected device to the version on disk. The bulk-action label in the app is **Update aida-lite**. That label is the implementation name, not an AidaIDE Lite SKU. - **Restart** — `sudo reboot`. - **Shutdown** — `sudo shutdown -h now`. All bulk actions show a confirmation with the device count before running. ### Device panel The device panel is a full device page. The default width is about 550 px. Drag the left edge to resize it. It shows what AidaIDE has fetched about the device — uptime, kernel, CPU/MEM, disk free, last error in journal. Refresh with the small `↻` icon. Behind the scenes this calls `_fetch_specs` and `_refresh_status` over SSH; both use the device's configured SSH port. Specs over SSH do not require the optional fleet agent. ### Edit Device **Edit Device** takes a device password. Leave it blank to keep the stored password. Clearing it uses `clear_password`. The audit line `DEVICE_LOGIN_SET` never carries the password. ### Camera devices Devices marked **Camera** are listed and viewable on the **Cameras** screen (`from_fleet`, `device_id`, never a password). Removing one says to change its category. ### Cards view **Cards** view draws one canvas per section. **Manage**, or a double-click, opens the device panel. The tab paints before the deferred load finishes. ### Wi-Fi Surveys A site's Fleet-tab right-click menu includes **Wi-Fi Surveys...**. Phone **Send to PC** files surveys under the site. The desktop Wi-Fi Survey window covers bands, overlap, four heatmaps, site spectrum, and CSV. Six routes live under `/api/fleet/sites//wifi-surveys`. ## Fleet Map **Fleet Map** plots towers and fleet devices. Open it from any of these entry points — the names match the desktop app: - Menubar: **Wireless → Fleet Map (towers + devices)...** - Fleet Manager toolbar: **Fleet Map** - Workbench opener and notebook tab: **Fleet Map** The tab title and label are **Fleet Map**. ### OSM device pins The default basemap is OpenStreetMap. Fleet devices are pinned where AidaIDE has a location: a GPS fix, a location you set by hand, or the wireless-cache location. ### USGS 3DEP terrain and line of sight Switch the basemap to **Terrain** (USGS 3DEP / The National Map). **Line of Sight** opens a profile between two points and classifies the path as **CLEAR**, **GRAZING**, or **BLOCKED**. ### RF coverage and address check **Coverage** turns the RF coverage heatmap on or off. The toolbar control is labeled **Coverage: On/Off**. Address and serviceability dialogs on the map: - **Compute coverage** - **Find an address** - **Find + check service** - **Can we serve here?** ### LiDAR canopy when available The line-of-sight **Canopy** control uses real tree heights from USGS 3DEP point clouds (EPT) when that coverage exists for the path. When point-cloud coverage is not available, canopy heights are left out and the profile still runs on terrain. The map does not fill in a tree layer that the survey did not provide. ### Offline areas (desktop Fleet Map) **Offline…** on the desktop Fleet Map toolbar, or a right-click **Download this area for offline…**, saves the area on screen for offline use. The dialog shows a tile count and a size estimate in MB. When the area is more than about 12,000 tiles, AidaIDE asks you to confirm before it downloads. This download is on the desktop **Fleet Map** only. It is not on the browser map at `/fleet/map`. ## Deploy Lite Open from **Fleet → Deploy Lite** or the orange `⚡` **Deploy ESP32** toolbar button. We don’t sell “AidaIDE Lite” as a separate product. Deploy Lite is a Fleet menu that installs an on-device agent (agent name TBD). That install is an **optional** on-device agent, or a custom payload. It is additive for fleet OTA and health. The core SSH/SFTP workspace stays agentless and does not need this agent. Steps: 1. Select the target device(s) from the same group tree as the Fleet Command Center. 2. Pick **What to deploy**: - **Optional fleet agent** (default; agent name TBD). The picker label in the app is **aida-lite agent**. That string is the implementation name, not a separate SKU. - **Custom payload** — point at a local file or folder. 3. **Connection method** — SSH (Linux/Pi) or Serial (ESP32, microcontrollers via USB). 4. Click **Deploy**. Progress is per-device in a log panel. For ESP32, Deploy Lite drives `esptool.py` under the hood. You need a USB-connected device showing up as a COM port (Windows) or `/dev/tty.usbserial*` (macOS) or `/dev/ttyUSB*` (Linux). For SSH targets, the payload is copied via SFTP into `/opt/aida-lite/` and a systemd unit is installed and enabled. `/opt/aida-lite/` is an on-disk path, not a product name. ## Discover Devices Open from **Fleet → Discover Devices**. Scans the subnet for devices that respond to known protocols: - ICMP (ping sweep). - mDNS / Bonjour service announcements. - SSH banner grab on port 22. - Common embedded ports (ESP-IDF web, Pi-hole, etc.). Found devices appear in a results table. Tick the ones you want to add and click **Add to Fleet** — they pre-fill the Add Device dialog. You can scope the scan to a CIDR range (default: your machine's local subnet) and set per-protocol toggles. ## Device Dashboard Open from **Fleet → Device Dashboard** (or **Tools → Device Monitoring → Device Dashboard**). A real-time grid of cards, one per device, showing: - Online indicator (green dot pulsing, or red). - CPU and memory usage bars. - Last command run. - Quick actions: Open Terminal, Open Files, Restart. Click a card to open a connection tab for that device. Card refresh interval is configurable in Settings → Network → Polling. ## OTA Update Manager Deep dive: **[OTA Updates](/docs/ota-updates)** (sign, canary, history, keys). Open from **Fleet → OTA Update Manager** or **Tools → Device Monitoring → OTA Update Manager**, or the red **OTA Update** toolbar button. OTA pushes a signed payload to fleet devices. The optional fleet agent (agent name TBD) applies it on devices where that agent is installed. Agentless SSH/SFTP does not apply OTA and does not need the agent. ### Publishing an update 1. Click **New Release**. 2. Drag the build artefact (e.g. a `.zip`, `.tar.gz`, ESP32 firmware `.bin`) into the drop zone. 3. AidaIDE signs the artefact with your OTA private key and generates a manifest. The expected upload URL is `updates.aidaide.app` (the planned endpoint). 4. Choose roll-out scope — All / Group / Selected devices. 5. Optionally stage as **Canary** — 10% of selected first, watch metrics, then promote. 6. Click **Publish**. Devices running the optional fleet agent poll the manifest at the configured interval (default 5 minutes). When they see a newer version targeted at their group, they download, verify the signature, and apply. ### OTA history The Fleet Command Center device panel has an **OTA history** subtab — what version the device is on, what version it came from, and when it last applied. ### Signing keys The OTA signing keypair is generated on first OTA Manager launch and stored in the vault. To rotate, **OTA Update Manager → Settings → Rotate Signing Key**. Old releases remain verifiable as long as the old public key is still on devices; new releases require the new key to be deployed first. ## Serial Monitor Open from **Tools → Device Monitoring → Serial Monitor**. A serial console for COM-port-attached devices (ESP32, Arduino, USB-to-UART debugs). - **Port** dropdown — auto-populated with available COM ports. - **Baud** — 9600 / 115200 / 921600 are presets; you can type any number. - **Line ending** — None / CR / LF / CR+LF. - **Echo local** — see what you type before it goes out. Send commands with the input box at the bottom. Output streams to the main pane. Save the buffer with **Save Log…**. ## PLC Monitor For industrial users. Open from **Tools → Device Monitoring → PLC Monitor**. Connects to PLCs over **Modbus TCP/RTU**, **Ethernet/IP** (Allen-Bradley), **Siemens S7**, and **OPC UA**. Lets you read holding registers, coils, tags, and write back where allowed. WRITE operations on PLCs are gated by a confirmation prompt (same pattern as LCOT WRITE scripts) — these can run motors and open valves. ## Protocol Wizard **Tools → Protocol Wizard** (`Ctrl+Shift+W`). A 4-step guided dialog that builds connection code for a given protocol against a given device library. Picks a protocol (HTTP, MQTT, CoAP, Modbus, OPC UA, BLE, etc.), a target board, an interaction (read sensor / send command / subscribe topic), and emits ready-to-run code into a new editor tab. ## Board Library Manager **Tools → Board Library Manager**. Browse and install board support packages. Each entry has board name, vendor, supported protocols, GPIO pin map, and a "Install Library" button which downloads stubs and example sketches into your project root. ## Test Panel **Tools → Test Panel**. Runs hardware-in-the-loop test suites against a connected device. Comes with starter tests for Pi GPIO, I²C/SPI, ESP32 Wi-Fi, and serial loopback. **Related: Hardware Lab (virtual HIL).** Fleet Test Panel runs hardware-in-the-loop **test suites against a connected device**. It is not the marketing Hardware Lab workspace (virtual board, timeline scenarios, Bench, Run on Device, Record). See [Hardware Lab](/docs/hardware-lab) and the citation-ready definition [What is Hardware Lab?](/guides/hardware-lab). ## Web Dashboard **Fleet → Web Dashboard**. AidaIDE auto-starts the built-in web server when you launch the app. **Fleet → Web Dashboard** opens the browser at [http://localhost:5001/fleet](http://localhost:5001/fleet), or at that same path on the configured web port. The default port stays **5001**. ### Browser map (`/fleet/map`) These tools are on the **web** map in the browser, at `/fleet/map`. They are separate from the desktop **Fleet Map** tab earlier in this chapter. - Line of sight over USGS 3DEP. - Coverage heatmaps. - An address or spot check: **can we serve it?** - Mast heights, and **Measure** from LiDAR. ### Router/Firewall (`/fleet/device`) The device page at `/fleet/device` has a **Router/Firewall** tab. - **RouterOS** — AidaIDE shows a plan, then applies it only after you type a confirmation. - **EdgeOS** — read-only. Router and switch reads, and router actions, sign in with the device's own password, falling back to the site's sign-in. A refused login answers 502 with `needs_login`. ## Terms & Setup ### "I don't have a device yet" You can exercise the Fleet Command Center end-to-end before any real hardware arrives. Normal SSH practice stays agentless; Deploy Lite below is only for the optional fleet agent. - **Bundled simulator.** **Tools → Protocol Wizard → Simulated Device** spins up a stand-in for the optional fleet agent (agent name TBD) that registers with the Fleet Command Center the way a real Pi would. Use it to walk the Add → Discover → Deploy Lite → OTA flow before you have a board on the desk. - **A virtual Linux box.** Any local Linux VM (VirtualBox, VMware, QEMU, WSL2, Multipass) will accept the optional fleet agent. From the VM, run the one-liner shown in **Fleet → Deploy Lite** and it appears in your fleet within a few seconds. SSH into the VM still works with no agent installed. - **A free Raspberry Pi OS image in QEMU.** Download the latest Raspberry Pi OS Lite image (the Raspberry Pi OS image name, not an AidaIDE product), boot it with `qemu-system-aarch64`, SSH in, then run the Deploy Lite one-liner only if you want the optional fleet agent. Same flow as a physical Pi. - **Just the AidaIDE host itself.** As a quick smoke test, use Deploy Lite to install the optional fleet agent on your AidaIDE workstation. It registers as `localhost` and lets you exercise grouping, tagging, and OTA without leaving your desk. When you do have hardware, see [Ch. 2 — SSH Devices §"I do not have an SSH server" — setup paths](/docs/ssh-devices#i-do-not-have-an-ssh-server--setup-paths) for getting sshd running on it, then return here for **Add Device** or **Discover Devices**. Agentless SSH is enough until you want fleet OTA or health from the optional agent. ### aida-lite On-disk and service name of the **optional fleet agent** (agent display name TBD). It is not a product called AidaIDE Lite, and the core SSH/SFTP workspace does not require it. When installed, it reports specs and health back to the Fleet Command Center and applies OTA updates. Paths on the device — not SKUs — include `/opt/aida-lite/` and the systemd unit `aida-lite` (`journalctl -u aida-lite`). ### Fleet vs Connection Manager **Connection Manager** is the registry of interactive SSH sessions you open by hand. **Fleet Command Center** is the registry of devices you want to manage in bulk. The two overlap — a device can be in both — and credentials are shared via the same vault, so adding a device in Fleet automatically gives you a Connection Manager entry too. Those SSH sessions are agentless. ### "Discover Devices" found nothing - Confirm your CIDR scope matches the LAN your devices are on. - Some routers block mDNS or ICMP across VLANs. - Some ESP32 firmwares do not advertise via mDNS. Try a SSID-scan instead: **Tools → Protocol Wizard → BLE/Wi-Fi**. ### "OTA Update succeeded but the device did not change" - Check the optional fleet agent's logs. Where Deploy Lite installed the systemd unit, the unit name is `aida-lite` (an implementation path, not a SKU): `journalctl -u aida-lite` on the device. - Verify the device is in the target group on the release. - Verify the device has the current signing public key — see **OTA Update Manager → Devices → Key Status**. ### "Deploy Lite for ESP32 cannot find my device" - The device must be in **bootloader mode** for esptool to flash. Hold BOOT, tap RST, release BOOT. - The USB cable must support data (not charge-only). - On Windows, install the CP210x or CH340 driver matching your dev board. ### "Industrial PLC: how do I find my register addresses?" Vendor docs. AidaIDE's PLC Monitor shows the canonical Modbus register layout (40001-49999 holding registers, 30001-39999 input registers, etc.) and lets you probe. Mismatched addresses = silent zeros. Always cross-check the PLC's own programming software. --- # Network Tools Source: https://aidaide.app/docs/network-tools The **Network** menu collects every tool for looking at networks, traffic, and hosts. Camera-related items are split into their own submenu and have their own chapter ([Chapter 10](/docs/cameras)). ## At a glance | Tab | Menu path | What it does | | --- | --- | --- | | Port Scanner | Network → Port Scanner | TCP/UDP port sweeps | | Network Topology | Network → Network Topology | Live graph of hosts and links | | Packet Capture | Network → Packet Capture | tcpdump-style capture and live decode | | Traffic Analyzer | Network → Traffic Analyzer | Per-host traffic stats over time | | Network Diagnostics | Network → Network Diagnostics | One-page ping/traceroute/dig dashboard | | Host Discovery | Network → Host Discovery | LAN sweep with OS-fingerprinting | | Service Detection | Network → Service Detection | Service+version banners on found hosts | Every Network tab is a **feature tab** (pinned right of the connection tabs). They do not need a connection tab open. ## Port Scanner Open from **Network → Port Scanner**. The classic feature: type a host (or CIDR), tick **TCP** / **UDP**, pick a port range, click **Scan**. Results stream into a table with columns Host, Port, Protocol, State, Service. Options worth knowing: - **Quick / Common / All** — quick scans top 100 ports, common scans top 1000, all scans 1-65535. The first two are seconds; the last is minutes. - **Concurrency** — default 200. Lower if your network kit drops packets under load. - **Save Results…** — exports CSV or JSON. Right-click a result row to: - Open a connection tab to that host on that port. - Send the host to Host Discovery for OS fingerprinting. - Copy the host:port. The scanner does **not** spoof or send malicious payloads. It is a TCP `connect()` scan plus optional UDP probes — entirely friendly traffic. Even so, do not scan networks you do not own or have written permission to. ## Network Topology Open from **Network → Network Topology**. Builds a live graph of devices it can see on your LAN by ARP-scanning, mDNS-scanning, and walking SNMP if community strings are set. - **Nodes** are devices. Colour codes: green = responsive, yellow = stale, red = unreachable. - **Edges** are inferred links (ARP neighbour, SNMP `lldpRemTable`, MAC-to-port). - **Layout** — Force-directed (default), Hierarchical (root at your gateway), Radial. Click a node to see its details panel — MAC, OS guess, open ports if Port Scanner has visited. The topology tab spawns a background scanner thread. Closing the tab kills the thread (and reopening it restarts the scan from scratch). ## Packet Capture Open from **Network → Packet Capture**. A friendly tcpdump in a window: - **Interface** dropdown — picks the NIC. - **Filter** — BPF syntax (`tcp port 80`, `host 10.0.0.5`, etc.). Hints below the field. - **Start / Stop** buttons. - Live packet list, with per-packet decode (Ethernet → IP → TCP/UDP → payload) on click. Capture buffer is in-memory and capped at 100k packets by default (Settings → Network → Capture Buffer). **Save as .pcap** exports for Wireshark. Packet Capture needs admin/root to put the interface in promiscuous mode. On Windows this means launching AidaIDE elevated; on Linux either run elevated or grant `CAP_NET_RAW` to the Python interpreter. ## Traffic Analyzer Open from **Network → Traffic Analyzer**. Watches the same NIC over time and aggregates by host pair: - Top talkers (sender / receiver / total). - Per-host bandwidth chart. - Per-protocol breakdown. - Top destination ports. You set the rolling window (1 min / 5 min / 15 min / 1 hr). Data is in-memory only — closing the tab loses it. **Export…** writes a CSV. ## Network Diagnostics Open from **Network → Network Diagnostics**. A one-page diagnostic panel for "is the internet on?" type questions: - **Ping target** — default 8.8.8.8. Customisable. - **DNS test** — resolves a configurable domain through your current resolver. - **Traceroute** — to the same target. - **Gateway test** — pings your default gateway. - **Public IP** — fetches your apparent public IP. - **MTU probe** — finds the largest packet size that survives end-to-end. Each test is one button; results show in line below. Useful for handing the panel to a non-technical user so they can run the diagnostics and screenshot the result. ## Host Discovery Open from **Network → Host Discovery**. A more thorough version of "what is on this LAN?": 1. Enter a CIDR or single host. 2. AidaIDE pings, ARP-resolves, and (optionally) attempts OS fingerprinting via TCP/IP stack quirks. 3. Hits land in the results table. This tab has historically rendered fabricated/demo data when no real scan is running. If you see entries that look fake (e.g. all-zero MACs, suspiciously round vendor names), confirm by running a fresh scan and watching for the spinner. Demo data is now clearly labelled, but bear it in mind if you see anything weird. ## Service Detection Open from **Network → Service Detection**. For each known host (from Host Discovery or a list you supply), opens common ports and grabs the service banner. Returns Service, Version, Vendor when it can. This is what you run after Host Discovery if you want to know *what* the open ports are running, not just *that* they are open. ## Common Network workflows ### "I need to find the IP of my new Pi on the LAN" 1. **Network → Host Discovery** with your LAN CIDR (e.g. `192.168.1.0/24`). 2. Look for a hostname containing `raspberrypi` or a MAC starting with Raspberry Pi's prefix. ### "Something is hogging my upload bandwidth" 1. **Network → Traffic Analyzer** on the relevant interface. 2. Watch **Top Talkers** for a minute. The biggest sender is your culprit. ### "I need a pcap for the network team" 1. **Network → Packet Capture**. 2. Apply a BPF filter to scope the capture (e.g. `host 10.0.0.5`). 3. Start, reproduce the issue, stop, **Save as .pcap**. ### "What ports are open on this server?" 1. **Network → Port Scanner**. 2. Enter the host, **Common** preset, both TCP and UDP, **Scan**. ## Terms & Setup ### "I don't have a network to scan" — practice without disturbing real hosts The Network tools are most fun on a real LAN, but you can try every tab on your own machine without touching anyone else's traffic. Pick the path that fits: - **Scan your own machine (`127.0.0.1` / `localhost`).** Port Scanner accepts loopback. Spin up a quick service first — `python -m http.server 8080` in any terminal makes port 8080 visible to the scanner. Open / scanned / closed states all behave the way they do on a remote host. Stop the server with `Ctrl+C` and rescan to see the state flip to closed. - **Scan your own subnet.** Your home LAN is fair game (you own it). Find your CIDR with **Network → Network Diagnostics → Local IP**, then point Host Discovery at e.g. `192.168.1.0/24`. You'll see your router, phones, printers, smart-home gadgets — everything that's awake. - **A virtual lab in VirtualBox / VMware / QEMU / Multipass.** Spin up two or three small Linux VMs on a host-only network. Each one is a real, isolated target — perfect for Host Discovery, Service Detection, and Packet Capture without risking real production traffic. `multipass launch --name lab1 && multipass launch --name lab2` (with [Multipass](https://multipass.run/)) is the fastest way on macOS/Win/Linux. - **A Docker-Compose toy network.** `docker compose up` a stack with an Nginx + a Redis + a Postgres container; every container is reachable from the host at `127.0.0.1:`. Port Scanner sweeps the loopback range and Traffic Analyzer watches `docker0` / `vEthernet (WSL)` to see t --- # Security Tools Source: https://aidaide.app/docs/security-tools The **Security** menu is the largest single menu in AidaIDE — eleven feature tabs for vulnerability hunting, dependency hygiene, certificate management, threat intelligence, and compliance. This chapter walks each one. ## Tab inventory | Tab | Purpose | | --- | --- | | Security Scanner | General host scanner — ports, CVEs, weak ciphers | | CVE Scanner | Match installed package versions against CVE feeds | | Dependency Scanner | Project-level dependency audit (pip, npm, etc.) | | Secret Scanner | Find leaked credentials in your code | | SAST Scanner | Static application security testing | | Threat Intel Feeds | Aggregated IOC + advisory feeds | | IOC Database | Searchable indicator-of-compromise store | | PKI Manager | Run your own CA | | Certificate Inventory | Catalogue and monitor TLS certs | | IP Access Control | Maintain allow/deny lists | | Compliance Assessment | Run CIS / NIST / PCI checklists | ## Security Scanner Open from **Security → Security Scanner**. The general-purpose vulnerability sweep. Aim it at a host or a CIDR: 1. Enter target (host, IP, or CIDR). 2. Tick scan modules: Ports, CVEs (cross-references service banners against CVE database), Weak SSH ciphers, TLS misconfigurations. 3. Click **Scan**. Results land in a tabbed report. Severity bands: Critical / High / Medium / Low / Info. Click any finding for context plus a suggested remediation. **Export Report…** writes HTML, PDF, or JSON. The HTML report HTML-escapes every user-supplied field (host name, banner text) — this was a real XSS trap historically. ## CVE Scanner Open from **Security → CVE Scanner**. Targets a single Linux host (the focused connection tab, or one you pick). Reads `dpkg -l` / `rpm -qa` / `pip freeze` / `npm ls` and matches against the NVD CVE feed (auto-updated daily). Findings include the CVE ID, base CVSS score, affected package + installed version + fixed version. **One-click "Apply fix"** runs the appropriate `apt upgrade ` or equivalent — counts as a WRITE operation and prompts for confirmation. ## Dependency Scanner Open from **Security → Dependency Scanner**. Different from CVE Scanner: this one scopes to a **project**, not a host. Reads `requirements.txt`, `package.json`, `Cargo.toml`, `go.mod`, `pom.xml`, etc. and checks each declared dependency against vulnerability databases (PyUp, npm Audit, RustSec, Snyk public feed). Output includes vulnerable transitives, upgrade paths, and (when known) the minor/patch version that fixes the issue. ## Secret Scanner Open from **Security → Secret Scanner**. Walks a project folder looking for things that look like leaked secrets — AWS keys, GitHub tokens, GCP service account files, SSH private keys, generic high-entropy strings. Configurable confidence threshold. Right-click a finding to **Mark False Positive** — the finding hash is added to a personal allow-list so you do not see it again. **Tip:** run this before pushing to GitHub. Once a secret is in your git history, even deleting the file does not remove it from past commits. ## SAST Scanner Open from **Security → SAST Scanner**. Static Application Security Testing — analyses your source for vulnerability patterns without running it. Plugs into language-specific scanners: - Python: `bandit` (+ semgrep rules). - JavaScript/TypeScript: `eslint-plugin-security`, semgrep rules. - Go: `gosec`. - Java: `spotbugs` + `find-sec-bugs`. - C/C++: `cppcheck`. The relevant tool must be installed where AidaIDE can find it (locally, or in PATH on the host you are scanning). Settings → Security → SAST tells AidaIDE where each binary lives. Findings are graded by severity and have remediation hints inline. ## Threat Intel Feeds Open from **Security → Threat Intel Feeds**. Subscribes to public + (configurable) private feeds: - Abuse.ch URLhaus / MalwareBazaar. - AlienVault OTX (needs an API key). - MISP — point at your org's instance. - CISA Known Exploited Vulnerabilities. Aggregated indicators (hashes, IPs, domains, URLs) flow into the IOC Database (next section). ## IOC Database Open from **Security → IOC Database**. Searchable store of indicators of compromise. Filter by type (file hash / domain / IP / email / URL), by feed source, by date range. Manually add custom IOCs from incident reports. Hooks into: - **Network Topology** — if a node has an IP listed in the IOC database, the node turns red and the right-side panel calls it out. - **Packet Capture** — packets sourcing from or destined to a flagged IP are highlighted. ## PKI Manager Open from **Security → PKI Manager**. Run your own certificate authority for lab and internal use. - **Create a root CA** — generates a 4096-bit RSA or P-384 EC key plus a self-signed cert. Stored in the vault. - **Create intermediates** — sign sub-CAs off the root. - **Issue server certs** — SANs, lifetime, key type all configurable. - **Revoke certs** — adds to a CRL. - **Export trust bundle** — for installing the root CA on client devices. Anything you issue here is **not trusted by browsers by default** — it is your private CA. Install the root cert manually on the boxes that need to trust it. ## Certificate Inventory Open from **Security → Certificate Inventory**. Catalogue of certs known to AidaIDE — those issued by your PKI plus any cert AidaIDE has seen in scans. - **Import** — paste PEM/DER or point at a file. The CN, SANs, issuer, validity, fingerprint, and key info are extracted. - **Scan host:port** — connects, grabs the cert, adds it to the inventory. - **Expiry alerts** — set a per-cert reminder; the toolbar will warn 30 days out by default. - **Compare two certs** — diff their subjects, SANs, key types. Note: historically this tab has had bugs that fabricated CN values from filenames or computed fingerprints over raw file bytes instead of DER. If something looks off (CN that matches a filename rather than the subject; fingerprints that change every time you reimport the same file), reimport from a fresh source and report a bug. ## IP Access Control Open from **Security → IP Access Control**. Maintains allow / deny lists. These lists can be: - Exported as iptables / nftables / Windows Firewall rule sets. - Pushed to fleet devices that use aida-lite's firewall plugin. - Consulted at scan time (so Port Scanner can skip known-bad ranges). You can import community blocklists (Spamhaus DROP, Firehol, etc.) on a schedule. ## Compliance Assessment Open from **Security → Compliance Assessment**. Run pre-built compliance checklists against a host: - CIS Linux Benchmark (Ubuntu, Debian, RHEL profiles). - CIS Windows Benchmark. - NIST 800-53 control families (selected). - PCI-DSS host-level controls. For each control, AidaIDE either probes via SSH commands or asks you to confirm manually. Output is a pass/fail dashboard plus an evidence trail you can export. The compliance log is supposed to record every audit event with full audit-trail integrity. Historically some demo paths logged no-ops; expect every check to leave a row in the audit log when run for real. ## Workflows ### "I want to know if my Pi has any known vulnerabilities" **Security → CVE Scanner**, target = your Pi's connection tab, **Scan**. Address Critical/High first. ### "Did I commit an AWS key by accident?" **Security → Secret Scanner**, target = your project folder. Mark false positives, fix the real ones, **rotate the keys** (do not just delete the file — the leak is in git history). ### "I need an internal TLS cert for my lab" 1. **Security → PKI Manager**. Create a root CA (one time). 2. **Issue Server Cert** with the SAN matching your service hostname. 3. Install the resulting bundle on the server. 4. Install the root CA cert on each client that needs to trust the new cert. ### "I need to prove our hosts meet CIS Level 1" **Security → Compliance Assessment → CIS Linux Benchmark → Level 1**. Run against each host. Export the report. ## Terms & Setup ### CVE Common Vulnerabilities and Exposures. A globally unique ID for a specific bug — e.g. `CVE-2024-12345`. The CVE feed is hosted by NIST; AidaIDE mirrors a recent copy and refreshes daily. ### CVSS Common Vulnerability Scoring System. A 0.0–10.0 score for severity. AidaIDE shows the **base** score in scan results. ### IOC Indicator of Compromise. A piece of evidence that something bad has happened — a malicious file hash, a phishing URL, a C2 IP. Useful for detection ("alert if we ever see this IP again") and triage ("is the file the user downloaded known-bad?"). ### CA, Root CA, Intermediate A **Certificate Authority** signs certificates. The **root CA** is self-signed; **intermediates** are signed by the root and used to issue end-entity certs. Browsers ship with a list of public root CAs that they trust; private CAs (like the one PKI Manager creates) have to be installed manually on every device that needs to trust them. ### SAST vs DAST **SAST** = Static. Reads source code without running it. **DAST** = Dynamic. Hits a running app from the outside. AidaIDE includes SAST out of the box. DAST coverage is via Security Scanner (TLS/port checks) and external tools. ### "I scanned myself and got no results" - Scanners need either an SSH connection (for CVE Scanner / Compliance) or a project folder (for Dependency / Secret / SAST). If you launched them with no target, they bail silently. - Some scanners need a binary on PATH (`bandit`, `gosec`, etc.) — see Settings → Security → SAST. ### "Report says I have 47 vulnerabilities, but most are Low" That is expected. A normal Linux install has dozens of Low-severity findings (informational, theoretical, or already mitigated upstream). Focus on Critical/High first. The report's **Risk Score** is a weighted total — driving that down is the goal. ### "Certificate Inventory shows my cert's CN as something weird" A historical bug in `_import_cert` derived the CN from the filename and computed the fingerprint over raw file bytes instead of the parsed DER. Reimport from a freshly downloaded PEM and verify against `openssl x509 -in cert.pem -noout -subject -fingerprint -sha256`. File a bug if it still misreports. ### Where the audit log lives `~/.aidaide/audit.log`. Append-only. Each compliance check, PKI issuance, OTA publish, and bulk fleet action writes a row with timestamp + actor + action + target. Treat it as evidence; do not edit it by hand. --- # AI Assistant and Sidebar Source: https://aidaide.app/docs/ai-assistant AidaIDE has two distinct ways to use AI: a **sidebar** that lives next to your code for casual back-and-forth, and a set of **AI feature tabs** for managing more complex multi-agent workflows. This chapter covers the everyday AI tools. The visual canvas for building agent pipelines is in [Chapter 9](/docs/hierarchy-builder). ## AI sidebar vs AI tabs - **AI sidebar** — dockable panel on the left. Chat with the model, ask about the file you have open, get inline edit suggestions. One conversation at a time. - **AI feature tabs** — full notebook tabs for purpose-built workflows: Claude Agent Manager (model setup), AI Workflows (recipe runner), AI Agent Portal / Persona Portal, Live Coding Agents, Agent Hierarchy Builder. You can have both open. The sidebar is for "quick question," the tabs are for "this is its own task." Toggle the sidebar with **AI → Toggle AI Sidebar** (`Ctrl+Shift+I`). ## AI Chat (`Ctrl+Shift+A`) The simplest entry point. Opens the AI sidebar focused, with the chat composer at the bottom. Things it can do out of the box: - Answer general questions about your code if you have a file open and **Include current file** is ticked. - Edit the file on request — pops up a diff preview before applying. - Run shell commands on the focused connection if you grant permission per command. - Reference the file tree of your project if **Include workspace context** is on. The chat is stateful within a session. Sessions live until you close them or hit **New Chat**. ## Claude Agent Manager (`Ctrl+Shift+M`) Open from **AI → Claude Agent Manager** or the green **★ AI Assistant** toolbar button. The control panel for AI providers and agent presets: - **Providers** — Anthropic Claude (recommended), OpenAI, Azure OpenAI, local Ollama. Each has its own API key field; keys are stored in the vault. - **Model picker** — Claude Sonnet 4.6 / Opus 4.6 / Haiku 4.5 (or your provider's equivalents). Per-agent override possible. - **Agents** — named profiles with custom system prompts. The default "Pair Programmer" agent ships ready to use. Create your own for "Embedded mentor," "Security reviewer," etc. - **Test connection** — sends a one-token ping to verify the key. - **Usage** — token counters per agent, per day. Helpful for cost-tracking. You must have at least one provider configured for chat to work. The Onboarding Wizard prompts for this on first launch. ## Toggle Inline Suggestions **AI → Toggle Inline Suggestions**. When on, the editor shows greyed-out completion text after your cursor. Press `Tab` to accept, `Esc` to dismiss, keep typing to override. Off by default — turn it on once you have an API key configured and a model that is fast enough not to be annoying (Haiku is recommended for this use). If suggestions are slow or wrong, narrow them with **Settings → AI → Inline Suggestions → Context window**. ## AI Workflows Open from **AI → AI Workflows**. A recipe runner for AI tasks that touch your filesystem or connections. Each workflow is a YAML/JSON file describing: - Inputs (files, paths, parameters). - A series of AI calls (with prompts). - File-system and shell side effects. - Output validation. Built-in workflows include: - **Refactor file** — propose, diff, apply. - **Generate docstrings** — across a project. - **Convert script to systemd unit** — for the focused connection. - **Triage logs** — feed `journalctl` output, get a ranked list of issues. - **Translate API client** — Python to Go, Node to Python, etc. Click **New Workflow** to author your own. Saves to `~/.aidaide/workflows/`. ## AI Agent Portal Open from **AI → AI Agent Portal**. A chat-style UI where you talk to a single agent (one of the ones you defined in Claude Agent Manager). Differences from the AI sidebar: - Each agent has its own persistent history. - Agents can have tools attached (shell, file write, web fetch). Tool calls show inline. - Useful for long-running "I have an assistant who knows this project" workflows. ## Persona Portal Open from **AI → Persona Portal**. Similar to AI Agent Portal but oriented around **personas** — pre-shaped characters with personality, tone, and lane. Ships with personas like "Wes, the patient mentor," "Macy, the interactive guide," "Astrid, the security skeptic." You can create your own. Personas are agents plus narrative styling. Useful if you want the model to consistently sound a certain way (e.g. for documentation generation, for student-facing tutoring). ## Live Coding Agents (`Ctrl+Shift+J`) Open from **AI → Live Coding Agents**. An always-on "pair programmer over your shoulder" mode. Differences from chat: - The agent watches what you do (file opens, edits, runs) and offers suggestions proactively. - Suggestions appear as a non-modal toast in the bottom right. Click to expand, accept or dismiss. - You can pin instructions ("I am refactoring auth.py, ask before touching anything else"). Token usage is higher than chat. Live Coding is best for focused sessions, not all-day idle. ## Saving and loading sessions - **AI → Save Chat Session** (`Ctrl+Shift+Alt+S`) — writes the current sidebar conversation to disk. Pick a name. - **AI → Load Chat Session** (`Ctrl+Alt+L`) — pick from saved sessions. Saved sessions are JSON files in `~/.aidaide/chat_sessions/`. They include the model used, system prompt, every turn, and any attached files. You can share them with teammates or restore an interrupted thread. ## License gating Some AI features are gated behind paid tiers: - **AI Hierarchy** plan unlocks the Hierarchy Builder and the multi-agent runtime. - **AI Agents** (basic) covers Claude Agent Manager, AI sidebar, AI Chat, Inline Suggestions, Live Coding Agents, AI Workflows. If a feature is locked, the menu item is visible but greyed out, and clicking it pops a "Enter License Key" link → [Chapter 17](/docs/licensing). ## Tips - **Reference a file** — paste its path with `@` in the chat composer (`@src/main.py`). The model sees the whole file in context. - **Reference a line range** — `@src/main.py:42-58`. - **Stop a response** — press `Esc` while it streams. - **Branch a conversation** — right-click any message → **Branch from here**. Useful when an answer was almost right; rewind and try a different prompt. ## Terms & Setup ### API key A long random string from your AI provider. AidaIDE stores it in the vault. - **Anthropic Claude:** sign up at console.anthropic.com, create a key under **API Keys**. Paste into Claude Agent Manager → Anthropic → API Key. - **OpenAI:** platform.openai.com → API Keys → Create. Same flow. - **Azure OpenAI:** keys come from the Azure Portal; you also need the endpoint URL and the deployment name. All three go into the Azure provider config. - **Ollama (local):** install Ollama on your machine. Point AidaIDE at `http://localhost:11434`. No API key required. ### "I don't have an API key yet" — setup paths You can exercise the AI sidebar, AI Chat, AI Workflows, and the Hierarchy Builder before you pay any provider a cent. Pick the path that fits your situation: - **Free local models via Ollama (recommended for tinkering).** Install Ollama from [ollama.com/download](https://ollama.com/download) (Win/macOS/Linux). On first launch it listens at `http://localhost:11434`. Pull a small model: `ollama pull llama3.2` or `ollama pull qwen2.5-coder:7b`. In **Claude Agent Manager → Providers**, pick **Ollama**, leave the API key blank, set the host to `http://localhost:11434`, hit **Test Connection** — you should see a green tick. No keys, no spend, fully offline. Slower than cloud for big prompts but fine for editor inline suggestions and chat. See [Chapter 8 §Claude Agent Manager](#claude-agent-manager-ctrlshiftm). - **Anthropic Claude starting credits.** Sign up at [console.anthropic.com](https://console.anthropic.com) — new accounts receive a small starting credit (currently $5, may change) sufficient for hours of Haiku or Sonnet use. Create a key under **Settings → API Keys**, paste into Claude Agent Manager → Anthropic. The vault encrypts it at rest. - **OpenAI starter credit.** [platform.openai.com](https://platform.openai.com) — same flow, occasional new-account credits. Lower-cost models (`gpt-4o-mini`) make a s --- # AI Hierarchy Builder Source: https://aidaide.app/docs/hierarchy-builder The Hierarchy Builder is the visual canvas where you compose multi-agent pipelines. Drag chips, wire ports, click Run, watch data flow. This chapter walks the UI region by region. > **Prerequisites — read these first if you're brand new:** > - **An AI provider.** AI Agent modules call a live model. You need a working key (or a local Ollama instance) before **Run** does anything interesting. See [Ch. 8 §"I don't have an API key yet" — setup paths](/docs/ai-assistant#i-dont-have-an-api-key-yet--setup-paths). > - **The AI Hierarchy plan.** The visual canvas is licence-gated separately from the API key. Open from **AI → Agent Hierarchy Builder** (`Ctrl+Shift+H`); if it's greyed out, see [Ch. 17 — Activating your license](/docs/licensing#activating-your-license). > - **(Optional) Familiarity with the AI sidebar.** If everything in [Ch. 8](/docs/ai-assistant) is new to you, skim that chapter first — the building blocks here assume you've already chatted with a model once. ## Mental model The builder is shaped like a circuit board. - **SoC** — System on Chip. The outermost container. One canvas = one SoC. - **IC** — Integrated Circuit. A chip you drop inside a SoC. Encapsulates a sub-workflow. - **Module** — Leaf component inside an IC: a Supervisor, a Worker, an AI Agent, a Filter, a protocol node. Data flows through **ports**. The SoC has SoC-level In/Out ports on its outer boundary. Each IC, when first placed, has IN-0 and OUT-0 ports. You wire them together with cyan signal lines. ``` ┌────────────────── SoC ────────────────────────┐ │ ●SoC In ──────────────────► ●SoC Out │ │ │ │ ┌──── IC: "Triage" ────┐ │ │ │ IN-0 ──► [filter] ──► [agent] ──► OUT-0 │ │ └──────────────────────┘ │ │ │ └────────────────────────────────────────────────┘ ``` When you double-click an IC you **drill in** — the canvas zooms into that IC and shows its modules. The path is shown as breadcrumbs at the top so you can walk back out. ## Window layout ``` ┌─────────────────────────────────────────────────────────────┐ │ Toolbar: Save | Load | Run | Pause | Stop | Trace | Theme │ ├──────────────┬──────────────────────────┬───────────────────┤ │ Library │ Canvas │ Properties │ │ ─ Search │ (zoom, pan, multi-tab) │ for selected │ │ ─ Categories │ │ node │ │ (AI, Proto,│ │ │ │ Filter,...)│ │ │ │ drag from │ │ │ │ library │ │ │ │ onto │ │ │ │ canvas │ │ │ ├──────────────┴──────────────────────────┤ │ │ Minimap │ │ └──────────────────────────────────────────┴───────────────────┘ ``` - **Library (left)** — searchable, collapsible sections. Drag a chip onto the canvas to place it. - **Canvas (center)** — the actual board. Multi-tab; you can have several SoCs open at once. - **Properties (right)** — settings for the selected node (model, prompt, parameters). - **Minimap (bottom-left of canvas)** — bird's-eye view; click-to-jump. ## Component library Top-level sections in the library sidebar: - **SoC** — outer containers. - **IC** — chip containers (drop into a SoC). - **Agent Modules** — Supervisor, Worker, Critic, Planner, Retriever, AI Agent (generic with custom prompt). - **Protocol Components** — HTTP request, MQTT publish/subscribe, WebSocket, SSE, Modbus query, OPC UA tag read. - **Data / Filter** — Filter, Splitter, Joiner, Map, Reduce, JSON path, Regex extract. - **IO** — File read/write, Database query, Stdout sink. Search by name. Drag onto the canvas to place. ## Wiring data flow 1. Hover over a port on the source chip — the port becomes a target. 2. Click and drag to a port on the destination chip. 3. Release. A cyan line connects the two. A few rules: - Output ports connect to input ports. Input → input or output → output are rejected. - You can branch one output to multiple inputs. - Joining many outputs into one input requires a **Joiner** module (the runtime picks one signal otherwise). - Click a wire and press `Delete` to remove it. In-flight wires (mid-drag) can be cancelled with `Esc`. ## Properties panel Click a node to populate the right-side panel. Common fields: - **Name** — human label. - **Description** — free-text, for documentation. - **Model** (on AI Agents) — which Claude/OpenAI model. - **System Prompt** — the agent's instructions. - **Tools** — checkboxes for shell, file, web, MCP servers. - **Retry / Timeout / Cost limit** — runtime guardrails. Changes save automatically when you click off the field. ## Running a pipeline The Execution Toolbar across the top of the canvas: - **Run (▶)** — starts the SignalFlowEngine. Signals flow from SoC In, through every wired chip, out SoC Out. - **Pause (⏸)** — stops new signals; in-flight modules finish. - **Stop (■)** — cancels everything immediately. - **Trace mode** — overlays per-message data on the wires as they fire. Slower; useful when debugging. A running pipeline shows pulsing cyan on active wires. Each module shows a status badge: idle / running / waiting / errored. Errors raise a non-modal toast at the bottom right with the module name and the exception. Click the toast to jump to that module on canvas and see the full trace in the properties panel. ## Autosave & crash recovery Every 30 seconds, the current SoC is autosaved to `~/.aidaide/builder_drafts/` with a timestamp. If AidaIDE crashes mid-edit, the next launch prompts you to restore the most recent draft. Manual save: **Save** in the toolbar. **Save As…** to give the file a permanent name. Pipelines you intend to keep should be saved under a name; drafts are auto-cleaned after 7 days. ## Pipeline & Teams The "Pipelines" dropdown above the canvas has: - **Create New** — scaffolds a fresh SoC with two-level ports (SoC In/Out plus a starter IC with IN-0/OUT-0). - **AI Army Team** — a starter team-style pipeline (supervisor + 3 workers + critic). - **Load Saved** — pick a previously saved SoC. The chip library is extensible via the **Marketplace** (Tools → Plugins & Widgets → Marketplace Store) — installed chips show up in the library after a **Refresh Library** click. A `<>` event makes this happen automatically when the marketplace finishes. ## Navigation and tools - **Zoom** — mouse wheel, or `Ctrl++` / `Ctrl+-`. Clamped at min/max per tier (you cannot zoom out of a SoC by scrolling). - **Pan** — middle-click drag, or hold space + drag. - **Drill in** — double-click an IC. Breadcrumbs at the top show the path. - **Walk out** — click a breadcrumb, or press `Esc` (when nothing else is focused). - **Minimap** — click anywhere in the minimap to pan the main view. - **Select multiple** — drag a rubber-band, or `Ctrl+click` individual nodes. - **Cut / Copy / Paste** — standard shortcuts. - **Delete** — selected nodes and incident wires. ## Visual themes The canvas honours the global AidaIDE theme. The brand defaults are navy `#0B1620` background and cyan `#4DE4E4` signals. Switch theme from **View → Theme** or the Hierarchy Builder toolbar's small palette icon. ## The guided tour **Help → Ask Macy → Hierarchy Builder Tour** opens a 16-section voice-narrated walkthrough that highlights each region in turn. Useful first-pass for new users. You can dismiss any step early with **Skip**. The 16 sections: 1. Welcome 2. Window Layout 3. Component Library 4. Canvas Workspace 5. Execution Toolbar 6. Agent Modules 7. Protocol Components 8. Wiring & Data Flow 9. Properties Panel 10. Control Panel 11. Pipeline & Teams 12. Advanced Features 13. Visual Theme 14. Navigation & Tools 15. Power User Features 16. Finish ## Worked example — "Triage support tickets" A minimal pipeline that demonstrates the workflow: 1. **Create New** — fresh SoC scaffolded with SoC In/Out and one starter IC. 2. Rename the IC to "Triage." 3. **Drill in** to the IC. 4. Drag from library: a **JSON path** filter, an **AI Agent**, a **Joiner**. 5. Wire: `IN-0 → JSON path (extract subject+body) → AI Agent (classify into [bug, feature_request, billing]) → Joiner → OUT-0`. 6. On the AI Agent, set Model = Sonnet, System Prompt = "Classify the message…". 7. **Walk out** of the IC. 8. Wire `SoC In → IC IN-0` and `IC OUT-0 → SoC Out`. 9. **Run**. The Properties panel of SoC In has a manual-trigger field — paste a ticket JSON, click **Send**, watch the signal pulse through to SoC Out where the classification appears. That is the whole shape. Pipelines that read from a Slack source, fan out to multiple workers, and write to a database are built the same way with more chips and more wires. ## Web Composer (browser version) A browser version of the Hierarchy Builder ships with the Cloud Portal. Open it from a device's web dashboard via the **Composer** button. It mirrors the desktop builder's modes (flat / IC / SoC / hierarchy) and shares its document format — drafts in `~/.aidaide/builder_drafts/` round-trip between the two. The web toolbar has **Zoom In / Out / Fit**, **Auto Layout**, **Auto Wire**, **Validate**, and **Run / Stop**. See [Ch. 21 §Web Hierarchy Composer](/docs/cloud-portal-docs#web-hierarchy-composer) for the full walkthrough and known parity gaps (animated trace, right-click menus, Macy tour are desktop-only as of 2026-05-29). ## Terms & Setup ### SignalFlowEngine The in-process runtime that walks the graph and executes modules. Each wired connection becomes a queue; each module is an async coroutine driven by `_chip_module_executor`. Runs in the AidaIDE process, no external orchestrator. ### Trace mode A run option that emits per-message snapshots into the canvas overlay. Adds overhead — turn off for benchmark runs. ### Drafts Autosave files in `~/.aidaide/builder_drafts/`. Auto-clean after 7 days. Drafts you want to keep should be **Save As**-ed into your own folder. ### "My wire will not connect" - Both endpoints must be ports. Hover until the port turns highlighted before clicking. - Direction matters: output → input. - One input usually accepts one wire (Joiner is the exception). ### "My pipeline runs but produces nothing" - Check the SoC's Out port. If the chain inside ends at an IC whose OUT-0 is not wired to SoC Out, nothing leaves. - Use **Trace mode** to see which wire stops carrying messages. ### "A module errors out repeatedly" - Properties → click the module → look at the **Last error** field. - For AI Agents: bad API key, rate limited, or the system prompt asks for a tool the age --- # Cameras Source: https://aidaide.app/docs/cameras AidaIDE includes a small suite of IP-camera tools — discovery, single-camera viewing, and grid wall views. Useful for lab/workshop monitoring, simple security setups, and dev/test against ONVIF cameras. ## Menu layout The camera tools live under **Network → Cameras**: - **Camera Manager** — list, configure, and connect to known cameras. - **Scan for Cameras** — ONVIF/RTSP discovery sweep of your LAN. - **Camera Grid Viewer** — a customisable wall of feeds (3 × 3 or N × M). - **Camera Feed Grid** — quick grid of all known cameras at once. ## Camera Manager Open from **Network → Cameras → Camera Manager**. Three regions, same shape as Fleet Manager: ``` ┌────────────────────────────────────────────────────┐ │ Toolbar: Add | Scan | Connect All | Save │ ├──────────┬─────────────────────────────────────────┤ │ Groups │ Camera table │ │ All │ Name IP Type Status │ │ ├ Lab │ front-door 10.0.0.31 ONVIF ●live │ │ └ Shop │ shop-cam2 10.0.0.32 RTSP ○off │ │ ├─────────────────────────────────────────┤ │ │ Detail panel — preview + settings │ └──────────┴─────────────────────────────────────────┘ ``` ### Adding a camera 1. Click **Add**. 2. Fill: - **Name** — friendly label. - **IP / host** — camera's address. - **Type** — ONVIF, RTSP, HTTP MJPEG, USB. - **Stream URL** — auto-filled for ONVIF, manual for the rest (e.g. `rtsp://user:pass@10.0.0.31:554/stream1`). - **Username / password** — credentials saved in the vault. 3. **Save**. AidaIDE pings the camera and a thumbnail appears in the detail panel if it can connect. ### Detail panel Per-camera config: stream URL, resolution, framerate, snapshot interval. **Snapshot now** grabs a still. **Live preview** opens the feed in a separate detail subtab. ## Scanning for cameras Open from **Network → Cameras → Scan for Cameras**. Probes the LAN for cameras using two methods: 1. **ONVIF WS-Discovery** — broadcasts a WS-Discovery probe; ONVIF cameras reply with their endpoint. 2. **RTSP banner grab** — connects to TCP 554 on each host in the scope and checks for an RTSP banner. Results table shows each discovered camera. Tick the ones you want and **Add to Manager** — pre-fills the Add Camera dialog. Some cameras require authentication before they will respond. If a candidate appears with no name/model, you may need to provide credentials and re-probe. ## Feed Grid vs Grid Viewer Two similar but distinct tabs: - **Camera Feed Grid** — auto-populated wall of every camera in Camera Manager. Best for a quick "are they all alive?" glance. - **Camera Grid Viewer** — manually arranged wall. You pick which cameras go where, set the grid size (2×2, 3×3, 4×3, custom), and AidaIDE remembers the layout. Both tabs: - Click any cell to expand to full-screen. - Right-click → **Snapshot** to grab a still. - Right-click → **Open in Browser** to view the raw stream URL. ## Workflows ### "I just installed an ONVIF camera and need to add it" 1. **Scan for Cameras**. Wait for results. 2. Find your camera in the list. Tick it. 3. **Add to Manager**. Fill in credentials. 4. The detail panel preview confirms the feed works. ### "I want a grid of 6 cameras on a second monitor" 1. Add all 6 to Camera Manager. 2. **Camera Grid Viewer** → set grid to 3×2. 3. Drag camera names into the cells. 4. **Save Layout**. 5. Drag the tab out of the main window onto your second monitor. AidaIDE remembers the placement. ### "RTSP feed will not connect" - Test the URL with VLC (`Media → Open Network Stream → rtsp://...`). If VLC fails, the camera is the problem. - Some cameras serve substreams at separate paths — try `stream1`, `stream2`, `Streaming/Channels/101`, `cam/realmonitor`. - Authentication: most RTSP cameras require credentials. Embed them in the URL or use the Camera Manager username/password fields. ## Performance Camera tabs run a decoder thread per visible feed. Eight or more concurrent 1080p H.264 feeds will use noticeable CPU. To lower load: - **Settings → Network → Cameras → Default Substream** = `low`. Most cameras have a sub-stream at lower resolution; AidaIDE will prefer it. - Reduce framerate per camera in its detail panel. - Use **Camera Manager** for monitoring (decodes only the focused camera) rather than the grids when CPU matters. ## Terms & Setup ### ONVIF Open Network Video Interface Forum — the SOAP-based standard for IP cameras. Lets you discover, configure, and stream from any compliant camera with one client. AidaIDE supports ONVIF Profile S (live streaming) and Profile T (advanced video). ### RTSP Real-Time Streaming Protocol. The transport most IP cameras actually use to deliver video, often discovered via ONVIF. ### Substream Many cameras encode two simultaneous video streams — a high-quality main stream and a lower-resolution sub-stream. Use the sub-stream for grid views to save CPU. ### "I do not have a camera" - USB webcams work — pick **Type = USB** in Add Camera. The dropdown lists available USB video devices. - Smartphone IP-camera apps (DroidCam, IP Webcam on Android, iCam on iOS) expose RTSP/HTTP MJPEG streams. Point AidaIDE at the URL the app gives you. - For testing without hardware, [FFmpeg can act as an RTSP server](https://trac.ffmpeg.org/wiki/StreamingGuide#Pointtopointstreaming): `ffmpeg -re -i file.mp4 -c copy -f rtsp rtsp://localhost:8554/test` then connect AidaIDE to `rtsp://localhost:8554/test`. ### Recording The current camera tabs are live-only. There is no built-in recorder. For continuous recording, point a separate NVR (Frigate, ZoneMinder, Shinobi) at your cameras and use AidaIDE for ad-hoc viewing. ### "The camera grid is laggy or stuttering" - Confirm the network path — wifi cameras at the edge of range will drop frames. - Switch to substream feeds. - Reduce framerate (most cameras default to 25-30 fps; 10 fps is fine for monitoring). - Close the tab when you are not actively looking at it; the decoder thread suspends. --- # Databases Source: https://aidaide.app/docs/databases The Database section gives you a basic admin UI for the four most common engines and a generic Query Editor for ad-hoc work. It lives in the **Preview → Database** submenu (some features may be marked Beta). ## Menu layout - **Database Manager** — central registry; pick a connection and drill in. - **MySQL Management** — per-engine tab with MySQL-specific tools. - **PostgreSQL Management** — same, for Postgres. - **MongoDB Management** — same, for Mongo. - **Redis Management** — same, for Redis. - **Query Editor** — multi-tab SQL workspace. - **DB Connection Manager** — saved connection registry. ## Database Manager Open from **Preview → Database → Database Manager**. The hub. Left panel lists saved connections by engine; click one to open it on the right with the engine-appropriate UI (table browser for SQL engines, key browser for Redis, collection browser for Mongo). Buttons across the top: - **New Connection** — adds a connection of any supported engine. - **Query** — opens the Query Editor pointed at the selected connection. - **Disconnect / Reconnect** — toggle the current connection. ## Saving connections **Preview → Database → DB Connection Manager** is the central registry. Each connection has: - **Name** — friendly label. - **Engine** — MySQL, PostgreSQL, MongoDB, Redis. - **Host / Port** — engine defaults (3306 / 5432 / 27017 / 6379) are pre-filled. Override as needed. - **Username / Password** — saved in the vault. - **Default database** — optional. - **TLS** — enable for hosted DBs that require it. ## Per-engine tabs ### MySQL Management Open from **Preview → Database → MySQL Management** or via Database Manager. - **Databases / Tables** tree. - **Structure** view — columns, types, indexes, foreign keys. - **Data** view — paged table editor. Inline edits write back as `UPDATE`. - **SQL** view — drop straight into the Query Editor scoped to this connection. - **Users & Privileges** — list current users, grant/revoke. WRITE operations require confirmation. - **Status** — `SHOW STATUS`, `SHOW PROCESSLIST`. ### PostgreSQL Management Equivalent to MySQL but with Postgres-specific extras: - Schemas separate from databases. - **Roles** in place of MySQL users. - **Extensions** browser — install/remove with confirmation. - `EXPLAIN ANALYZE` button on any SELECT in the data view. ### MongoDB Management NoSQL — different vocabulary: - **Databases → Collections → Documents** tree. - Document view in JSON. Edit inline; save with `Ctrl+S`. - **Indexes** subtab — create/drop. - **Aggregation** — pipeline builder with JSON stages. ### Redis Management Key-value: - Key browser, scoped by pattern (`user:*`, `session:*`). - Per-type editors: String, Hash, List, Set, ZSet, Stream. - TTL editor on every key. - **CLI** subtab — interactive Redis CLI in a pane. ## Query Editor Open from **Preview → Database → Query Editor** or from any per-engine tab. A multi-tab SQL workspace: - One tab = one query buffer. - Top of each tab: **Connection** dropdown (pick which saved DB), **Run** (`F5`), **Run Selection** (`F8`), **Explain**. - Results in a paged table at the bottom. - **Export Results…** writes CSV / JSON / Excel. Syntax highlighting honours the engine. Autocomplete suggests tables, columns, and keywords. Keyboard shortcuts (when the editor is focused): | Action | Shortcut | | --- | --- | | Run all | `F5` | | Run selection or current statement | `F8` | | Explain (analyzes plan) | `Shift+F5` | | New query tab | `Ctrl+T` | | Save query | `Ctrl+S` | | Save query as… | `Ctrl+Shift+S` | | Format SQL | `Ctrl+Shift+F` | Saved queries land in `~/.aidaide/sql/` by default. ## WRITE confirmations The same READ/WRITE classification used in LCOT applies here: - `SELECT` — runs immediately. - `INSERT / UPDATE / DELETE / DROP / TRUNCATE / ALTER / CREATE` — confirmation dialog showing the SQL and an estimated affected-row count (when AidaIDE can derive one from `EXPLAIN`). `Run Selection` (`F8`) runs only what is highlighted, useful when you have a destructive statement next to a SELECT and only want the SELECT. ## Workflows ### "I need to peek at production data without breaking anything" 1. Add a read-only DB user on the server. 2. **DB Connection Manager → New** with those credentials. 3. Open in **Query Editor**. The WRITE confirmations will fail anyway because of permissions, but the principle is "least privilege at the credential layer." ### "Quickly find a column across all tables" 1. **MySQL/PostgreSQL Management → connection → schema → Search…** (top-right magnifier). 2. Search matches table names, column names, and column comments. ### "Export a query result to my team" 1. Run the query in Query Editor. 2. **Export Results… → Excel** (or CSV). 3. The file lands wherever you point. UTF-8 encoded by default. ## Terms & Setup ### Connection vs database A **connection** is an authenticated session to a database server. A **database** (or schema, or namespace) is a logical container inside that server. One connection → many databases/schemas/collections. ### TLS Transport Layer Security. Encrypts traffic between AidaIDE and the database server. Required by most cloud-hosted DBs (RDS, Cloud SQL, Atlas, Upstash). Enable in the connection's TLS tab; provide CA cert if the server uses a private CA. ### "I do not have a database to play with" - **SQLite** — bundled with Python; create a file with `sqlite3 mydb.db`. AidaIDE's Database Manager will pick it up if you set Engine = SQLite (Beta — limited features). - **Docker** — `docker run -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql:8` gives you MySQL in 30 seconds. Add `postgres:16`, `mongo:7`, or `redis:7` for the others. - **Cloud free tiers** — PlanetScale (MySQL), Supabase (Postgres), MongoDB Atlas, Upstash (Redis) all have generous free tiers. ### "My password worked yesterday and not today" - Server-side password change is the usual cause. - Some hosted DBs rotate IPs and require allow-listing yours — check the provider's network policy. - Re-enter the password in DB Connection Manager — if the vault entry got corrupted, this fixes it. ### Performance tips - Use `Run Selection` for large scripts so you can step through. - The result grid pages 1,000 rows at a time by default — change in Settings → Database → Page Size. - Closing the per-engine tab closes its connection. For long-running scripts, prefer Query Editor (its connections persist). ### Privileges and safety WRITE confirmation is in the UI; it is not a substitute for proper DB user permissions. For anything connected to a production DB: - Use a read-only account in the connection if you only need to view. - Use a read-write account *only* in a dedicated connection labelled clearly. - Never paste production credentials into a connection named "dev." ### "The MongoDB Document editor will not save" - Documents are validated as JSON before save. A missing comma kills it. - Numeric IDs (`_id` set as int) get coerced. If you have `ObjectId(...)`, keep it in the `$oid` shorthand. - If you replace a doc, Mongo replaces the *whole* doc (not just changed fields). Use the **Update Fields** button for a partial update instead. --- # Sysadmin Tools Source: https://aidaide.app/docs/sysadmin The **Preview → Sysadmin** submenu collects everything aimed at IT operations — Windows management, patch management, configuration management, containers, monitoring, alerting, backup, and disaster recovery. The tools share a feature-tab layout and most can be driven against a single host or a fleet group. ## Menu layout ``` Preview └── Sysadmin ├── Windows Management ▶ │ ├── WinRM Client │ ├── Active Directory │ ├── Windows Services │ └── Windows Updates ├── Patch Manager ├── Patch Policies ├── Configuration Management ▶ │ ├── Ansible Runner │ ├── Desired State Configuration │ ├── Config Drift Detection │ └── Template Manager ├── Containers ▶ │ ├── Docker Manager │ ├── Docker Compose │ ├── Kubernetes Client │ └── Registry Client ├── Monitoring Dashboard ├── Alert Manager ├── Metrics Collector ├── Backup Manager └── Disaster Recovery ``` ## Windows management ### WinRM Client Open from **Preview → Sysadmin → Windows Management → WinRM Client**. Connects to Windows hosts via WinRM (HTTP 5985, HTTPS 5986). The remote box needs WinRM enabled — on the target, run `Enable-PSRemoting -Force` in an elevated PowerShell. Once connected, you get a PowerShell-like terminal. WinRM is the Windows analogue of SSH; commands run as the authenticated user. ### Active Directory **Preview → Sysadmin → Windows Management → Active Directory**. Browse and search AD objects: - Users — list, find, view memberOf, disable/enable (WRITE). - Groups — membership view, add/remove members (WRITE). - Computers — list, OS, last logon. - OUs — tree view. Needs an LDAP bind credential. AD ports: 389 LDAP, 636 LDAPS. Use LDAPS for anything beyond a lab. ### Windows Services **Preview → Sysadmin → Windows Management → Windows Services**. Equivalent of `services.msc` over WinRM. List services, start/stop/restart, change startup type. All WRITE actions confirm. ### Windows Updates **Preview → Sysadmin → Windows Management → Windows Updates**. Inventory of pending updates on a remote Windows host. Approve and install via `Install-WindowsUpdate` (requires the PSWindowsUpdate module on the target — install with `Install-Module PSWindowsUpdate`). ## Patch management ### Patch Manager **Preview → Sysadmin → Patch Manager**. Cross-platform patch inventory. Targets a host or a fleet group: - **Linux**: aggregates `apt list --upgradable` / `dnf check-update` / `yum check-update` output. - **Windows**: pulls pending updates via WinRM. - **Container hosts**: image vulnerability counts via Trivy if available. Per-host findings table: package, current, available, severity (security/normal). Bulk **Approve & Apply** runs the appropriate package manager command in parallel. ### Patch Policies **Preview → Sysadmin → Patch Policies**. Per-group rules: when to auto-approve (e.g. security-only auto-approve, normal patches require human approval), maintenance windows, reboot policy. Policies are JSON files in `~/.aidaide/patch_policies/`. Editable in the UI or directly. ## Configuration management ### Ansible Runner **Preview → Sysadmin → Configuration Management → Ansible Runner**. A friendly UI on top of `ansible-playbook`: - Pick or write a playbook (top pane). - Pick an inventory (or use Fleet group as inventory). - Variables (key=value list). - Run. Output streams below with per-task status. Failures highlighted. `ansible` and `ansible-playbook` must be installed locally; AidaIDE shells out to them. ### Desired State Configuration **Preview → Sysadmin → Configuration Management → Desired State Configuration**. For Windows: leverages PowerShell DSC. Pick a `.ps1` configuration, target hosts, push. Compliance results in a table. For Linux: a thin wrapper around chosen DSC-style tools (your install) — useful if your team standardised on something other than Ansible. ### Config Drift Detection **Preview → Sysadmin → Configuration Management → Config Drift Detection**. Captures a baseline snapshot of a host (selected config files, package set, service states) and periodically re-snapshots to detect drift. Drift summary highlights what changed and when. Default baseline paths: `/etc/`, `/usr/local/etc/`, plus per-service add-ons (nginx, postgres, etc.). Configurable. ### Template Manager **Preview → Sysadmin → Configuration Management → Template Manager**. Library of config templates (Jinja2) with per-host variable sets. Render → preview → push. ## Containers ### Docker Manager **Preview → Sysadmin → Containers → Docker Manager**. Docker desktop UI for a single host (local or remote): - **Containers** — list, start/stop, logs, exec. - **Images** — list, pull, build, prune. - **Volumes / Networks** — basic management. Connects via the Docker socket. For remote hosts, that means either Docker context (`docker context create`) or socket-over-SSH (the Docker Manager UI sets it up). ### Docker Compose **Preview → Sysadmin → Containers → Docker Compose**. Project-level UI: open a `docker-compose.yml`, get a graphical view of services and dependencies, up/down/restart per-service or all. ### Kubernetes Client **Preview → Sysadmin → Containers → Kubernetes Client**. Read-friendly kubectl-on-rails: - Namespace + resource tree. - Pods → describe / logs / exec. - Deployments → rolling restart. - Apply YAML from an editor pane. Uses your `~/.kube/config`. Context switcher at the top. ### Registry Client **Preview → Sysadmin → Containers → Registry Client**. Browse Docker registries (Docker Hub, GHCR, ECR, GCR, private). Search images, view tags, pull. Push requires login (Docker CLI must be configured on your machine). ## Monitoring & alerts ### Monitoring Dashboard **Preview → Sysadmin → Monitoring Dashboard**. A grid of host health cards (CPU, memory, disk, load, network). Each card pulls from aida-lite metrics if installed, else from on-demand SSH probes. Configurable refresh interval. Click a card to drill into a per-host metrics page with line charts. ### Metrics Collector **Preview → Sysadmin → Metrics Collector**. Configures what AidaIDE collects from each host: which metrics, what interval. Metrics are stored locally in a TSDB (`~/.aidaide/metrics.db`) and queried by Monitoring Dashboard. For larger setups, point AidaIDE at Prometheus or InfluxDB instead of using the local TSDB. ### Alert Manager **Preview → Sysadmin → Alert Manager**. Rules engine on top of collected metrics: - IF `cpu_load > 90% for 5 min` THEN webhook / email / Slack. - IF `disk_free < 10%` THEN email + open a Fleet Manager flag. Channels configured in **Settings → Network → Notifications**. Each rule has a per-channel routing. ## Backup & disaster recovery ### Backup Manager **Preview → Sysadmin → Backup Manager**. Per-host backup jobs: - **Source** — paths on the remote host. - **Destination** — local archive directory, S3-compatible bucket, or rsync target. - **Schedule** — one-shot, daily, weekly, custom cron. - **Retention** — keep N days / N copies. Jobs run on the AidaIDE host (your machine), pulling from remotes over SFTP or running remote `tar`/`rsync` as appropriate. ### Disaster Recovery **Preview → Sysadmin → Disaster Recovery**. Restoration side of Backup Manager. Pick a backup snapshot, pick a destination host, push the contents. Useful for "the SD card died, here is the replacement Pi, make it look like the old one." DR also documents your runbooks — a per-host page with notes, contact info, snapshot history. ## Workflows ### "Patch every Pi in the lab" 1. **Patch Manager**. 2. Target = Fleet group "Lab." 3. Filter to security updates only. 4. **Approve & Apply**. AidaIDE runs `apt upgrade ` per host in parallel. 5. Watch the per-host status table. ### "Drift hunt — what changed on prod-web-01 this week?" 1. **Config Drift Detection** → prod-web-01. 2. **Snapshot history** → last 7 days. 3. Click a diff row to see file-level changes. ### "Spin up a new microservice on my k8s cluster" 1. **Kubernetes Client → Apply YAML**. 2. Paste/import the Deployment + Service. 3. Apply. Watch pod status in the tree. ### "Set up nightly backups of /etc on every Pi" 1. **Backup Manager → New Job**. 2. Source = `/etc`, destination = local archive directory. 3. Schedule = daily at 03:00. 4. Retention = 30 days. 5. **Add** all Pis from the fleet group. ## Terms & Setup ### WinRM Windows Remote Management. The Microsoft protocol for running PowerShell on remote Windows boxes. Two ports — 5985 (HTTP, lab only) and 5986 (HTTPS). Disabled by default; enable with `Enable-PSRemoting -Force` on the target. ### LDAP / LDAPS Lightweight Directory Access Protocol. How you talk to Active Directory. LDAPS is LDAP-over-TLS — use it. ### DSC (Desired State Configuration) PowerShell's "make the system look like X" framework. Configurations are PowerShell scripts that compile to MOF files; nodes pull or push their configurations. ### Ansible A Python tool that runs YAML playbooks over SSH. AidaIDE wraps the CLI; the actual Ansible must be installed locally. ### Container vs image An **image** is a snapshot of a filesystem. A **container** is a running instance of an image. `docker pull` fetches an image; `docker run` creates a container from it. ### Kubernetes — quick orientation - **Pod** — one or more containers running together. - **Deployment** — declarative spec that maintains N pods. - **Service** — stable network endpoint in front of pods. - **Namespace** — logical partition for scoping. ### "I do not have any Windows boxes to manage" The Windows tabs are no-ops without targets. Skip them and use the Linux/container tools. ### "I do not have Ansible installed" Install: `pip install ansible` (or use your package manager). On Windows, use WSL — Ansible's control machine is Linux-only. ### Alert delivery setup - **Email** — SMTP creds in Settings → Network → Notifications → SMTP. - **Slack** — a webhook URL from your Slack workspace's "Incoming Webhooks" app. - **Generic webhook** — a URL AidaIDE will POST a JSON body to. Useful for routing into PagerDuty, Opsgenie, n8n. ### "My backup job hangs" - SFTP over slow links is the usual culprit. Use `rsync` with compression instead (set in the job's transport field). - Some files are unreadable by your SSH user. Check the error log; either skip them in the source spec or switch to a privileged user. --- # Settings, Themes, Preferences Source: https://aidaide.app/docs/settings-themes The **Settings** dialog is the single place where you configure how AidaIDE looks and behaves. Open with **File → Settings** (`Ctrl+,`) or the gear icon at the far right of the toolbar. ## Layout The Settings panel is a Toplevel window with categories down the left and the active category's controls on the right. Each category has its own "Reset to Defaults" link in the lower-right. ``` ┌─────────────────────────────────────────────────────────────┐ │ ┌──────────────┐ │ Active panel │ │ │ General │ │ ─ control │ │ │ Appearance ★ │ │ ─ control │ │ │ Workspace │ │ ─ control │ │ │ Editor │ │ ─ control │ │ │ SSH │ │ │ │ │ Security │ │ │ │ │ Network │ │ │ │ │ Plugins │ │ │ │ └──────────────┘ │ │ │ │ Reset this section to defaults │ └─────────────────────────────────────────────────────────────┘ ``` Changes save automatically when you click off a field. Closing the dialog never asks "save changes?" because everything is already saved. ## General - **Startup behaviour** — open with last workspace / open empty / show launcher. - **Confirm on exit** — toggle. - **Telemetry** — opt-in anonymous usage data. Off by default. - **Locale** — language and date format (en-US is the only fully translated locale at present). - **Working directory** — where AidaIDE's data dir lives (vault, logs, workspaces). Move with care; restart required. ## Appearance The heaviest section. ### Themes and appearance - **Theme** — drop-down of available colour themes. The brand defaults are **AidaIDE Dark** (navy + cyan) and **AidaIDE Light**. Add-on themes ship via plugins or live in `~/.aidaide/themes/`. - **Accent colour** — overrides cyan with another. Useful for branding a deployment. - **Font size (UI)** — base size in points. - **Window opacity** — 100% on by default; reduce for see-through windows on supported platforms. ### Layout - **Workbench shell** — **View → Workbench → Use the workbench shell**, on by default. Uncheck it and restart for the classic tabbed window. There is no Classic Tabs vs Grid setting. See [Chapter 16](/docs/workspaces). - **Side panel positions** — left / right / hidden for each panel (Files, AI, LCOT). - **Status bar** — visible / hidden. - **Tab bar style** — Top / Side. ### Animations - Toggle splash, toolbar hover effects, sidebar slide animations. All cosmetic; off if you find them distracting. ## Workspace **Settings → Workspace** lists your named layouts (rc18, desktop app): - **Open** — switch to a saved layout. Connections stay connected. - **Save current as...** — save the current arrangement under a name. - **Delete** — remove a named layout. The same list is the toolbar **Workspace** control and **Save**, and **View → Workbench**. Each layout is a file in `~/.aidaide/layouts/`. A layout that names a missing widget opens without it and says so. Layouts are not in the Marketplace. See [Chapter 16](/docs/workspaces). ## Editor ### Font and spacing - **Editor font family** — Consolas, JetBrains Mono, Fira Code, etc. (whatever is installed on your system). - **Editor font size**. - **Line spacing**. - **Tab size** — width of `\t` and indent. Default 4. - **Insert spaces** — convert Tab key to spaces. Default on. ### Behaviour - **Auto-save** — off / on save loss / every N seconds. - **Format on save** — runs the language formatter when you save. - **Highlight current line**, **Show line numbers**, **Show whitespace**, **Wrap long lines** — all toggles. - **Default encoding** — UTF-8 (do not change unless you know exactly why). - **Default line endings** — LF / CRLF / platform. ### Syntax - Add custom highlight rules per file extension. - Toggle inline lint warnings (Python / JS). ### LCOT - **Hidden commands** — list of built-in LCOT command IDs to suppress in the tree. - **Custom command file** — path to your `lcot_user_commands.json`. Defaults to `~/.aidaide/lcot_user_commands.json`. ## SSH - **Default port** — 22. - **Connection timeout** — seconds. - **Keepalive interval** — seconds. 0 disables. - **Default key path** — pre-fills the Add Host dialog. - **Auto-accept new host keys** — off by default and recommended off. On is convenient but kills the host-key-change warning that catches MITM. - **Known hosts file** — defaults to `~/.aidaide/known_hosts`. Separate from `~/.ssh/known_hosts` to keep AidaIDE's history isolated. - **Terminal type** — `xterm-256color` by default. ## Security - **Vault timeout** — re-lock the vault after N minutes of inactivity. 0 disables. - **Require password on resume** — pop the unlock dialog when the OS resumes from sleep. - **Encryption profile** — Standard (AES-GCM via Fernet) or Strong (Scrypt + AES-GCM with longer derivation). Strong is slower on first unlock. - **Audit log path** — `~/.aidaide/audit.log` by default. - **SAST scanner paths** — per-language binary locations (bandit, gosec, eslint, etc.). - **CVE feed refresh** — interval (daily by default). ## Network - **DNS resolver** — system / Cloudflare / Google / custom. - **HTTP proxy** — for outbound requests (CVE feed updates, plugin marketplace). - **Capture buffer** — max packets retained by Packet Capture. - **Notifications** — SMTP server for email alerts, Slack webhook URL, generic webhook URL. - **Polling** — Fleet Manager / Monitoring Dashboard refresh interval. ## Plugins - **Marketplace URL** — defaults to AidaIDE's hosted store. - **Enabled plugins** — toggle each on/off. Disabled plugins remain installed but inert until re-enabled (restart required). - **Trusted authors** — list of publishers whose plugins do not require per-install confirmation. - **Plugin install location** — defaults to `~/.aidaide/plugins/`. - **Widget Permissions** — per-widget allow/deny for shell, network, file system. See [Chapter 15](/docs/plugins). ## Experimental Features A separate **File → Experimental Features…** dialog hosts beta toggles. Things flagged here are off by default and may change or disappear. Today's list includes early-access bits of the Hierarchy Builder (multi-port agents), expanded AI workflow primitives, and beta DB engines (SQLite, Cassandra). ## Debug Console (`Ctrl+Shift+D`) Not in Settings but conceptually adjacent — open from **Preview → Debug → Debug Console**. A live log of internal AidaIDE events: API calls, SSH commands, plugin loads, errors. Useful when filing a bug. Right-click → **Copy All** to grab the buffer for attaching to a bug report. ## Performance Monitor **Preview → Debug → Performance Monitor**. Real-time charts of CPU / memory / threads / file handles inside the AidaIDE process. Useful when something feels slow. The recent fix to the truncation issue is in main now; if you see numbers cut off again, file a bug. ## Keyboard Shortcuts editor Reachable from **File → Keyboard Shortcuts…** (`Ctrl+K, Ctrl+S`) and detailed in [Chapter 14](/docs/shortcuts). ## Display settings For multi-monitor setups: **File → Settings → Appearance → Display Settings…** opens a sub-panel for: - DPI scaling per monitor. - Default monitor for new windows. - Per-monitor theme overrides (rare; useful for a dim secondary monitor). ## Terms & Setup ### Theme vs accent A **theme** is the full palette (background, foreground, sidebar, accents). The **accent** is the single highlight colour overlaid on whatever theme is active. Override the accent without changing the theme. ### "I changed something and it broke" Every section has **Reset this section to defaults** at the bottom. If the IDE will not start because of a setting, the file lives at `~/.aidaide/settings.json` — delete it (lose all settings) or open in a plain editor and hand-fix. ### Where settings persist - `~/.aidaide/settings.json` — all settings above. - `~/.aidaide/themes/` — custom theme files. - `~/.aidaide/known_hosts` — accepted SSH host keys. - `~/.aidaide/audit.log` — audit log. - `~/.aidaide/logs/` — diagnostic logs (used by bug reports). ### "Settings dialog will not open" Run from a terminal so you can see the traceback. Usually the cause is a corrupt theme file in `~/.aidaide/themes/`. Move it out and retry. ### "I want a smaller font everywhere" - **Appearance → Font size (UI)** lowers menu, tabs, panels. - **Editor → Editor font size** lowers code font. - Both are independent. ### Multi-monitor + DPI - Each monitor's DPI is detected on startup. If you plug in a monitor after launching, restart AidaIDE so it picks up the new geometry. - Mixed-DPI setups sometimes draw fuzzy text on the lower-DPI monitor. The display panel has a "Force per-monitor DPI" toggle that re-renders cleanly at the cost of slightly slower window moves. ## Cloud Portal Cloud Portal access (browser remote access via ) is enabled in **Settings → Cloud Portal**. Toggle **Enable Cloud Access** on; AidaIDE generates a per-device certificate and starts an outbound WebSocket tunnel. No router port forwarding is required. Full walkthrough — including guest passes, permission groups, and the in-browser Remote Desktop — lives in [Ch. 21 — Cloud Portal and Web Access](/docs/cloud-portal-docs). --- # Shortcuts and Command Palette Source: https://aidaide.app/docs/shortcuts You can drive almost every feature in AidaIDE from the keyboard. This chapter covers the defaults, the Command Palette, the Feature Browser, and how to remap any binding. ## Command Palette (`Ctrl+Shift+P`) The fastest path to anything in the IDE. Press `Ctrl+Shift+P`, start typing. - Matches against menu items, feature tabs, settings, plugin commands. - Fuzzy match — "scn host" finds "Network → Host Discovery." - `Enter` runs the focused item. `Esc` closes. - The palette shows the keyboard shortcut on the right for items that have one — useful for learning bindings. ## Feature Browser **View → Feature Browser** or the toolbar magnifier. A pane listing every feature tab grouped by category (Fleet, Network, Security, AI, etc.) with a search box. Better than the Command Palette when you do not yet know what something is called and want to browse. Each entry has: - Icon. - Name. - One-line description. - "Open" button. - License lock icon if gated. ## Default shortcuts (selected) ### Global | Action | Shortcut | | --- | --- | | Command Palette | `Ctrl+Shift+P` | | Settings | `Ctrl+,` | | Keyboard Shortcuts editor | `Ctrl+K, Ctrl+S` | | New Connection Tab | `Ctrl+T` | | New Project from Template | `Ctrl+Shift+N` | | Open File | `Ctrl+O` | | Open Project Folder | `Ctrl+Shift+O` | | Save | `Ctrl+S` | | Add panel | `Ctrl+Shift+B` | | Exit | `Alt+F4` (Win) / `Cmd+Q` (Mac) | ### Edit | Action | Shortcut | | --- | --- | | Undo | `Ctrl+Z` | | Redo | `Ctrl+Y` / `Ctrl+Shift+Z` | | Find | `Ctrl+F` | | Find Next | `F3` | | Find Previous | `Shift+F3` | | Replace | `Ctrl+H` | | Find in Files | `Ctrl+Shift+F` | | Go to Line | `Ctrl+G` | | Toggle line comment | `Ctrl+/` | | Indent / Outdent | `Tab` / `Shift+Tab` | ### AI | Action | Shortcut | | --- | --- | | Toggle AI Sidebar | `Ctrl+Shift+I` | | AI Chat | `Ctrl+Shift+A` | | Claude Agent Manager | `Ctrl+Shift+M` | | Agent Hierarchy Builder | `Ctrl+Shift+H` | | Live Coding Agents | `Ctrl+Shift+J` | | Save Chat Session | `Ctrl+Shift+Alt+S` | | Load Chat Session | `Ctrl+Alt+L` | ### Tools / Plugins | Action | Shortcut | | --- | --- | | Protocol Wizard | `Ctrl+Shift+W` | | Marketplace Store | `Ctrl+Alt+M` | | Plugin & Widget Manager | `Ctrl+Alt+P` | | Create New Plugin/Widget | `Ctrl+Shift+K` | | Debug Console | `Ctrl+Shift+D` | ### Editor | Action | Shortcut | | --- | --- | | Run current file | `F5` | | Toggle breakpoint | `F9` | | Bookmark current line | `Ctrl+F2` | | Jump to next bookmark | `F2` | | Jump to previous bookmark | `Shift+F2` | (Some `F5` paths in connection tab editors double-fire — known minor issue if you bind a second action to `F5`.) ### User Guide viewer (Help → User Guide) These shortcuts only apply while the in-app User Guide window is focused. In the main window, `Ctrl+Shift+B` is Add panel (rc18), not this bookmarks picker. `Ctrl+Shift+A` is AI Chat. | Action | Shortcut | | --- | --- | | Focus search box | `Ctrl+F` | | Next match | `Enter` or `F3` | | Previous match | `Shift+F3` | | Clear search | `Esc` | | Previous chapter | `Alt+◂` or `Ctrl+PgUp` | | Next chapter | `Alt+▸` or `Ctrl+PgDn` | | Font zoom in / out / reset | `Ctrl+=` / `Ctrl+-` / `Ctrl+0` | | Bookmark current section | `Ctrl+B` | | Open bookmarks picker | `Ctrl+Shift+B` | | Toggle light/dark theme | `Ctrl+Shift+L` | | Toggle Reader / focus mode | `F11` | | Jump to Keyword Index | `Ctrl+I` | | Copy current chapter to clipboard | `Ctrl+P` | | Export current chapter as PDF | `Ctrl+Shift+E` | | Export the whole guide as one PDF | `Ctrl+Shift+G` | The PDF lands under `~/.aidaide/exports/_.pdf` (or `docs/user_guide/_exports/` when running from source, or your system temp dir if neither is writable). If `reportlab` is missing the viewer falls back to writing the raw markdown alongside where the PDF would have gone. `Ctrl+Shift+G` (📚 Full PDF) writes a single file `AidaIDE_User_Guide_.pdf` containing every chapter in TOC order. The first two pages are a title page and an auto-generated table of contents whose entries are clickable links to each chapter and major heading. Each chapter starts on a fresh page (page-break-before-H1). Cross-chapter links inside the prose — for example `[see Ch.2 §"I don't have an SSH server"](/docs/ssh-devices#i-do-not-have-an-ssh-server--setup-paths)` — resolve to in-PDF anchors, and `https://` URLs in chapter prose become clickable. The footer carries a global "Page N of M". Without `reportlab`, the fallback writes one concatenated `.md` file instead. Chapters that include screenshots use Markdown's standard `![alt text](path/to/image.png)` syntax — the viewer renders these inline (via Pillow) up to a 720px width ceiling. Captions appear in dim italic below the image. PDF export embeds the same images at page width. These bindings are hard-coded in the viewer (not user-rebindable from **File → Keyboard Shortcuts…**) — the viewer is a small Toplevel and intentionally keeps its bindings local. If you want different keys, the source is `ui/user_guide_viewer.py`. ## Customising shortcuts **File → Keyboard Shortcuts…** (`Ctrl+K, Ctrl+S`) opens the shortcuts editor: - Searchable list of every command in AidaIDE. - Each row shows current binding, command ID, default binding, and a category. - Click a row → press the new key combo → it is bound. `Esc` cancels. - Conflicts highlight in red. The previous binding is unbound automatically when you confirm. Saved bindings live in `~/.aidaide/keybindings.json` and persist across launches. ### Resetting - Right-click a row → **Reset to Default**. - Bottom of the dialog → **Reset All to Defaults** wipes the file. ### Importing / exporting - Export — saves your binding file. Share with teammates for consistency. - Import — overlays an imported file onto current bindings. ## Recurring binding traps If a shortcut does not seem to do anything, check the following — these are known patterns: - **Multiple bindings to the same command** — kbm-level and widget-level can both bind, and one returns None while the other handles. Re-bind through the editor; conflicts surface in red. - **Binding declared but never wired** — a small set of `edit.*` / `selection.*` / `go.*` commands are declared in the default shortcuts file but not actually registered to handlers (about 41 are known). They show up as customisable but pressing the key does nothing. File a bug if you depend on one. - **`Ctrl+Shift+H` confusion** — opens the Hierarchy Builder, but the default shortcut declaration calls it `edit.replaceInFiles` in some builds. The Settings UI label may lie until this is sorted. H --- # Plugins, Widgets, Marketplace Source: https://aidaide.app/docs/plugins Plugins and widgets are how AidaIDE extends itself. A plugin can add menu items, feature tabs, LCOT command catalogues, theme files, chip libraries for the Hierarchy Builder, anything. Widgets are smaller, embedded UI components (a status badge, a chart, a quick-action button). ## Menu layout Under **Tools → Plugins & Widgets**: - **Marketplace Store** (`Ctrl+Alt+M`) - **Plugin & Widget Manager** (`Ctrl+Alt+P`) - **Create New Plugin/Widget** (`Ctrl+Shift+K`) - **Widget Permissions** - **Widget Health Dashboard** - **Run Widget Tests** ## Marketplace Store The hub for discovering and installing third-party (and Anthropic-published) plugins. Layout: - Top: featured, new, popular. - Search box. - Categories: Themes, Chip Libraries, Connectors, Workflows, Tools. - Each plugin card shows name, author, version, install count, rating. Click a card to see details: description, screenshots, permissions requested, dependencies, changelog. **Install** downloads and unpacks into `~/.aidaide/plugins//`. Restart is usually required for menu/toolbar changes; widgets and themes typically take effect immediately. ## Plugin and Widget Manager The installed-side companion to the Marketplace. Lists everything you have, whether enabled, version, and update availability. Per-row controls: - **Enable / Disable** — toggle without uninstalling. Disabled plugins still occupy disk space; they just do not load. - **Update** — if a newer version is in the Marketplace. - **Uninstall** — removes the plugin directory. - **Open in Editor** — for plugin developers; jumps to the source. ## Creating a plugin or widget `Ctrl+Shift+K` opens **Create New Plugin/Widget** — a scaffolder. Pick: - **Plugin** or **Widget**. - **Language** (Python is the default for AidaIDE plugins). - **Template**: - Plugin: adds menu items, feature tabs, LCOT catalogue, theme. - Widget: status badge, chart, table, custom panel. Fill in metadata (name, id, author), click **Generate**, and the scaffold lands in your projects folder. Editing it live and reloading via **Plugin Manager → Reload Plugin** lets you iterate without restarting the whole IDE. Plugin SDK docs live in `~/.aidaide/plugins/_sdk/README.md` after install. ## Widget permissions Widgets can request access to: - **Network** — outbound HTTP. Required for anything fetching data. - **Filesystem read** — your local files. - **Filesystem write** — modifying files. - **Shell** — running commands. - **MCP** — calling registered MCP servers. Each capability is granted explicitly the first time the widget asks for it. The grants are persisted per widget in `~/.aidaide/widget_permissions.json` and editable in **Widget Permissions**. ## Widget Health Dashboard A status grid for installed widgets: - Last load time. - Last error (if any). - Memory footprint. - Per-widget action: Reload, Disable, Pin to toolbar. Useful when something visually breaks. If a widget is causing the IDE to hang, **Disable** here unblocks the load path on next launch. ## Run Widget Tests For plugin authors: runs the test harness against every installed widget. Reports pass/fail per widget with stack traces on failure. ## Workflows ### "I want a darker theme than the bundled ones" 1. **Marketplace Store** → search "theme." 2. Pick something dark. 3. Install. 4. **Settings → Appearance → Theme** → pick the new theme. ### "I built a chip library for the Hierarchy Builder" 1. Scaffold a plugin with template "Chip Library." 2. Develop locally. 3. Package with `aidaide-plugin pack` (CLI tool installed with the SDK). 4. Submit to the Marketplace (or share the `.plugin` file directly). 5. After install, **Hierarchy Builder → Refresh Library** picks up the new chips. ### "A plugin is making AidaIDE slow" 1. **Widget Health Dashboard** — sort by memory or load time. 2. If one widget is clearly bad, **Disable** it. 3. If you still feel sluggishness, **Plugin Manager** → Disable all third-party plugins, restart, re-enable one at a time. ## Terms & Setup ### Plugin vs widget - **Plugin** — bigger, can add menus / tabs / catalogues / themes / chip libraries. - **Widget** — smaller, lives inside a panel. A clock, a metric, a button. ### .plugin file A zip with a manifest at the root. Easy to inspect and easy to ship. Drag a `.plugin` onto AidaIDE's main window to install. ### Trusted authors Marketplace plugins from listed authors install without per-install confirmation. Anthropic-published is trusted by default. Add your own teammates in **Settings → Plugins → Trusted authors**. ### Permissions are real A widget cannot read your filesystem, run shell, or hit the network unless you grant it. Treat permission prompts the way you would treat an iOS app asking for the camera — say no if the widget does not need the capability. ### "Install failed: signature invalid" Marketplace plugins are signed; an invalid signature means the package was tampered with or the publisher's key rotated. Re-download. ### "I want to write a plugin but do not know where to start" - `Ctrl+Shift+K` → Plugin → "Hello World" template. - The generated `README.md` walks the API. - AidaIDE source is open-source friendly — the bundled built-in plugins are good examples (look in the SDK README for paths). ### Updating plugins Plugins do not auto-update. **Plugin Manager** shows a small icon next to anything with an update available. Click to update, then restart if asked. ### Removing all plugins Quit AidaIDE. Delete or rename `~/.aidaide/plugins/`. Next launch starts with only the built-in features. ### "The marketplace is empty / will not load" - Network — check **Settings → Network → HTTP proxy** if you are behind one. - AidaIDE may have flipped the marketplace URL during an update; **Settings → Plugins → Marketplace URL** has the default. - If you are running entirely offline, the marketplace is unreachable. Use `.plugin` files directly. --- # Workspaces and Layouts Source: https://aidaide.app/docs/workspaces **Ships in the current Windows download, 1.0.0-rc19.** The Workbench has been in the desktop app since 1.0.0-rc18. Windows is the primary supported path. macOS and Linux builds are in progress. Linux experimental (soft peer). This chapter describes the Workbench in the desktop app. Android stays a separate Lite-class app, not a desktop host download. The Cloud Portal is unchanged. AidaIDE's window is a workbench: every tab is a panel you can split, stack, or tear off into its own window, and your setups save by name. **View → Workbench → Use the workbench shell** is on by default. The Workbench is not a Pro feature. Pro tools stay Pro inside it. Existing tools open as they are. Plugins need no changes; the plugin API did not change for this. ## Split the view Drag a tab to the left, right, top, or bottom edge of another panel. A compass shows where it will land. Drop it on that edge to split the view. ## Stack panels Drop a tab on the middle of another panel to stack them. ## Tear off into a new window Drag a tab outside the window, double-click it, or right-click and choose **Float**. Drop more tabs into that window and move it to a second monitor. Close the window and its tabs come back. A connection tab, and that connection's Sidebar, Editor, and Intelligence panels, stay in the main window. The connection's Terminal can leave. See [Take the terminal anywhere](#take-the-terminal-anywhere). ## Add any panel Open the list with `Ctrl+Shift+B`, the toolbar's **+ Panel**, or the `+` on any tab strip. One searchable list holds every built-in tab, installed marketplace widgets, the Dashboard, panel tools, and the pages of running plugins. They dock the same way as the built-in panels. `Ctrl+Shift+A` is AI Chat, not Add panel. A layout that names a widget you do not have installed opens without that widget and says so. AidaIDE does not install the missing widget for you. Running plugins reopen their own pages; a saved layout does not restore plugin pages. ## Pick up where you left off The arrangement saves itself as you go: windows, splits, stacks, floating windows, and their positions. After a restart the arrangement comes back. SSH sessions do not reconnect by themselves. Connections start fresh. The current arrangement autosaves to `~/.aidaide/workbench_layout.json`. ## Save named layouts The toolbar **Workspace** list holds layouts you name yourself. **Save** writes the current arrangement. Right-click any strip for **Save layout as...** or **Open layout**. The same commands are under **View → Workbench** and **Settings → Workspace**. Switching layouts keeps connections connected. Each layout is a file under `~/.aidaide/layouts/` that you can copy to another PC. Layouts are not in the Marketplace. **Settings → Workspace** lists those layouts: - **Open** - **Save current as...** - **Delete** There is no bundled set of presets, and no Layout Wizard. ## Take the terminal anywhere Press **Pop** in a connection's terminal header. The live shell becomes a panel you can dock anywhere, including another window, with its scrollback, the shell switcher, and the AI agent's bash attached. Close the panel and it returns to the tab. The connection's live SSH session stays registered with the connection service, which hands the shell to wherever the Terminal panel is docked. That is why the terminal can leave the tab and keep running. ## Pop out Sidebar, Editor, and Intelligence **Add panel → "Sidebar - user@host"** (Editor and Intelligence the same way). Their icon bars travel with them. These panels stay in the main window. ## Classic layout **View → Workbench → Classic layout for this connection** lays out a toolbar row, then Sidebar, Editor, Intelligence, and Terminal below. They are panels you can move later. A second connection joins the same stacks. **Classic layout on connect** is off by default. ## Go back to tabs **View → Workbench**, then uncheck **Use the workbench shell**, and restart. You get the classic tabbed window. **Reset layout** clears the arrangement. The per-tab Grid Layout mode, the Layout Wizard, Layout Presets, and the Widget Palette do not come back. Old grid layouts are not carried over. Save a named layout instead. ## Where layouts live Layouts are plain files on your PC: - Named layouts: `~/.aidaide/layouts/` - Current arrangement: `~/.aidaide/workbench_layout.json` Copy or back them up. On Windows the AidaIDE user-data directory is `%APPDATA%\AidaIDE\` (see [Chapter 20](/docs/quick-reference#file-and-directory-paths)). --- # Updates, Licensing, Support Source: https://aidaide.app/docs/licensing The last chapter covers everything outside the main workflow loop: getting AidaIDE up to date, activating your plan, filing bugs, and finding help. ## Help menu The bottom item on the menu bar. - **Welcome Guide** — short overview tour. - **Setup Wizard** — re-runs first-run flow ([Chapter 1](/docs/getting-started)). - **Ask Macy (Interactive Guide)** — voice-narrated walkthrough of the IDE; also the entry point to the 16-section Hierarchy Builder tour. - **About** — version, build number, OS, attribution. - **Documentation** — opens this guide and the online docs at aidaide.app. - **Check for Updates** — manual update check. - **Enter License Key** — paste a key to activate. - **License Status** — what plan you are on and how many seats/devices remain. - **Bug Reports** — list of recent bug-report packages. - **Report a Bug** — opens the bug-report dialog. ## Checking for updates **Help → Check for Updates** queries the manifest at `updates.aidaide.app`. The response lists: - Latest available version. - Your current version. - Release notes for everything in between. If an update is available: - **Download** — pulls the installer (or, in dev/portable installs, the patch bundle). - **Install Later** — keeps you on the current version. - **Install Now** — runs the installer and prompts to restart AidaIDE. The installer bucket is `aidaide-downloads` on R2. If you ever see a 403 from `updates.aidaide.app`, that is normally R2 returning 403-instead-of-404 for a missing bucket name, not an auth problem — wait for the next manifest publish. ### Auto-update **Settings → General → Auto-check for updates** controls whether AidaIDE checks on launch. Default is on (weekly cadence). Auto-install is off by default; you always confirm. ## Activating your license AidaIDE runs without a license, but several features (AI sidebar, AI Hierarchy Builder, Live Coding Agents, Hierarchy Builder) are gated. To activate: 1. **Help → Enter License Key**. 2. Paste the key from your purchase email. 3. Click **Activate**. The activation call goes to AidaIDE's licensing endpoint, which verifies the key and binds it to this machine. From now on AidaIDE checks the license locally on launch; periodic re-verification happens in the background. ### Device binding Licenses are bound to a per-machine fingerprint. The fingerprint is `SHA-256(MAC | hostname)`. Swapping out hardware changes it; AidaIDE will refuse to launch the second-most-recent device beyond your cap. If you replace a machine, **Help → License Status → Devices** lists currently-bound devices. Right-click → **Revoke** to free a slot. Revoke takes effect within a few minutes (soft-revoke from admin UI). ### License Status A small panel: - Plan name. - Seats used / max. - Devices bound / cap. - Renewal date. - "Open Customer Portal" — link to manage billing. ## Buying a license The pricing page lives at aidaide.app/pricing. Current tiers (July 2026): - **Free** — $0 forever. Full IDE, SSH/SFTP engine, terminal, file browser, OTA. No license key. - **Pro** — $19/month or $190/year. Full AI suite, Hierarchy Builder, advanced network scans, cameras. - **Teams Pro** — $70/month or $700/year. 5 users. - **Enterprise** — custom. AidaIDE is free forever — Pro adds the AI suite whenever you want it. ## Filing a bug **Help → Report a Bug** opens the bug-report dialog: - **Summary** — one line. - **Description** — what you were doing, what happened, what you expected. - **Attach logs** — auto-included by default (`~/.aidaide/logs/` from the last hour). - **Attach screenshots** — drag-and-drop into the dialog. - **Include redacted vault contents** — off by default. Turn on if the bug is vault-related and the redactor will strip secrets. Submitting bundles everything into a `.tar.gz` and uploads to AidaIDE's bug-collection endpoint. You get a ticket ID in return. Track at **Help → Bug Reports**. If your machine is offline, the bug report saves to `~/.aidaide/bug_reports/` and uploads on the next successful launch. ## Logs Three files / directories matter when debugging: - `~/.aidaide/logs/aidaide.log` — main app log (rotates daily). - `~/.aidaide/logs/ssh.log` — per-connection SSH transcripts. - `~/.aidaide/audit.log` — security-relevant events (vault unlock, license activation, PKI events). Logs are sized-capped; old rotations are compressed. ## Getting human help - **AidaIDE community Discord** — link from **Help → Documentation**. - **Email** — `support@aidaide.app`. - **GitHub issues** — for open-source-tracked bugs. - **Twitter/X** — `@aidaide` (community-tipped). When reaching out, include your AidaIDE version (from **Help → About**), OS, and the bug ticket ID if you have one. ## Updating Marketplace plugins Plugins update independently of core AidaIDE. **Tools → Plugins & Widgets → Plugin & Widget Manager** shows what is updatable. See [Chapter 15](/docs/plugins). ## Uninstalling - **Windows** — Settings → Apps → AidaIDE → Uninstall. - **macOS** — drag AidaIDE.app to the Trash. - **Linux** — package manager (`apt remove aidaide` etc.) or remove the AppImage. The uninstaller does **not** touch `~/.aidaide/` (your vault, settings, workspaces). Remove manually if you want a fresh start. **Back up the vault first if you have credentials you need.** ## Terms & Setup ### License key format A long base64-ish string. Treat as a secret — anyone with your key can use your seats until you rotate. ### "I lost my license key" Sign into the customer portal (linked from License Status) — your keys are listed there. Resend by email if needed. ### "My license stopped working" - Verify the renewal date in License Status. - Check that this machine is still in your bound-devices list. - Network — license verification needs outbound HTTPS to AidaIDE's licensing endpoint. Behind a strict proxy? Configure under Settings → Network → HTTP proxy. ### "AidaIDE will not start after an update" - Start with the `--safe-mode` flag (no plugins, default settings). - If safe mode launches, the culprit is a plugin or a custom theme. Disable plugins, swap themes, retry. - If safe mode also fails, file a bug from another machine and include `~/.aidaide/logs/aidaide.log`. ### "I want an air-gapped install" - Run the installer on a network-connected machine first to validate. - Disable auto-update. - Pre-install required plugins via `.plugin` files. - Vault and license activation both work offline if you can ship one verification round-trip during initial setup. After that, periodic re-verification only happens when network is available. ### EU/data-residency note EU-jurisdiction R2 buckets are on the roadmap. Until they exist, downloads come from the global bucket which transits multiple regions. Talk to support if this matters for your compliance posture. ### Roadmap pointers (subject to change) - Multi-port agents in the Hierarchy Builder. - Scoped context per agent. - Better Web Dashboard out-of-the-box experience. - Per-window AI sidebar. - EU-region installer mirror. --- # Troubleshooting & FAQ Source: https://aidaide.app/docs/troubleshooting A symptom-first lookup. Each entry starts with what you actually see on screen (or what is missing), then explains what to try in order from cheapest to most invasive. If nothing in here works, the bottom of the chapter explains how to file a useful bug report. Use `Ctrl+F` on this page to jump straight to your symptom. Entries are grouped by where the symptom shows up, not by the underlying subsystem. ## How to use this chapter 1. **Look up the symptom** in the table of contents or with `Ctrl+F`. 2. **Try the fixes in order.** Each list is sorted cheapest-first; if step 1 works, you do not need step 2. 3. **If still broken,** the relevant chapter has deeper context — every entry cross-links to it. 4. **If it looks like a bug,** jump to [Filing a useful bug report](#filing-a-useful-bug-report) at the bottom. ## Contents - [Launch and login](#launch-and-login) - [SSH and connections](#ssh-and-connections) - [File browser, editor, save](#file-browser-editor-save) - [LCOT panel](#lcot-panel) - [Fleet Manager and OTA](#fleet-manager-and-ota) - [Network tools](#network-tools) - [Security tools](#security-tools) - [AI Assistant and Hierarchy Builder](#ai-assistant-and-hierarchy-builder) - [Cameras](#cameras) - [Databases](#databases) - [Settings, themes, layout](#settings-themes-layout) - [Updates and licensing](#updates-and-licensing) - [Performance](#performance) - [Diagnostics you can run yourself](#diagnostics-you-can-run-yourself) - [Filing a useful bug report](#filing-a-useful-bug-report) --- ## Launch and login ### AidaIDE will not launch at all 1. Launch from a terminal so you can see startup errors: `aidaide` on Linux/macOS, `"C:\Program Files\AidaIDE\aidaide.exe"` on Windows. 2. Try **safe mode**: `aidaide --safe-mode`. This skips plugins and uses default settings. If safe mode works, the culprit is a plugin or a custom theme — disable them one at a time. 3. If safe mode also fails, capture `~/.aidaide/logs/aidaide.log` and file a bug from another machine. See also [Ch. 17 §"AidaIDE will not start after an update"](/docs/licensing#aidaide-will-not-start-after-an-update). ### Login window appears but typing does nothing The Smart Login window owns keyboard focus on launch. If it does not: 1. Click directly on the password field. 2. If you have a non-English keyboard layout and the field stays blank, swap input methods (Win+Space on Windows; some IMEs swallow the keystrokes). 3. As a last resort, close (X) and relaunch; the focus bug is timing-related. ### "Vault Locked" but I never set a master password You did, on a previous install. The vault file at `%APPDATA%\AidaIDE\` (Windows) or `~/.aidaide/` (Linux/macOS) survives uninstalls. Either: - Remember and enter the password, or - Click **Forgot password? Reset vault** under the password field. **This wipes every saved secret.** See [Ch. 1 §Unlocking the vault](/docs/getting-started#unlocking-the-vault). ### Splash plays forever / window never appears Background loading is stuck. Wait 30 seconds; if still hung: 1. Skip the splash next launch: set `AIDA_SPLASH=off` as an environment variable. 2. Kill the process and relaunch. 3. If it recurs, capture the log — startup tasks are time-stamped there. ### "Soft restart" — login skipped, did something change? By design — see [Ch. 1 §Soft-restart bypass](/docs/getting-started#soft-restart-bypass). To force a password prompt next launch, **File → Exit** explicitly. --- ## SSH and connections ### "Connection refused" or "Connection timed out" The single most common cause is a wrong port. AidaIDE has historically had a few callsites that hardcode port 22: 1. **Re-open the host in Connection Manager** and verify **Port** is set to your server's listening port. 2. Test from a real terminal: `ssh -p user@host`. If that fails too, the problem is the server or network, not AidaIDE. 3. Check that the device is reachable: `ping host`. 4. If you can SSH from a terminal but AidaIDE cannot, file a bug and attach `~/.aidaide/logs/ssh.log` — that is the port-22 trap resurfacing. See [Ch. 2 §Ports and the port-22 trap](/docs/ssh-devices#ports-and-the-port-22-trap). ### "Host key has changed!" Genuine security feature. Either: - The server was reinstalled / rekeyed (benign — verify with the server admin, then click **Accept New Key**). - Someone is intercepting your traffic (do not accept; contact whoever runs the server). See [Ch. 2 §Host key](/docs/ssh-devices#host-key). ### "Permission denied (publickey)" 1. Connection Manager → host → **Authentication**. Is the right key file selected? It should point at the **private** key, not `.pub`. 2. On the server, verify `~/.ssh/authorized_keys` contains the matching **public** key. 3. Check permissions on the server: `chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys`. 4. On Windows, the private key file itself must be readable only by your user — see [Ch. 2 §Key permissions errors](/docs/ssh-devices#key-permissions-errors). ### Save to a remote file appears to succeed but the file did not change A legacy bug: silent fall-through from SFTP to local `open()`. Should be fixed. 1. Reopen the file from the remote tree (not from Recent Files) to confirm. 2. Check `~/.aidaide/logs/ssh.log` for an SFTP error around the save time. 3. If the local-file mirror is being edited, the tab title shows the local path; if it is the remote, the title is prefixed with the host name. See [Ch. 2 §Edit a remote file](/docs/ssh-devices#common-operations). ### A password field mysteriously goes blank The vault decrypt step failed silently in the past. Should now surface as an error dialog. 1. Re-enter the password in Connection Manager and **Save**. 2. If the field blanks again on next launch, file a bug — that is a recurrence and we need the log. ### "I just changed my SSH port and now nothing connects" 1. Update the **Port** in every Connection Manager entry pointing at that host. 2. If you have devices in Fleet Manager, update `device.ssh_port` there too. 3. Restart any open connection tabs (they cache the port for the session). ### Drag-and-drop upload silently does nothing 1. Confirm the destination pane has focus (click into the remote tree first). 2. Check the status bar — uploads show a progress line there. 3. Look at `~/.aidaide/logs/ssh.log` — SFTP permission errors usually mean the remote user cannot write to the target directory. --- ## File browser, editor, save ### Editor will not show a file even though it opens Check the file size; very large logs trigger AidaIDE's read cap. There is no unbounded read by design. - Open with `tail -n 5000 logfile | nl` in the terminal pane instead. - Or use **Find in Files** scoped to the directory. See [Ch. 3 — File Browser and Editor](/docs/file-browser). ### Find in Files returns wrong file names Older bug: result-click was stripping the directory and opening the wrong file. Re-test after updating; if it still happens, file a bug with the search term, the result list, and which file actually opened. ### Auto-save did nothing **Settings → Editor → Behaviour → Auto-save** has three modes: Off, On Focus Change, On Idle (delay). If you expected to see changes on disk, check that the mode you expected is selected. See [Ch. 13 §Behaviour](/docs/settings-themes#behaviour). ### Ctrl+S re-prompts Save As… every time You opened the file from **File → Recent Files** when its path was unknown (legacy bug). Work around by closing and reopening from the file tree. If it recurs on freshly opened files, that is a bug — capture the log. ### Split-pane editor: second pane has stale status bar / no lint Known issue with the secondary editor pane in some builds. The primary pane is canonical for status. Most code-intel features (lint, format, autocomplete) are wired to the primary editor. ### Non-ASCII filename or content shows mojibake (`é` instead of `é`) UTF-8 encoding mismatch on read or write. AidaIDE specifies UTF-8 explicitly in most paths; if you hit this in a specific tab, capture the file and file a bug — these are tracked and patched as found. ### "Recent Files" / "Recent Connections" do not survive a restart Either the JSON file under `~/.aidaide/` is unwritable, or a save was interrupted. Delete `~/.aidaide/recent_files.json` (or the corresponding connections file) and start fresh. The vault and your saved hosts in Connection Manager are not affected. --- ## LCOT panel ### LCOT panel is missing 1. You are on a feature tab. LCOT only shows on connection tabs — see [Ch. 4 §Where it lives](/docs/lcot#where-it-lives). 2. **View → Toggle LCOT Panel** — turn it back on. 3. The splitter has been dragged to the right edge. Drag it back left. ### I clicked a WRITE command and nothing happened Look at the terminal pane — output went there. A WRITE command may print nothing on success (e.g. `systemctl restart nginx`). See [Ch. 4 §"I clicked a WRITE command and nothing seems to have happened"](/docs/lcot#i-clicked-a-write-command-and-nothing-seems-to-have-happened). ### A command fails with "command not found" The tool is not installed on the **remote** device. LCOT runs commands in the remote shell; install the missing tool there (`apt install nmap`, etc.). See [Ch. 4 §"A command is failing"](/docs/lcot#a-command-is-failing). ### My custom command disappeared Custom commands live in `~/.aidaide/lcot_user_commands.json`. If it was deleted or corrupted, AidaIDE silently re-creates an empty one. If you have an older copy, drop it back in and reopen the panel. ### The WRITE confirmation popup is annoying It is not configurable per command — by design. It exists because clicking next to "Status" and hitting "Reboot" by accident is exactly the failure mode it prevents. --- ## Fleet Manager and OTA ### A device shows as "Offline" but I can SSH to it The Fleet status thread probes on its own schedule. Force a refresh: right-click the device → **Refresh Status**. If it still shows offline: 1. Confirm the saved port matches the device's actual SSH port. 2. Check `~/.aidaide/logs/aidaide.log` for `fleet.status` lines around the timestamp. 3. The Fleet status check defaults to port 22 in some legacy paths. Workaround: re-save the device in Fleet Manager from scratch. See [Ch. 5 — Fleet Management](/docs/fleet). ### Deploy Lite says "Success" but the binary did not land Older bug had Deploy Lite fall through to fabricated success messages when no real callback was wired (CLAUDE.md rule #4 violation, tracked). Confirm by checking the device's filesystem manually. If the bug is reproducible, capture the log — that is one of the recurring traps we want to know about. ### OTA Update Manager says "No updates available" but I know there is one 1. **Refresh** in the OTA Update Manager. The endpoint cache TTL is a few minutes. 2. Check that the manifest URL in **Settings → Network → OTA** points at `updates.aidaide.app`. 3. R2 returns HTTP 403 instead of 404 for a missing manifest — if you see a 403 in the log, the bucket name is wrong, not your auth. ### "Web Dashboard" link from Fleet menu doesn't open anything Fall back to running it manually: `python web_server.py` from the AidaIDE repo root. Then browse to `http://localhost:5001/fleet`. Known limitation; an auto-launch fix is on the roadmap. ### Discover Devices uses `root` as the username Legacy default. **Cancel** the discovery, edit the username, retry. The default has been corrected in newer builds. --- ## Network tools ### Port Scanner / Host Discovery returns hosts I have never seen If results look fabricated (consistent vendor strings like `2.4.1`, `3.0.0`, `7.4.1`, `8.0.26` across unrelated hosts), the tab fell through to demo data. This is a known recurring trap (CLAUDE.md rule #4). File a bug and label demo output explicitly. ### Packet Capture shows no traffic 1. Are you running AidaIDE as a user with permission to capture? On Linux you usually need `sudo setcap cap_net_raw,cap_net_admin=eip $(which python3)` on the interpreter. 2. Pick the right interface in the dropdown (the default may be a loopback). 3. Some BPF filters block everything if mistyped — clear the filter and verify packets flow. See [Ch. 6 — Network Tools](/docs/network-tools). ### Network Topology shows "Refreshed" but nothing changed The `Refresh` button on the Topology tab only re-reads bookmarks in some builds; it does not re-discover the LAN. To do a real refresh, run a fresh **Host Discovery** sweep. ### "Cisco IOS" / "Cisco Network Analyzer" — which tab is correct? The menu label, the tab title, and the underlying class name disagree in some places. They all refer to the same feature; trust the menu path you came in from. ### An exported HTML report contains my private data verbatim For private deployments only. If you see un-escaped user-supplied strings in the report (e.g. a packet payload rendered as raw HTML), do not share that file — it is an XSS vector and the underlying bug is being tracked. Stick to JSON exports until the next patch. --- ## Security tools ### PEM contents under "View Certificate" look fake You are seeing a known fabrication bug — the PEM tab generated a SHA-512 placeholder. Real cert inspection should use `openssl x509 -in cert.pem -text -noout` until the next patch lands. See [Ch. 7 — Security Tools](/docs/security-tools). ### Cert/Vuln scans return zero findings 1. Confirm the scope (a folder, a host, the whole project). The scan honours what is selected. 2. Several Security tabs ship with **simulated data** unless real scanners are configured. The tab heading shows "Simulation" when this is the case. To run against real CVE feeds, configure a feed under **Threat Intel Feeds** first. 3. Some tabs have right-click context menus that pop on empty rows — that is a UX bug, not a missing tool. ### An exported security report has raw `