Project Info
Inspiration
Imagine this: you're out grabbing coffee, far from your laptop, when an urgent Slack ping comes from a C-suite executive: “Send me the key metrics for an impending board meeting”. Panic sets in...or does it? With Pokestrator, you simply one-shot text your request, and boom, those insights land in your phone within seconds. No panic, no delays, just pure efficiency! We built Pokestrator as a fully conversational, self-improving iMessage agent that weaves seamlessly into your favorite apps and tools. It's your on-the-go AI assistant, born from those all-too-real moments of mobile frustration. Pokestrator empowers you to stay productive anywhere at anytime, redefining how we interact with our digital world.
What it does
Pokestrator is your personal intelligent sidekick that not just responds but also evolves. It can handle anything, from simple queries to complicated tasks, whether it's analyzing a file on your computer from your phone, or messaging between 3rd parties like Stripe (asking about recent transactions), Twilio (sending texts/calls to a group of friends periodically), and Slack (automating alerts with root cause analysis), by autonomously building tools for itself. It was built to handle ambiguity. When faced with a challenge that cannot be handled by default, Pokestrator automatically recognizes the limitations and autonomously creates sub-agents to fill the void. The brain of the decision-making process is the orchestrator agent, first giving a token-based score to existing sub-agents based on the task determined by Poke. It then routes the request to the best existing match OR creates a new spec, all asynchronously in the background, ensuring that the chatting remains uninterrupted. It then spins up the headless sub-agent in the background, completes the task, and uses Poke's webhook to drop the final output straight into your messages app. This means that you get a personalized, evolving set of agents that can adapt to your needs, making your applications work for you like never before!
How we built it
We used Poke as our iMessage gateway, letting users interact through the messages app everyone already has. Behind the scenes, the Claude Agent SDK powers both the main Pokestrator orchestrator and every sub-agent it spawns, giving the reasoning power needed for complex task decomposition. We used FastMCP to keep communication quick between the interface and the orchestrator, while Render Postgres acts as our system's memory, storing every sub-agent spec so the platform gets smarter with each interaction. We set up automations within Poke that self-detect when it hits a limitation, triggering the autonomous Pokestrator agent-creation loop that makes this whole self-improving system tick. Lastly, to visualize the agent workflow, we created an interactive React app that shows the request flow between Poke, the Pokestrator agent, and the worker sub-agents.
Accomplishments we're proud of
We walked into this weekend with a wild idea and walked out with a working, end-to-end product that delivers on its promise. In under 36 hours, we built a system that actively expands its own capabilities by creating new sub-agents on the fly. We have ambitious goals for Pokestrator and have a solid roadmap forward for new features!
What's next
Next up is our Recursive Enhancement agent, which is a background sub-agent that analyzes logs from every sub-agent and automatically suggests fixes and improvements to the existing specs. Long term, we're building Pokestrator into an enterprise orchestrator tool that lets companies spin up reliable, task-specific agents just by describing what they need. As more use cases flow through the system, those agent templates will become incredibly refined and powerful. We also see a natural partnership with Poke itself, embedding our orchestration layer as the core intelligence for their platform. Hit us up if you have any cool suggestions!
Pokestrator
Asynchronous FastMCP server for Poke. It exposes exactly one tool: orchestrate.
The tool stores subagent definitions in PostgreSQL, selects an execution path,
and sends the final result back to Poke via webhook callback.
Runtime architecture
- MCP entrypoint:
src/server.py - Orchestrator + execution logic:
src/agent.py - Postgres persistence:
src/db.py - Poke callback sender:
src/poke.py - Templates:
src/templates/*.json
Flow
- Poke invokes MCP tool
orchestrate(task_description). - Server returns immediate ack (
{"status": "accepted", ...}) and starts a background job. - Orchestrator queries PostgreSQL
subagentstable. - It routes to one of:
match: run an existing DB subagenttemplate: load matching JSON templatebuild_new: persist a generated subagent and ask user to retry
- Subagent execution streams through Claude Agent SDK with headless permissions.
- Result is POSTed back to Poke callback.
Environment variables
DATABASE_URL: Render PostgreSQL connection string (required in deployment)POKE_API_KEY: callback auth token for PokePOKE_WEBHOOK_URL: optional override for Poke inbound webhook URLPOKE_DRY_RUN: set to1for local non-network callback testsPOKESTRATOR_AGENT_TIMEOUT: Claude execution timeout in seconds (default90)DB_POOL_MIN_SIZE: minimum DB connections in asyncpg pool (default1)DB_POOL_MAX_SIZE: maximum DB connections in asyncpg pool (default5)LOG_LEVEL: logging verbosity (defaultINFO)
Optional DB tuning:
Render compatibility note: postgres:// and postgresql:// URLs are both accepted.
Local setup
pip install -r requirements.txt
python src/server.py
Demo frontend (React)
A lightweight React dashboard is included under frontend/ to visualize live
orchestrator/subagent activity from the runtime log file.
cd frontend
npm install
npm run dev
Open http://localhost:5173 while the MCP server is running.
Notes:
- The frontend polls
/api/demo-stateevery ~1.2 seconds. - The API is served by Vite middleware and parses
logs/pokestrator.logby default. - Override log source with
POKESTRATOR_LOG_FILE(absolute path or workspace-relative).
Deploy (Render)
render.yaml already includes a web service and startup command.
- Add a Render PostgreSQL service to your project.
- Set one of these env vars on the web service:
DATABASE_URL,POSTGRES_URL,POSTGRESQL_URL,RENDER_DATABASE_URL,DB_URL. - Set
POKE_API_KEYandPOKE_WEBHOOK_URLin web service env. - Deploy.
Verification after deploy:
- In web logs:
PostgreSQL initialized and subagents table is ready(or acceptable:database init failed...if running degraded mode for local fallback). - In logs for live runs:
acceptedrequest logs followed by callback status.
Server endpoint should be reachable at:
https://<your-service>.onrender.com/mcp
Render/PostgreSQL checklist
- Confirm the Postgres service is
Runningin Render. - Copy the external/managed connection URL and set it as
DATABASE_URLin the web service. - Confirm migrations are auto-created on boot; no manual DDL is required.
- Use
POKE_DRY_RUN=1for local or Render logless smoke checks if needed.
Notes
- The repository is intentionally minimal; template and dynamic subagent behavior is a starting implementation.
build_newbranch persists generated subagents so future matching can improve quickly.
Analysis
View
Metric
- 5
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- HTMLIn code
- JavaScriptIn code
- PythonIn code
- ReactIn code
- PostgreSQLClaimed
5 of 6 appear in the indexed code. 1 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
201 KB
Source files
19
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
sabdulmajid/Pokestrator
27 files · 3.5 MB · @ 7830ba2
Structure
Interface
2 files · 7%Screens, components and styles rendered to the user.
Application logic
9 files · 33%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Markdown41%
- Python41%
- JavaScript13%
- CSS4%
- YAML0%
- HTML0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
requirements.txt
pypi · 6- asyncpg
- claude-agent-sdk
- fastmcp
- python-dotenv
- requests
- uvicorn
frontend/package.json
npm · 5- @xyflow/react
- react
- react-dom
- +2 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.