openInvest plugin

A committee of four AI roles reviews a portfolio, keeps a decision log and runs backtests with lookahead protection

  • 140 ★ on the repository
  • Last commit
  • MIT
Plugin

Broad access

Why this level

  • The beta `invest-ibkr` skill trades a real account without confirming each trade
  • The `memory/` and `db/` folders hold positions, strategy and profile, and in a public fork they would end up in commits
  • Scheduled runs put an API key and a mail app password into repository secrets
All reasons and checks

longsizhuo/openinvest

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add plugins/openinvest

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Broad accessThe tool can change data, run commands or handle secrets.

  • The beta `invest-ibkr` skill trades a real account without confirming each trade
  • The `memory/` and `db/` folders hold positions, strategy and profile, and in a public fork they would end up in commits
  • Scheduled runs put an API key and a mail app password into repository secrets

This is third-party code. Review the repository files before installing.

What it does

openInvest is an investment decision engine you run yourself and connect to Claude Code, Codex, Hermes Agent or OpenClaw through a plugin with skills. Inside, a committee of four roles works. A macro strategist sets the frame for acceptable losses, a quant analyst reads only indicators and never sees the holdings, the `Risk Officer` role sees the holdings but not the indicators, and a chief investment officer merges their reports into a BUY, ACCUMULATE, HOLD, TRIM or SELL verdict with a confidence level. After the first round the quant and the risk officer receive each other's reports and challenge them, then the verdict lands in a log. The engine sends no orders: the action stays with a human. Portfolio state lives in Markdown files under `memory/`. The author also publishes the failures. By their own measurement the directional verdicts without HOLD called the move in 42.2% of cases over 56 decisions, which is worse than random, and HOLD made up 56% of decisions. The author sees the value in discipline and transparency and promises no forecast.

Who it is for. Private investors who manage a portfolio through a terminal agent and want to see what each verdict was built from.

Good fit when

  • You want a decision on a security to pass through several independent roles and keep a reasoning log
  • A portfolio rule has to be tested on history without letting the model peek at the future
  • The committee report should arrive by email every day from a private fork on GitHub Actions
  • The agent forgot why it made an earlier decision and you need a record with the reasoning
  • Before moving to another machine you need a copy of holdings, strategy and log

Not a fit when

  • You want a return forecast: the author published tests where no feature survived as a trading signal
  • Orders must go out without a human: the committee issues a verdict and the user confirms the trade
  • The fork is public: state files with holdings are committed, so the fork has to be private

Example request

Run the committee on my gold position, show each role's verdict and the director's final call, send no orders

Limitations

Python 3.13 is required. In skill mode your own agent does the reasoning and no separate API key is spent, but scheduled runs in GitHub Actions need `LLM_API_KEY` and mail credentials. The built-in web interface was retired on 5 July 2026, leaving the CLI and MCP. Holdings live in `memory/` and `db/`, which are not in git, so the `invest-backup` skill makes the copy. The separate `invest-ibkr` skill is marked beta: it trades a real Interactive Brokers account without confirming each trade, and the author recommends it to no one.

How to disable. Remove the plugin through the `/plugin` menu in Claude Code, and in Codex and Hermes with their plugin management commands. Drop the MCP server with `claude mcp remove openinvest`. Delete the `~/openInvest` data folder separately, after taking a copy.

FAQ

Does openInvest send orders to an exchange?

No, the committee issues a verdict and a human makes the trade. The exception is the beta `invest-ibkr` skill, enabled separately for an Interactive Brokers account, which trades without confirming each trade.

How do I install openInvest in Codex?

Run `codex plugin marketplace add longsizhuo/openInvest`, then `codex plugin add invest@openinvest`. The first-run wizard starts with the phrase `set up invest`.

Does the committee need an API key?

Not in skill mode, because your own agent does the reasoning. Scheduled runs in GitHub Actions need `LLM_API_KEY` or `DEEPSEEK_API_KEY`, and the emails need mail credentials.

How do I connect openInvest as an MCP server without the plugin?

Run `claude mcp add openinvest -e INVEST_HOME=~/openInvest -- uvx openinvest-mcp`. The same server works for any MCP client, and the `--http` flag turns on the remote mode, which is in beta.

Where is the holdings data stored?

In the `memory/` and `db/` folders inside `INVEST_HOME`. They are not in git, so the `invest-backup` skill makes the backup.

Discussion

No questions or reviews yet.

Plugins

T-Bank Invest plugin for OpenClaw

Tinkoff Invest OpenClaw Plugin

Russian stack

A native T-Bank Invest plugin for the OpenClaw agent: portfolio and market data out of the box, trading only behind an explicit allowTrading flag

PluginBroad access

A rubric skill that scores an open source project like an investor: five dimensions, hard vetoes and an owner diagnostic mode.

SkillMinimal access343Repository stars

investor-agent gives an agent quotes, price history, options, an earnings calendar and a fear and greed index with no key.

MCP serverExtended access349Repository stars

InvestSkill gives an assistant 34 ready frameworks for analysing US stocks, from company valuation to portfolio risk

SkillExtended access285Repository stars

A personal family office in the terminal: typed portfolio calculators, a local ledger and agents for Claude Code and Codex.

PluginExtended access336Repository stars
Russian stack

A CLI and skill giving an agent access to a T-Investments account: portfolio, returns, bond screeners and confirmed orders

SkillBroad access48Repository stars

README in short

The README presents the engine as a decision audit tool. It goes on with a comparison against eight benchmark portfolios, a table of refuted hypotheses, a quick start for four agents and a serverless run on GitHub Actions. A separate section covers the committee layout that forbids sharing context between roles.

README badge

Original SKILL.md

---
name: invest-setup
version: 0.6.0 # x-release-please-version
description: First-time openInvest installation and onboarding. **ONLY use when** user explicitly says "set up invest" / "init invest" / "帮我初始化 invest", OR when `invest` skill's `doctor` returns `status="needs_setup"`. **NOT for daily usage** — once onboarding is done, the `invest` skill takes over (portfolio viewing, committee analysis, buy/sell tracking). Wraps `run.sh init --from-stdin` with the canonical 3-question flow.
platforms: [linux, macos]
metadata:
  hermes:
    tags: [investing, setup, onboarding, 初始化, 投资]
---

# Invest Setup Skill

> `<skill-dir>` is this skill's own directory — the folder that holds this SKILL.md (Claude Code
> shows it as the skill's base directory; Hermes / Codex / OpenClaw install it inside the plugin).
> `run.sh` below always means `<skill-dir>/scripts/run.sh`.

**Single responsibility**: turn an empty openInvest deployment into a working one.
**Triggers only on the user's first-time setup** — run once, then step aside (the
`invest` skill takes over all day-to-day interaction).

## When to Use

- User explicitly says "set up invest" / "initialize invest" / "帮我初始化 invest"
- The `invest` skill's `doctor` returns `status: "needs_setup"` (memory / user_profile missing)
- User wants to reconfigure (explicitly says "reset" / "重新配置"; requires `--force`): on an existing install `--force` only updates name and risk tolerance in user.md — holdings, tracking, strategy and history stay as they are; change allocations with `set_allocations`, caps and tracking with `track_asset` / `untrack_asset`
- v1 → v2 schema migration: `doctor`'s `portfolio_schema` check says `needs_migration` (an
  install made by an older version; `status` shows cash 0). Run the exact command in that
  check's `hint` — it backs up portfolio.md and converts it. Do **not** rerun `init` for this

## When NOT to Use

- User is already onboarded (`doctor` returns `status: "ready"`) → **switch to the `invest` skill**
- User wants to view holdings / P&L / run the committee → use the `invest` skill
- User wants to track a new asset but is already onboarded → the `invest` skill's `POST /api/holdings` endpoint
- User wants to commit / push code → that's a git operation, unrelated to setup

If you (the agent) entered this skill by mistake, **exit immediately** and tell the
user to use the `invest` skill instead.

## Two onboarding paths

| Path | Scenario | Flow |
|------|------|------|
| **A. Fresh deployment** (default) | User's first time with openInvest; data lives on this machine | "Flow (4 steps)" below |
| **B. Connect to an existing hub** | User already runs openInvest on another machine (a server) and wants this machine to share the same data (multi-device) | "Path B" below, 2 minutes |

Report a problem