OneSidekick Documentation
OneSidekick is an AI-powered desktop terminal assistant that helps you work faster and smarter in your command line. It combines an intelligent chat interface, an integrated terminal, and a rich set of productivity tools into a single desktop application.
AI Chat
Ask questions, generate commands, and get help from an AI that understands your terminal context.
Integrated Terminal
Run up to four terminal sessions side-by-side with your AI assistant, right inside the app.
Automations
Build multi-step workflows using natural language, then run them with a single click.
Vibe Apps
Generate instant React applications from a text description and run them in the app.
Who is it for?
- Security professionals who need to triage incidents, run scans, and investigate logs.
- System administrators who manage infrastructure, troubleshoot services, and automate tasks.
- Data analysts who transform and pipeline data through the terminal.
- Students and learners who want a patient assistant that explains commands along the way.
Getting Started
System Requirements
- Windows 10/11, macOS 12+, or Linux (Ubuntu 22.04+, Fedora 38+)
- 4 GB RAM minimum (8 GB recommended)
- 200 MB of free disk space
- Active internet connection for AI features
Installation
- 1Visit onesidekick.io and click Download Beta or Start Free.
- 2Create an account using your email address or sign up through OAuth.
- 3Download the installer for your operating system from the Dashboard.
- 4Run the installer and follow the on-screen prompts.
- 5Launch OneSidekick. You will see a login screen on first launch.
Signing In
The desktop app offers two sign-in methods:
- OAuth (recommended) - Click "Sign in with OneSidekick" to open your browser and complete login securely.
- Email and password - Enter the credentials you used during sign-up.
Interface Overview
The OneSidekick interface uses a three-column layout. Each column is resizable by dragging the dividers between them.
Chat Panel
Left column
Center Panel
Tabbed tools
Terminal Panel
Right column
- Chat Panel (left) - Your AI conversation area. Ask questions, request commands, or use slash commands to trigger special features.
- Center Panel (middle) - A tabbed panel with 9 tools: Skills, Environments, Automations, Apps, Conversations, History, Snips, Files, and Clipboard. Click an icon to toggle a tab open or closed.
- Terminal Panel (right) - Integrated terminal sessions and Vibe Apps. Supports up to four concurrent terminal sessions.
Title Bar
The title bar at the top of the window shows the OneSidekick logo on the left and a user menu on the right. The user menu includes:
- Your name, email, and subscription tier
- Quick access to Settings
- Manage Account link (opens browser)
- Sign Out button
AI Chat
The chat panel is where you interact with the AI assistant. Type a message, and the AI will respond with helpful guidance, commands, or code. Responses stream in real time so you can start reading before the answer finishes.
Sending Messages
- 1Click the text input at the bottom of the chat panel.
- 2Type your question, request, or command.
- 3Press Enter to send. Use Shift + Enter for a new line.
Slash Commands
Type a slash command in the chat input to trigger special actions:
| Command | What It Does |
|---|---|
| /clear | Start a new conversation |
| /help | Show the list of available commands |
| /vibe <description> | Generate a React app from your description (see Vibe Apps) |
| /automation <description> | Generate a multi-step automation workflow (see Automations) |
Conversations
Each chat thread is saved as a conversation. You can manage conversations from the Conversations tab in the center panel:
- Click New Chat in the chat header to start a fresh conversation.
- Conversations are automatically titled based on your first message.
- Click any conversation in the list to reload its messages.
- Delete a conversation by clicking the trash icon next to it.
Markdown and Code in Responses
AI responses support rich formatting including headings, bold text, lists, code blocks with syntax highlighting, and math equations rendered with KaTeX. Code blocks come with built-in action buttons (see the Code Blocks section below).
Terminal
The terminal panel on the right gives you a fully functional shell directly inside OneSidekick. You can run commands, view output, and interact with your system without leaving the app.
Managing Sessions
- The terminal starts with one session. You can open up to four sessions at a time.
- Click the + button on the tab bar to add a new session.
- Click a tab to switch between sessions. Each tab shows a colored dot: green for active, red for exited.
- Click the X button on a tab to close (kill) that session.
Detached and Mirror Windows
Each terminal session has two special window modes available from the tab bar:
- Detach - Opens the session in its own separate window. Useful if you want the terminal on a second monitor.
- Mirror - Opens a read-only copy of the session in a new window. Use this to watch output while you work in another tab.
Selecting Terminal Text
When you select text in the terminal, a small toolbar appears with two options:
- Copy - Copies the selected text to your clipboard.
- Clip - Saves the selection to your Snips for later reference.
Skills (Personas)
Skills let you customize how the AI assistant behaves. Each skill is a custom persona with its own name, description, and system prompt that shapes the AI's responses and expertise.
Creating a Skill
- 1Open the Skills tab in the center panel.
- 2Click the + New Skill button.
- 3Enter a name (for example, "Python Expert" or "DevOps Assistant").
- 4Write a description so you remember what this skill is for.
- 5Enter a system prompt that tells the AI how to behave (for example, "You are an expert Python developer. Always provide code examples with explanations.").
- 6Click Save.
Using a Skill
- Click a skill card to select it. The chat header will show a badge with the active skill name.
- Click the badge in the chat header to deselect the current skill.
- To make a skill your default for all new conversations, click Set as Default on the skill card.
Environments
Environments let you configure and manage different development setups like Docker containers, Conda environments, Python virtual environments, and more. Each environment comes with pre-checks and automated setup steps.
Setting Up an Environment
- 1Open the Environments tab in the center panel.
- 2Browse the available environment types (Docker, Conda, Python venv, and others).
- 3Click Setup on the environment you want.
- 4A dialog will appear with two phases:
- Pre-checks verify that required tools are installed.
- Setup steps create and configure the environment.
- 5Once setup completes, the environment becomes available in your terminal sessions.
Managing Environments
- Docker-based environments show a status badge indicating whether the container is running.
- Delete an environment using the trash icon on its card.
- For Docker environments, you can also delete the container separately.
Automations
Automations are multi-step workflows that you can create with natural language, then run with one click. Each automation consists of ordered steps, optional variables for user input, and rollback steps that run if something fails.
Creating an Automation
- 1In the chat, type /automation followed by a description of what you want to automate (for example, /automation set up a Node.js project with TypeScript).
- 2The AI will generate an automation definition. A yellow banner appears at the top of the chat.
- 3Click Save Automation to save it to your library.
Running an Automation
- 1Open the Automations tab in the center panel.
- 2Click an automation card to open its detail view.
- 3Review the steps in the Steps tab. Click any step to expand and view its details.
- 4If the automation uses variables, switch to the Variables tab and fill in the required values.
- 5Click the Run button to start execution.
- 6During execution, the view switches to the Execution tab showing real-time progress. You can Pause, Resume, or Abort the run at any time.
Other Actions
- Duplicate an automation to create a copy you can modify.
- Export an automation to a JSON file for sharing or backup.
- History tab shows previous runs with their results.
- Delete removes the automation permanently.
Vibe Apps
Vibe Apps are instant, AI-generated React applications. Describe what you want, and the AI will create a working React component that runs right inside OneSidekick.
Creating a Vibe App
- 1In the chat, type /vibe followed by a description (for example, /vibe a dark-mode color palette picker).
- 2The AI generates a React component. A yellow banner appears with an Open App button.
- 3Click Open App. The app is compiled and opens in the terminal panel as a new tab.
Managing Vibe Apps
- Open the Apps tab in the center panel to browse all saved Vibe Apps.
- Use the search bar to find apps by name, description, or tags.
- Click the heart icon on an app card to mark it as a favorite.
- Click View Source in the detail view to see the TSX code behind the app.
- Delete an app using the trash icon.
Code Blocks
When the AI includes code in a response, it appears in a formatted code block with syntax highlighting. Each code block comes with four action buttons:
| Button | Action |
|---|---|
| Run | Sends the code to your active terminal session for execution. Disabled if no terminal is active. |
| Copy | Copies the code to your system clipboard. |
| Clip | Saves the code to your Snips library for later use. |
| Save | Saves the code as a file. The file extension is chosen based on the detected language. |
rm -rf) will display a warning and block execution. See the Safe Mode section for details.Snips
Snips are saved code and terminal text selections, all accessible from the Snips tab in the center panel. Terminal snips are marked with a Terminal badge so you can tell them apart at a glance.
- Click Clip on any AI code block to save it as a snip.
- Select text in the terminal and click Clip from the selection toolbar to save a terminal snip.
- Code snips can be executed with the Run button or copied to clipboard.
- Terminal snips can be copied or attached to a chat message for context.
- Delete individual snips with the trash icon.
Command History
Every command you run through OneSidekick (from code blocks, snips, or automations) is recorded in the History tab. This makes it easy to find and re-run commands you used before.
- Open the History tab in the center panel.
- Each entry shows the command, its language, and a timestamp.
- Click Run to re-execute a command in the active terminal.
- Delete individual entries or click Clear All to reset the history.
Clipboard
The Clipboard tab keeps a running log of your recent clipboard activity (up to 20 entries). It automatically captures text you copy from any source while OneSidekick is open.
- Each entry shows a preview of the copied text and a relative timestamp.
- Click Copy on any entry to send it back to your clipboard.
- Duplicate entries are automatically skipped.
- Click Clear All to remove all clipboard history.
Files
The Files tab lets you drag and drop files into OneSidekick and deploy them to your terminal's working directory or into a Docker container.
Deploying a File
- 1Open the Files tab in the center panel.
- 2Drag a file from your system into the drop zone, or click to browse.
- 3Click Deploy next to the uploaded file.
- 4The file is copied to the terminal's current working directory. If the active terminal uses a Docker environment, the file is copied into the container instead.
Settings & Configuration
Open Settings from the user menu in the title bar or from the settings icon in the chat header.
| Setting | Description |
|---|---|
| Default Model | Choose which AI model to use for chat responses. Available models depend on your subscription tier. |
| Theme | Switch between Light, Dark, or System (follows your OS preference). |
| Font Size | Adjust the application font size from 10px to 24px using the increment and decrement buttons. |
| Safe Mode | When enabled, blocks execution of potentially dangerous shell commands. See Safe Mode section below. |
Accounts & Billing
OneSidekick offers four subscription tiers. Your tier determines your daily request limit, available AI models, and monthly token allowance.
Free
- 50 requests per day
- GPT-4.1 Nano & Mini models
- Basic terminal integration
- 10 personas
Plus
- 500 requests per day
- GPT-4.1 & GPT-5 Mini models
- 1M tokens per month
- Priority support
Professional
- 2,000 requests per day
- All models including GPT-5.1
- 5M tokens per month
- Organization management
Enterprise
- 10,000 requests per day
- All models including GPT-5.2
- 25M tokens per month
- Dedicated support
To manage your subscription, click Manage Account in the user menu. This opens the billing page in your browser where you can upgrade, downgrade, or cancel your plan.
Security & Privacy
OneSidekick is built with a security-first architecture. Your data stays on your machine, credentials are stored in your operating system's secure keychain, and your local database is encrypted at rest. This section covers every layer of protection built into the app.
Local-First Architecture
All conversations, code snippets, command history, and settings are stored in a local encrypted database on your machine. Nothing is sent to external servers unless you explicitly use AI chat.
OS Keychain Storage
API keys, authentication tokens, and encryption keys are stored in your operating system's secure credential manager -- never in plaintext files or the database.
Database Encryption
Your local SQLite database is encrypted at rest using SQLCipher with AES-256 encryption. Data is unreadable without the encryption key.
Sensitive Data Redaction
Automation secrets are stored in per-automation encrypted vaults. Secure Mode tokenizes sensitive data in AI chat so your real values never reach the AI provider.
Local-First Data Storage
OneSidekick runs entirely on your machine. Your data never leaves your device unless you explicitly interact with AI features that require an internet connection.
- Chat conversations, command history, snips, automations, and settings are all stored locally in an encrypted SQLite database.
- Terminal sessions run via native PTY processes on your OS. Terminal input and output never leave your machine.
- Only AI chat messages are sent to the AI provider (OpenAI) when you choose to use the chat feature. All other app features work offline.
- Vibe Apps are generated via AI but run in a sandboxed local iframe -- the generated code does not phone home.
OS Keychain Credential Storage
Sensitive credentials are stored in your operating system's native secure credential manager, not in the database or config files.
- API keys -- API keys and other credentials are stored in the OS keychain (Apple Keychain on macOS, Credential Manager on Windows, Secret Service on Linux) -- never in plaintext files or the database.
- Auth tokens -- OAuth access tokens and refresh tokens are stored in the keychain, never in browser storage or plaintext files.
- Automation vault keys -- Each automation's encryption key is stored separately in the keychain under a unique identifier.
Database Encryption (SQLCipher)
OneSidekick encrypts your local database at rest using SQLCipher (AES-256 full-database encryption). This protects all stored data -- chat messages, command history, code snippets, environment configurations, and more -- even if someone gains access to your device's file system.
- A unique 256-bit encryption key is generated on first launch and stored securely on your device.
- All database reads and writes are transparently encrypted and decrypted. No changes are needed to your workflow.
- Existing unencrypted databases are automatically migrated to the encrypted format on upgrade. A
.bakbackup of the original is kept as a safety net. - The encrypted database file is unreadable in any SQLite browser or hex editor without the key.
Encrypted Backups (.osk)
Database backups are exported as .osk files, which are encrypted with a password you choose during export. The encryption uses AES-256-GCM with a key derived from your password via PBKDF2-SHA256 (600,000 iterations).
- Export: Settings > Database Admin > Export Backup. You will be prompted to set a password (minimum 8 characters) and confirm it.
- Import: Settings > Database Admin > Import Backup. Select a
.oskfile and enter the password used during export. - Legacy support: Unencrypted
.dbbackup files from older versions can still be imported without a password. - An incorrect password produces a clear error message. The GCM authentication tag ensures tampered or corrupted backups are detected.
Automation Vault Encryption
Automations can store sensitive variables (API keys, tokens, passwords) in an encrypted vault. Each automation has its own isolated vault with a separate encryption key.
- Sensitive variables are encrypted with AES-256-GCM and stored in a
vault.encfile. Non-sensitive variables are stored separately in plaintext. - Each automation's vault key is stored in the OS keychain, isolated from other automations.
- When an automation runs, sensitive values are substituted into commands at runtime and automatically redacted from all logs and output so they never appear in the UI.
Secure Authentication (PKCE OAuth)
OneSidekick uses the PKCE (Proof Key for Code Exchange) OAuth flow for browser-based sign-in, which is the industry-standard security protocol for desktop and mobile applications.
- A unique cryptographic code verifier and challenge are generated for each login attempt using SHA-256.
- Auth codes cannot be intercepted and replayed by malicious apps, even on shared machines.
- Tokens are refreshed automatically and stored in the OS keychain. Sessions persist across app restarts without re-authentication.
Safe Mode (Command Protection)
Safe Mode blocks the execution of potentially dangerous shell commands suggested by the AI. When enabled, every command is checked against a set of known dangerous patterns before it can run.
Detected patterns include:
- Recursive file deletion (
rm -rf), disk formatting (mkfs), and direct disk writes (dd) - Fork bombs, overly permissive permissions (
chmod 777), and remote script piping (curl | bash) - PowerShell equivalents:
Remove-Item -Recurse -Force,Format-Volume,Clear-Disk, andInvoke-Expression
- 1Open Settings from the user menu.
- 2Find the Safe Mode toggle.
- 3Check or uncheck the box. Changes take effect immediately.
Secure Mode -- DataVeil Tokenization (Experimental)
Secure Mode automatically detects and tokenizes sensitive data in your chat messages before they are sent to the AI provider. The AI only sees placeholder tokens like [EMAIL_1] or [JWT_1] -- your real values never leave your machine.
When the AI responds using those tokens, OneSidekick automatically replaces them with the original values so you see the real data in your conversation.
How to Enable
- 1Click the Shield button in the chat header (next to the OS selector).
- 2The button turns green when Secure Mode is active. The setting persists across sessions.
How It Works
- 1You type a message containing sensitive data (e.g., an API key, email address, or connection string).
- 2DataVeil scans the message with 30+ regex patterns and replaces each match with a numbered token (e.g.,
[email protected]becomes[EMAIL_1]). - 3Only the tokenized text is sent to the AI. Your real values stay local.
- 4When the AI responds, any tokens in the response are automatically de-tokenized back to the original values before display.
Token Map Panel
The Token Map tab in the center panel shows all detected sensitive values for the current conversation, grouped by category with color-coded labels. Each entry displays the original value mapped to its token. You can clear the token map for any conversation at any time.
Message Inspection
When Secure Mode is active, hover over any message to reveal a toggle button. Click it to switch between the Original view (what you typed or the de-tokenized AI response) and the Sent to AI view (the tokenized version the AI actually received). This lets you verify exactly what was anonymized.
Categories Detected
DataVeil recognizes 30+ sensitive data patterns across these categories:
- Secrets and keys -- Private keys (RSA, EC, PGP), JWTs, AWS/GCP/Azure credentials, Slack tokens, GitHub tokens, generic API keys
- Connection strings -- MongoDB, PostgreSQL, MySQL, Redis, RabbitMQ, S3 URIs, and URLs with embedded credentials
- Personal identifiers -- Email addresses, phone numbers, SSNs/tax IDs, passport numbers, driver's license numbers, UUIDs
- Financial data -- Credit card numbers, IBAN numbers
- Network infrastructure -- IPv4/IPv6 addresses, CIDR ranges, MAC addresses, hostnames/FQDNs
- Credentials -- Environment variable secrets, password hashes (bcrypt, argon2, scrypt), Base64-encoded secrets
- Sensitive paths -- References to
/etc/shadow, SSH key files, database files, and log files
Per-Conversation Isolation
Each conversation maintains its own independent token dictionary. Token numbering starts fresh per conversation (e.g., [EMAIL_1] in one conversation is unrelated to [EMAIL_1] in another). Deleting a conversation also clears its token dictionary.
Role-Based Access Control
Sensitive operations such as database export, import, and statistics are restricted to users with the admin role. Standard users cannot access these features, which prevents accidental or unauthorized data manipulation.
Cloud Platform Security
The OneSidekick cloud platform (accounts, subscriptions, and the AI proxy service) is hardened with multiple layers of protection to ensure that only authorized services can modify sensitive data.
- Row Level Security (RLS) -- Every database table has RLS policies enabled. Users can only read and update their own profile, and are blocked from modifying protected columns such as tier, role, and Stripe fields. Only the service role (server-side webhooks and admin actions) can change these values.
- Admin verification -- All admin API routes and server actions verify the caller is authenticated and has the admin role before processing. Non-admin users receive a 403 Forbidden response.
- Webhook signature verification -- Stripe webhook events are cryptographically verified using HMAC signatures before any subscription or tier changes are applied. Invalid or tampered webhooks are rejected.
- Input validation -- All API endpoints validate input parameters (UUID format, tier/role whitelists, search sanitization) to prevent injection attacks and parameter tampering.
- JWT-based API authentication -- The AI proxy worker validates JSON Web Tokens against Supabase JWKS, enforcing token expiration and audience claims. Tier-based rate limits (requests per minute, per day, and monthly token caps) are enforced server-side and cannot be bypassed.
- No sensitive keys in the browser -- Stripe secret keys, webhook secrets, and the Supabase service role key are stored exclusively in server-side environment variables and never appear in client-side JavaScript bundles.
Encryption at a Glance
| What | How | Key Storage |
|---|---|---|
| Local database | SQLCipher (AES-256) | App data directory (protected file) |
| Backup exports | AES-256-GCM + PBKDF2-SHA256 | User-provided password |
| Automation secrets | AES-256-GCM per vault | OS Keychain (per automation) |
| API keys | OS-level secure storage | OS Keychain |
| Auth tokens | PKCE OAuth + OS-level storage | OS Keychain |
| AI chat (Secure Mode) | Regex tokenization (30+ patterns) | In-memory per conversation |
FAQ & Troubleshooting
How do I change my AI model?
Open Settings from the user menu and select a different model from the Default Model dropdown. The models available to you depend on your subscription tier.
Why is the Run button disabled on a code block?
The Run button is only active when you have at least one live terminal session. Make sure a terminal tab shows a green status dot. If all sessions are closed or exited, click the + button to start a new one.
Can I use OneSidekick offline?
The terminal and most utility features (snips, clipboard, files, history) work offline. However, AI chat, Vibe Apps, and automation generation require an active internet connection.
My terminal session shows a red dot. What happened?
A red dot means the shell process has exited. This can happen if you typed exit, if the process crashed, or if the session timed out. Close the tab and open a new session with the + button.
How do I transfer files into a Docker container?
Use the Files tab. When your active terminal session is connected to a Docker environment, clicking Deploy on a file will automatically run docker cp to place the file inside the container.
Where is my data stored?
All conversation history, snips, automations, and settings are stored in a local SQLite database on your machine, encrypted at rest with SQLCipher (AES-256). Your API key, authentication tokens, and automation vault keys are stored securely in your operating system's keychain (Keychain on macOS, Credential Manager on Windows, Secret Service on Linux). See the Security & Privacy section for full details.
How do I reset the app or clear all data?
To start fresh with conversations, use /clear in the chat. To clear other data, use the respective "Clear All" buttons in the History, Clipboard, or Snips tabs. There is no single "factory reset" button, which helps prevent accidental data loss.
I hit my daily request limit. What can I do?
Your request limit resets every 24 hours. If you need more capacity, consider upgrading your subscription tier from the Billing page. See the Accounts & Billing section for tier details.
Glossary
| Term | Definition |
|---|---|
| Automation | A saved multi-step workflow that can be run, paused, and resumed. Created from natural language using the /automation command. |
| Environment | A pre-configured development setup such as a Docker container, Conda environment, or Python virtual environment. |
| PTY | Pseudo-terminal. The underlying technology that provides the interactive terminal sessions inside OneSidekick. |
| PKCE | Proof Key for Code Exchange. A secure OAuth extension that prevents auth code interception attacks on desktop apps. |
| Safe Mode | A security feature that blocks execution of commands matching known dangerous patterns. |
| SQLCipher | An open-source extension to SQLite that provides transparent AES-256 encryption for the entire database file. |
| Session | A single terminal instance. OneSidekick supports up to four concurrent sessions. |
| Skill / Persona | A custom AI behavior configuration with a name, description, and system prompt that changes how the AI responds. |
| Snip | A saved code snippet, either from an AI code block (Code Snip) or from terminal text selection (Terminal Snip). |
| Slash Command | A special command starting with / typed in the chat input to trigger a feature (for example, /vibe, /automation, /clear). |
| Streaming | Real-time delivery of AI responses. Text appears progressively as the model generates it. |
| Tier | Your subscription level (Free, Plus, Professional, or Enterprise), which determines your usage limits and model access. |
| Vibe App | An AI-generated React application that runs in a sandboxed iframe inside OneSidekick. |