SWE-bench Verified, live, four arms: 13% cheaper than no compaction, and the highest reward. See the numbers

Run as a bifrost LLMPlugin

Embed the context-guru pipeline inside an existing bifrost deployment — no separate process, no transport of its own.

Steps

  1. Build a pipeline and store from your config:

    pipe, err := cfg.Build(emitter)   // cfg is a *config.Config
    st := cfg.NewStore()
    
  2. Construct the plugin and register it:

    p := bifrost.New(pipe, st)
    // add p to BifrostConfig.LLMPlugins
    
  3. Wrap the transport with the expand loop if you need reversibility (see below).

Where it sits

Troubleshooting

Markers reach my clients unexpanded. The plugin alone does not recover anything — the expand loop lives in the transport wrapper, not in a hook. Either add the wrapper or run a lossless-only pipeline (format, toon, cachesplit) so no marker is ever written.

Every request lands in the same session. The transport has to set the context-guru-session context value. Without it the fallback is a content hash, which changes whenever the head of the conversation changes.

Non-chat requests are untouched. By design — PreRequestHook passes them through.

For the standalone proxy and the AuthBridge plugin, see Host adapters.