CrewAI
Track what your CrewAI crews cost
See what each CrewAI crew and agent costs across every model it calls, in two lines, with no account and no proxy. Free, and it takes about a minute.
1Install
pip install focxle crewaifocxle has no dependencies, so nothing enters your environment and nothing can conflict with the versions you already pin.
2Two lines, then name your agents
focxle.init() goes as early as you can put it, before the clients are built. Naming agents is what makes the per agent number exist at all.
import focxle
focxle.init()
from crewai import Agent, Crew, Task
with focxle.agent("research-crew"):
Crew(agents=[researcher], tasks=[task]).kickoff()3What you get
Printed when the process exits, or on demand with focxle.report():
focxle spend $12.88
--------------------------------------------------------
research-crew $12.88 (94 calls)
openai $11.40
google.serper.dev $1.48Model calls and HTTP APIs in the same number, per agent. That second part is what no LLM-only tool can show you: the search, scraping and embedding calls your agent makes are real money and they appear on a different bill.
4How this was checked
Verified through litellm, which is the layer CrewAI makes every model call through: the call was attributed and priced from the vendor's own usage numbers.
The test runs against a real HTTP server speaking the OpenAI chat-completions shape, answering on the vendor’s own hostname so the same code path production uses is the one under test. Pointing it at localhost would have exercised different code and could have passed while the real thing failed.
CrewAI routes model calls through litellm, so every provider it supports is counted, not just OpenAI.
Wrap the kickoff rather than individual agents to get one figure per crew, or name each agent separately if you want the split between them.
5What it does not do
It does not block anything. Out of the box it only measures, and it shows what a spending cap would have stopped so you can decide whether you want one before paying for one.
It is not a proxy. Your traffic never routes through us, so there is no new dependency on your live path and we never hold your prompts. It makes no network calls at all on the free path, which the test suite proves by deleting socket.socket and running anyway.
It fails open. If anything inside it breaks, your call still goes through and the failure is counted and printed at the end.
Other frameworks
The setup is the same everywhere, because nothing here is framework-specific.