n8n cost tracking app - open source for the community <3

what’s up gang

not knowing the exact token costs of the AI nodes in my

workflows always bothered me when working with n8n.

i work with it a lot :slight_smile:

that’s why i built a cost tracking app for n8n workflows and open-sourced it for the community, since i’m pretty sure i’m not the only one with this problem.

it pulls token usage straight from your executions and shows you what every workflow costs per usage, per day etc.. you can group workflows by client/project, set budgets with webhook alerts, and there’s a daily-updated price index covering 2,500+ models. everything runs self-hosted on your own machine. no telemetry, your data never leaves your box.

setup is basically npm install, npm start, paste your n8n api key.

there’s also a demo mode if you just want to look around.

btw: where n8n reports provider-billed token counts the numbers are exact; a few langchain nodes only report estimates. those are clearly flagged with ≈ in the dashboard.

i’d really appreciate it if you could test it and give me feedback or work with me on it to make it even better :slight_smile:

take care guys and happy building

1 „Gefällt mir“

This is a real gap, nice work open-sourcing it. Pulling token usage straight from executions and grouping per client/project with budget webhooks is exactly the runtime visibility most people are missing.

One thing that pairs well with a runtime dashboard like yours: catching the cost regression before it ships, not just after it runs. The pattern that’s bitten me most in n8n is a prompt tweak or an added tool node that quietly doubles the tokens per iteration inside a Loop Over Items — the dashboard shows it the next day, but by then it’s already burned budget in prod.

Two small OSS pieces I lean on for the shift-left side, in case they’re useful to you or the thread:

Your app answers “what did it cost?” — these answer “did this change make it cost more?” before merge. Complementary, not competing. Would be curious whether you’re pulling usage from the execution JSON directly or from the model node outputs?