VS Code extension for a self-hosted Odysseus AI assistant. Connects to your local Odysseus server and gives you an agent-capable chat panel directly inside VS Code.
For issues, gripes and whishlist items, add them to Gripesheet.md with your name and the context of it.
Requirements
- Odysseus server running (default
http://localhost:7860) - VS Code 1.85+
Getting Started
- Start your Odysseus server.
- Open the Odysseus panel from the Activity Bar (sail icon).
- Sign in with your Odysseus credentials.
- Start chatting — the agent can read files, run bash, search the web, and write to disk.
Features
Chat Panel
- Streaming responses with real-time token output
- Collapsible thinking blocks (extended reasoning)
- Tool call chips showing bash, web search, file read/write with expandable output
- Agent mode (tools enabled) / Chat mode (plain LLM) toggle
- Web search and bash toggles per-message
- Verbose mode — reveals tool input args and reasoning step counts
- Rotating status messages while waiting (the important ones)
- File attachments — attach images, PDFs, or text files to any message
- Research mode — deep web research with streaming progress and numbered sources
- Incognito mode — sends messages without saving to session history
- Detached stream resume — reconnects to an in-progress agent run if the panel is closed and reopened
Plan Mode
- Plan / Act toggle in the chat input bar — in Plan mode the agent reads files and discusses code but is blocked from writing files or running state-changing bash commands. Switch to Act mode to let it execute.
- Plan mode state persists per workspace.
Tool Approval
odysseus.requireApprovalsetting (default on) — bash and python tool calls show an approval card before execution.- Approve once, reject (stops the run), or Auto-approve for the rest of the session.
Workspace Rules
- Drop a
.odysseusrulesfile in your project root to give the agent persistent per-workspace instructions (coding conventions, architecture notes, off-limits paths, etc.). - Rules are injected into every conversation in that workspace and auto-reloaded on change.
Odysseus: Create Workspace Rules Filecommand scaffolds the file with a template.- A green badge appears in the chat UI whenever rules are active.
Hyprlayer Integration
- Interop with Hyprlayer — a spec-driven agentic dev tool that stores plans and handoffs as markdown in a per-project
thoughts/directory. Odysseus detects hyprlayer-managed workspaces automatically and never modifies hyprlayer itself. - Context injection — a compact summary of the active plan (matched to your git branch) and latest handoff is included in every chat, so the agent knows about in-flight hyprlayer work.
Odysseus: Hyprlayer: Resume Handoff— pick a handoff fromthoughts/shared/handoffs/and continue that work in a fresh Odysseus session.Odysseus: Hyprlayer: Continue Plan— pick a plan fromthoughts/shared/plans/, open it, or have the agent implement its next unchecked phase (updating the plan's checkboxes as it goes).Odysseus: Hyprlayer: Create Handoff from Current Session— the agent writes a hyprlayer-format handoff document back intothoughts/shared/handoffs/, so a hyprlayer/Claude Code agent can/resume_handoffyour Odysseus work.Odysseus: Hyprlayer: Sync Thoughts— runshyprlayer thoughts sync(best-effort).- Commands only appear in the palette when hyprlayer is detected; disable everything with
odysseus.hyprlayerIntegration. Failures (unmounted volume, broken symlinks) log to the Odysseus Hyprlayer output channel and never break chat.
Memories
- Sidebar Memories panel — create, filter, and delete AI memories that persist across sessions. Memories are injected into every chat to help the agent remember your preferences, project context, and important details.
Notes
- Sidebar Notes panel — persistent notes and TODO lists with pinning and completion toggles. Notes survive across sessions and workspace reloads.
Context Awareness
- Active file pill — automatically injects the open file into every message
- Selection pill — injects highlighted code with line numbers
- VS Code diagnostics injection — errors and warnings from the Problems panel sent as context
@filementions — type@to open a fuzzy file picker; selected file contents are injected into the API messageAlt+K— inserts an@filename:startLine-endLinereference from your current editor selectionodysseus.sendSelectioncommand — appends a@file:linereference to the chat input- Workspace file listing (gitignore-aware) sent as context on every message
- Git context injection —
git statusandgit diff --stat HEADautomatically included as context (toggle withodysseus.injectGitContext) - Workspace index — on startup the extension silently indexes workspace symbols (functions, classes, methods) and injects the most relevant files' contents automatically with every message. Updated incrementally as files change. Force rebuild with
Odysseus: Rebuild Workspace Index.
Message History
- Edit & delete past messages — hover any message in the conversation history to reveal edit and delete buttons. Edit a message to re-send it to the agent; delete to remove it.
- Message history replay when switching sessions (falls back to a divider if backend has no history endpoint)
Edit Review
- Pre-send autosave — dirty buffers are saved before the agent runs so it reads fresh disk content
- Post-write diff viewer — when the agent modifies a file, a VS Code diff opens automatically showing original vs modified
- Revert button — inline "Revert" action in the chat restores the pre-edit snapshot without touching the conversation
Odysseus: Show Session Diffcommand — pick any file touched this session and open its diff
Checkpoint & Multi-file Revert
- Every agent run snapshots all files it touches (up to 20 files, last 10 runs kept).
Odysseus: Revert Agent Run(odysseus.revertSession) — pick any past run from a QuickPick list and restore all its files to their pre-run state in one step.
Headless Task Runner
Odysseus: Run Task(odysseus.runTask) — describe a task; the agent runs it in the background in full agent mode (bash + web search enabled) with output streamed to the Odysseus Tasks output channel.- Status bar spins during execution; a notification appears on completion with an Open in Chat button to load the task's session.
- Task history persisted (last 50 runs) —
Odysseus: Show Task Historyopens a QuickPick to jump to any past task's session. - Configurable via
odysseus.allowBash,odysseus.allowWebSearch, andodysseus.maxIterations.
Cron Scheduler
Odysseus: Schedule New Task(odysseus.scheduleTask) — create a named, cron-scheduled recurring task. Choose from presets (every 15 min / hourly / daily 9 am / weekdays 9 am / weekly Monday 9 am) or enter a custom 5-field cron expression.Odysseus: Show Schedules(odysseus.showSchedules) — list all schedules; enable/disable, run immediately, or delete from a single QuickPick.- Built-in cron parser — no external dependencies.
- Schedules poll every 60 seconds; a toast notifies when a task fires with a Show Output shortcut.
- Per-schedule timeout defaults to
odysseus.schedulerTimeoutMinutes(default 30).
AI Commit Message Generator
Odysseus: Generate Commit Message(odysseus.generateCommitMessage) — sends the staged diff (orgit diff HEADif nothing is staged) to the agent, which returns a conventional commit message.- Result opens as an editable
git-commitdocument; the subject line is also written to the VS Code SCM input box.
Codebase Search
Odysseus: Search Codebase(odysseus.searchCodebase) — regex or keyword search across workspace files; results (up to 20 matches with file and line numbers) are prefilled into the chat input.Odysseus: Search Messages(odysseus.searchMessages) — full-text search across all sessions.
Session Management
- Session history sidebar with search, grouped by Today / Yesterday / Last 7 days / Older
- Session operations — hover a session in the sidebar to compact, fork, truncate, star (mark as important), rename, or delete. Compacting summarizes old messages; forking creates an independent copy.
- Rename and delete sessions (hover a session to reveal actions)
- Message history replay when switching sessions (falls back to a divider if backend has no history endpoint)
- Multiple chat panels —
Odysseus: Open New Chat Panelopens an independent conversation - Session persisted per workspace via VS Code workspace state
- Sessions are auto-named from the first message
Input
- Slash commands:
/new,/clear,/verbose,/compact,/help @file picker with keyboard navigation (Arrow keys, Enter, Escape)- Model picker — searchable dropdown, switches model mid-session
Ctrl+Enterto send (optional, off by default — setodysseus.useCtrlEnterToSend)Shift+Enterfor newline- Context window usage indicator (character-count heuristic, shown after first exchange)
Integration
- URI handler — open a pre-filled chat from any tool:
vscode://JoseAlma.odysseus-vscode-extension/open?prompt=<encoded prompt>
Configuration
| Setting | Default | Description |
|---|---|---|
odysseus.url |
http://localhost:7860 |
Odysseus server URL |
odysseus.agentMode |
true |
Enable agent tools by default |
odysseus.allowBash |
true |
Allow bash tool in agent/task mode |
odysseus.allowWebSearch |
true |
Allow web search tool |
odysseus.maxIterations |
30 |
Max agent steps per run before auto-stop |
odysseus.requireApproval |
true |
Show approval card before bash/python tool calls |
odysseus.injectGitContext |
true |
Include git status/diff in every message |
odysseus.injectWorkspaceTree |
true |
Include workspace file tree in every message |
odysseus.hyprlayerIntegration |
true |
Detect hyprlayer workspaces and inject plan/handoff context; no effect without hyprlayer |
odysseus.schedulerTimeoutMinutes |
30 |
Default timeout for scheduled tasks |
odysseus.useCtrlEnterToSend |
false |
Use Ctrl+Enter to send (Enter adds newline) |