AI Agent Infrastructure Engineer (Python)

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Full Time

SALARY

Based on experience and knowledge

HOURS PER WEEK

TBD

DATE UPDATED

May 24, 2026

JOB OVERVIEW

We're building scalable, multi-tenant agentic infrastructure — autonomous AI agents that connect to external APIs, execute real actions, and serve multiple users with strict isolation. This is not a chatbot wrapper. This is production agent infrastructure with tool execution, credential management, sandboxed compute, and real-time streaming.

You'll own the full stack — from the Python backend and agent runtime to the Next.js frontend.

---

WHAT YOU'LL BUILD

- AI agent runtime — Multi-turn reasoning with tool-use via Anthropic Claude Python SDK. No LangChain. Raw agent loop.
- Custom MCP servers — Python tool servers wrapping external APIs (ad platforms, email, productivity tools) using the MCP protocol.
- Multi-tenant backend — FastAPI service with per-tenant OAuth credential management, encrypted storage, and strict data isolation.
- Sandboxed execution — Docker-based isolated Python environments for per-tenant code execution, data processing, and report generation.
- Real-time streaming — WebSocket-based token streaming with tool call interleaving (FastAPI ? Next.js).
- Automation engine — Celery-based trigger system for scheduled tasks, alerts, and webhook-driven agent actions.
- Billing & usage metering — Stripe integration with tiered plans and per-tenant usage tracking.

---

TECH STACK

Python 3.12 | FastAPI | SQLAlchemy | Celery | Pydantic | Next.js | TypeScript | Tailwind | Anthropic Claude | MCP Protocol | PostgreSQL | Redis | Docker | Railway | Stripe

---

MUST-HAVE REQUIREMENTS

AI Agents
Built and shipped AI agents with tool-use in production. Understands ReAct loop, tool routing, context management. No frameworks — raw SDK only.

Python
Expert-level: async/await, FastAPI, SQLAlchemy 2.0, Pydantic, Celery.

LLM API
Anthropic Claude Python SDK — Messages API, tool_use, streaming, multi-turn.

OAuth & Security
OAuth 2.0 implementation in Python. Credential encryption. Secure token lifecycle management.

Multi-Tenant Architecture
Built systems with strict per-tenant data isolation, scoped queries, and tenant-aware middleware.

API Integrations
Experience integrating complex external APIs (ad platforms, CRMs, or similar) with pagination, rate limits, and error handling.

Frontend
Next.js / React / TypeScript — can build a polished chat UI, dashboards, and onboarding flows.

Real-Time
WebSocket or SSE streaming between a Python backend and React frontend.

---

NICE TO HAVE

- MCP (Model Context Protocol) server development
- Docker container management and sandbox isolation
- Celery + Redis for distributed task queues and scheduling
- Stripe billing (subscriptions, usage-based metering)
- pandas / matplotlib for data processing and visualization
- Google Ads API or Meta Ads API experience
- Prior startup / 0?1 product experience

---

WHAT MAKES THIS DIFFERENT

You're not wiring up a chatbot or plugging into a pre-built framework. You're architecting the agent runtime itself — tool routing, MCP server registry, per-tenant credential injection, sandboxed execution, and real-time streaming. If you've wanted to build agent infrastructure from the ground up, this is it.

---

DO NOT APPLY IF:

- You plan to use LangChain or LlamaIndex — we need raw SDK understanding, not framework abstraction.
- You want to build the backend in Node/TypeScript — the backend is Python, non-negotiable.
- Your experience is chatbots only — chatbot ? agent. We need tool-use with real external actions.
- You have no async Python experience — the entire backend is async FastAPI.
- You have no OAuth experience — credential management is the critical path.
- Your Python is weak — this is 80% Python work.
```

---

---

**JOB TYPE**
```
Full-Time / Part-Time (select both if option available)
```
Python, FastAPI, PostgreSQL, Docker, Redis, Next.js, TypeScript, WebSockets, Stripe, AI/ML, REST API
```

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0007
Controller Execution Time ( Jobseekers / Job )  0.0157
Total Execution Time  0.0170
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,505,864 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/AI-Agent-Infrastructure-Engineer-Python-1654085
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0096 seconds)  (Hide)
0.0004   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0004   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1654085
 LIMIT 1 
0.0010   SELECT *
FROM `employers`
WHERE `employer_id` = 704621
 LIMIT 1 
0.0008   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1654085
AND `misc`.`idIS NULL 
0.0004   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-08-07',ej.date_added) duration_daysDATEDIFF('2026-08-07',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_jobs ej WHERE e.employer_id ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-08-07',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1654085' 
0.0008   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1654085 
0.0011   UPDATE employer_jobs SET hit_counts '***May-24-2026=159***May-25-2026=109***May-26-2026=50***May-27-2026=28***May-28-2026=21***May-29-2026=5***May-30-2026=8***May-31-2026=10***Jun-01-2026=14***Jun-02-2026=15***Jun-03-2026=3***Jun-04-2026=6***Jun-06-2026=6***Jun-08-2026=4***Jun-09-2026=6***Jun-10-2026=3***Jun-11-2026=1***Jun-12-2026=5***Jun-14-2026=1***Jun-15-2026=1***Jun-16-2026=4***Jun-17-2026=1***Jun-18-2026=20***Jun-19-2026=14***Jun-20-2026=1***Jun-21-2026=1***Jun-22-2026=8***Jun-23-2026=3***Jun-24-2026=5***Jun-25-2026=1***Jun-26-2026=7***Jun-27-2026=4***Jun-29-2026=2***Jun-30-2026=4***Jul-01-2026=1***Jul-02-2026=2***Jul-04-2026=1***Jul-05-2026=3***Jul-06-2026=9***Jul-07-2026=2***Jul-09-2026=2***Jul-10-2026=1***Jul-11-2026=2***Jul-13-2026=1***Jul-16-2026=2***Jul-18-2026=3***Jul-21-2026=3***Jul-23-2026=1***Jul-24-2026=5***Jul-25-2026=7***Jul-26-2026=3***Jul-27-2026=4***Jul-30-2026=2***Jul-31-2026=4***Aug-01-2026=3***Aug-07-2026=1' WHERE job_id'1654085'  
0.0006   UPDATE employer_jobs SET monthly_hits '***May-2026=390***Jun-2026=140***Jul-2026=58***Aug-2026=4' WHERE job_id'1654085'  
0.0016   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1654085' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1654085 
0.0017   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '704621'
AND `date_added` >= '2022-06-08' 
0.0003   select from teasers 
0.0002   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)