Octofriend banner
synthetic-lab synthetic-lab

Octofriend

Development community intermediate

Description

```bash npm install --global octofriend ```

Installation

Terminal
claude install-skill https://github.com/synthetic-lab/octofriend

README

Octo is a small, helpful, zero-telemetry, cephalopod-flavored coding assistant. Octo is your friend.

Get Started

npm install --global octofriend

And then:

octofriend
# or, for short:
octo

About

Octo is a small, helpful, cephalopod-flavored coding assistant that works with any OpenAI-compatible or Anthropic-compatible LLM API, and allows you to switch models at will mid-conversation when a particular model gets stuck. Octo can optionally use (and we recommend using) ML models we custom-trained and open-sourced ([1](https://huggingface.co/syntheticlab/diff-apply), [2](https://huggingface.co/syntheticlab/fix-json)) to automatically handle tool call and code edit failures from the main coding models you're working with: the autofix models work with any coding LLM. Octo works great with Kimi K2.5, MiniMax M2.5, GPT-5.3, and Claude 4.6 (although pretty much any agentic coding model will work). Octo wants to help you because Octo is your friend.

Octo has zero telemetry. Using Octo with a privacy-focused LLM provider (may we selfishly recommend [Synthetic](https://synthetic.new)?) means your code stays yours. But you can also use it with any OpenAI-compatible API provider, with Anthropic, or with local LLMs you run on your own machine.

Enabling web search

By default, Octo will look for Synthetic API keys to use Synthetic's private, zero-data-retention search API to power Octo's web search tool. If you have any Synthetic models configured anywhere in Octo, Octo's search tool will Just Work: even non-Synthetic-hosted models, like Claude, will be able to use Octo's web search tool.

If you don't want to use Synthetic's search API, but you still want to use the web search tool, you can configure the `search` config in `~/.config/octofriend/octofriend.json5`:

{
  // ...the rest of your config,
  search: {
    url: "some_search_api_url",
    apiEnvVar: "SOME_ENV_VAR_FOR_AUTH"
  },
}

...