I’ll leave the hardware and model picks to others. Two thoughts on the stack.
For many agents sharing one model, vLLM’s server fits: it does “Continuous batching of incoming requests, chunked prefill, prefix caching” and runs an “OpenAI-compatible API server”, so each agent is just a client. On trade execution, I feel the order tool should stay out of the LLM’s tool set until paper trading is done. When it goes in, put a deterministic gate in front of it in code, not in the prompt: an instrument allowlist, size limits, and a human approval step.
Disclosure: I maintain agent-airlock, an in-process Python decorator that validates tool-call arguments and applies an allow/deny tool policy, with an approver hook that refuses the call when no approver answers or it times out. Limits: an empty allowlist allows every tool, the tool call waits for approval, and there is no Slack transport built in, so you would wire that yourself.
https://github.com/sattyamjjain/agent-airlock