Portfolixir is a self-hosted Elixir/Phoenix application for local portfolio tracking. It helps you keep securities, portfolios, depots, cash accounts, manual buy/sell transactions, holdings, and quote history in one auditable local app.
The project focuses on transparent portfolio records and read-only inspection. It is not a broker, bank, trading, payment, order, or rebalance platform. Supported functions are also available through a local JSON API and an MCP companion that wraps that API.
- Create securities, one portfolio, and linked cash/depot accounts.
- Record manual buy and sell transactions.
- Review derived holdings and stored quote history.
- Open a security detail chart from local quote history.
- Use
/api/v1and the MCP companion for the same supported local actions.
- Elixir and Erlang compatible with mix.exs
- PostgreSQL
- optional: Docker and Docker Compose
docker compose up --buildOpen the app and MCP companion at:
http://localhost:4000
http://127.0.0.1:4001/mcp
Stop and remove local volumes:
docker compose down -vmix deps.get
mix ecto.setup
mix phx.serverOpen the Phoenix URL printed by the server, usually
http://localhost:4000.
Set a local API token before using /api/v1:
export PORTFOLIXIR_API_TOKEN=replace-meRun the MCP companion separately when you do not use Docker Compose:
npm install --prefix mcp-server
npm run build --prefix mcp-server
PORTFOLIXIR_API_BASE_URL=http://127.0.0.1:4000 \
PORTFOLIXIR_API_TOKEN=replace-me \
npm start --prefix mcp-serverCommon local checks:
mix format
mix test
pre-commit run --all-files
npm test --prefix mcp-server
npm run build --prefix mcp-serverInstall pre-commit once per checkout:
pre-commit install --install-hooks-
Product documentation
-
Architecture documentation
-
Development documentation
Use synthetic data for development and tests. Do not commit real account numbers, broker statements, wallet addresses, personal names, or private portfolio files.
Tests must not make external network calls.
- Contribution guide: CONTRIBUTING.md
- Security policy: SECURITY.md
- Code of conduct: CODE_OF_CONDUCT.md
- AI-agent guide: AGENTS.md
- License: LICENSE
If this app is useful to you, you can support its ongoing maintenance via bunq. Support is voluntary and appreciated, but does not create any entitlement to support, features, consulting, an SLA, or invoice-based work.
This project is licensed under the MIT License. See LICENSE.