Self-host finance management for running your own portfolio, trading, API key, OAuth, MCP, and CLI workflows.
@repo/client-mnie opens a remote financial workspace. @mnie/sdk provides the same
workspace contract locally for directly connected providers.
import { connectMnie } from '@repo/client-mnie'
const workspace = await connectMnie({ baseURL, token })
const valuation = await workspace.invoke('portfolio.valuation.get', { baseCurrency: 'JPY' })
const positions = await workspace.profile('sbi_xxx').invoke('investments.positions.list', {})Individual profiles implement FinancialProvider; cross-profile aggregation implements
FinancialWorkspace. See docs/docs/sdk/workspaces.md for direct, local, and remote usage.
Connect a Streamable HTTP MCP client to /api/mcp on your Mnie server origin.
The legacy /mcp path is also supported. Authenticate through OAuth or an
Authorization: Bearer <API_KEY> header. API keys retain their OAuth scopes and trade limits; owner administration requires an owner session.
Start with mnie-workspace-operations, then use mnie-workspace-invoke with
operation: "profiles.list". Pass a returned profile ID to mnie-profile-operations
and mnie-profile-invoke. MCP uses the same operations as WebSocket RPC.
apps/mnie-app: bundled server plus UI runtimeapps/mnie-server: API, OAuth, MCP, RPC, storage, and profile session managementapps/mnie-ui: web UI
packages/mnie-types: shared finance SDK interfacespackages/client-mnie: authenticated Mnie connection clientpackages/mnie-sdk: high-levelmnieSDKpackages/mnie-cli: CLI usingclient-mniepackages/auth-bitwarden: Bitwarden Auth Managerpackages/provider-sbi-sec: SBI Securities providerpackages/provider-mobile-suica: Mobile Suica provider
Before running, setup .env, refering .env.example.
Docker uses MNIE_KEYRING_BACKEND=sqlite because platform keyrings are not available in
headless containers. Set MNIE_KEYRING_SECRET in .env before saving SBI passkeys.
docker-compose.yml:
services:
mnie:
image: ghcr.io/pnsk-lab/mnie:latest
ports:
- '18787:8787'
env_file:
- .env
volumes:
- ./data:/app/dataor
docker run --rm -it --name mnie \
-p 18787:8787 \
--env-file .env \
-v "$PWD/data:/app/data" \
ghcr.io/pnsk-lab/mnie:latestnix run 'github:pnsk-lab/mnie#mnie'The flake exports a NixOS module that runs Mnie as a native systemd service:
{
inputs.mnie.url = "github:pnsk-lab/mnie";
outputs =
{ nixpkgs, mnie, ... }:
{
nixosConfigurations.my-host = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
mnie.nixosModules.systemd
{
services.mnie = {
enable = true;
runtime = "native";
envFile = /etc/mnie.env;
};
}
];
};
};
}- This project is inspired by MoneyForward.
