// research · pre-architecture

ROGUEWAVE

A Novaprospect fork of Waveterm that makes Claude the ambient intelligence layer of the entire workspace — native Anthropic provider, NOVAICOM operator dispatch, Jira-aware tabs, and role-based presets for Code, Arch, Research, Review, and Ops.

AMBIENT, NOT A SIDEBAR.

Waveterm treats AI as a chat sidebar. RogueWave makes Claude the ambient intelligence layer of the entire workspace — aware of every block, capable of acting on anything, integrated with the NOVAICOM operator dispatch system.

Where Waveterm asks "which AI provider do you want?" RogueWave asks "what are you trying to build, and how can I help right now?"

upstream
waveterm
platform
electron · darwin/linux/win
frontend
react 19 · typescript · jotai
backend
go (cmd/, pkg/)
ipc
wsh rpc · ws localhost:1619
ai sdk
@anthropic-ai/sdk (native)
config
~/.config/roguewave/
depends
novaicom daemon

wsh rogue

simulated transcript

rogue · split[1] · zsh
[ rogue v0.0.0-dev · workspace=novaprospect/ncentcom · preset=Code ]
director@rogue ~/repos/ncentcom $ wsh rogue dispatch --role code --issue NCC-481
⤷ novaicom dispatch · session=rogue-NCC-481-a91c · pid=48213
⤷ rogue-ops block opened in split[2]  (tail+status live)
⤷ rogue-jira block bound to tab — NCC-481 context piped to system prompt
director@rogue ~/repos/ncentcom $ wsh rogue context --show
context buffer · 18,422 tokens · cache hit 71%
  pinned   src/lib/server/auth.ts            3,104  ✓
  pinned   docs/NCC-481-PROMPT.md             1,266  ✓
  ambient  terminal scrollback (last 400ln)   8,710
  ambient  jira NCC-481 (summary+comments)    2,118
  system   novaicom-ops.md                    3,224  cached
director@rogue ~/repos/ncentcom $ wsh rogue claude "why is the test for guardClause failing?"
  ⠋ thinking · 2.1s · 1,402 thinking tokens (collapsed)
  ⠿ response streaming → ai panel split[3]
director@rogue ~/repos/ncentcom $ █ 

Every wsh rogue command is a GUI-aware projection of novaicom — calls the daemon, then drives WSH RPC to open blocks, badge tabs, post notifications.

directions

01

NATIVE CLAUDE INTEGRATION

Upstream shoehorns Anthropic through an OpenAI shim — losing extended thinking, native tool use, prompt caching, streaming thinking tokens.

  • >First-class Anthropic provider in pkg/rogue/claudeclient.go
  • >Extended thinking surfaced as collapsible UI block
  • >Tool calls map directly to WSH RPC — no translation layer
  • >Cache control on system prompt + persistent context
02

NOVAICOM OPS BLOCK

novaicom dispatches operators (Code, Arch, Research, QA, DevOps) as scoped subprocesses. Director has no visual into what they're doing in real time.

  • >rogue-ops view type — live operator session viewer
  • >Streams operator stdout into the block
  • >Pause / Cancel / Copy output / Open issue
  • >Connects to novaicom session API for state
03

WORKSPACE CONTEXT INTELLIGENCE

Waveterm sees blocks only when you attach them. The workspace state should BE the context.

  • >Context harvester — rolling buffer of terminal output, open files, errors
  • >Token budget indicator with per-block cost breakdown
  • >Right-click → Pin to Claude context
  • >Auto-offer "send to Claude" on stderr matching known patterns
04

JIRA-AWARE WORKSPACE

Every dev task at Novaprospect maps to a Jira issue. Claude should know which one without prompting.

  • >rogue-jira view type — issue summary, description, status, comments
  • >Bind a tab to an issue key — context auto-injected
  • >wsh rogue jira NCC-123 — open inline issue block
  • >Dispatched operator tabs auto-open with Jira block + relevant code
05

ROLE-BASED WORKSPACE PRESETS

Tab templates are planned upstream but not shipped. RogueWave can deliver opinionated presets that match the operator roles.

  • >Five presets shipped: Code · Arch · Research · Review · Ops
  • >JSON-serializable layouts
  • >Commit .roguewave/workspace.json to repos for shared layouts
  • >Activate via wsh rogue preset <name>
06

ROGUE SHELL INTEGRATION

wsh bridges terminal scripts to the GUI. Extend it as a GUI-aware projection of the entire novaicom CLI.

  • >wsh rogue claude — invoke Claude with full workspace context
  • >wsh rogue dispatch — spawn operator + auto-open ops block
  • >wsh rogue session list — render to block, not raw text
  • >wsh rogue prompt new — scaffold prompt file, open editor block

role-based presets

serializable layouts. commit .roguewave/workspace.json to share with the team.

Code Terminal · Monaco · Claude chat · Jira issue
Research Webview · Markdown preview · Claude chat
Arch Markdown editor · Claude chat (extended thinking)
Review AI file diff · Terminal · Claude chat
Ops NOVAICOM ops block · Terminal · Sysinfo

NAMESPACE, DON'T REPLACE.

All RogueWave code lives in namespaced locations so upstream Waveterm rebases stay clean. Do not fork the core block protocol, WSH RPC wire format, or build system.

  • >Go: pkg/rogue/
  • >Frontend: frontend/app/view/rogue*/
  • >CLI: wsh rogue
  • >Extend, don't replace: pkg/aiusechat/
  • >Config: ~/.config/roguewave/
~/.config/roguewave/ai.json
{
  "default": "claude-opus",
  "modes": {
    "claude-opus": {
      "provider": "anthropic",
      "model": "claude-opus-4-7",
      "extended_thinking": true,
      "cache_system_prompt": true
    }
  }
}

roadmap

ordered by value over effort

  1. 01

    Native Claude provider

    Anthropic SDK streaming + extended thinking. Wire to existing waveai block. Highest leverage — unblocks everything else.

  2. 02

    wsh rogue CLI skeleton

    Establish the command surface. Start with claude, status, context — thin wrapper over NOVAICOM and the new client.

  3. 03

    Context harvester

    Background goroutine in the Go backend. Feeds terminal scrollback + open files into the system prompt.

  4. 04

    NOVAICOM ops block

    rogue-ops view type. Connect to novaicom session list --json. Stream stdout of active sessions into the block.

  5. 05

    Jira block

    rogue-jira view type. Atlassian REST API. Read-only first.

  6. 06

    Workspace presets

    Serialize current split layout to JSON. Restore on load. Ship the five role presets.

open questions

resolved during the architecture phase

  • >Upstream cadence: rebase strategy vs. cherry-pick. Recommend tracking upstream main with RogueWave additions on feature branches that rebase onto it.
  • >rogue-ops transport: Unix socket, HTTP, or subprocess stdout? novaicom session list --json is the most stable surface today.
  • >Config isolation boundary: ~/.config/roguewave/ separate from ~/.config/waveterm/ — confirm before proceeding.
  • >Branding: ship as a separate Electron app (different name/icon/app id) vs. plugin loaded into stock Waveterm?
  • >The tsunami framework (custom HTML widgets) may be a better delivery path for rogue-jira than a full Go-backed block — evaluate first.
interested in the fork? we publish progress on the BMRL bench. contact@blackmesalabs.org home
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
a novaprospekt project
[0] bmrl* "~/changelog" 0000-00-00 00:00Z