{"id":42268521,"url":"https://github.com/jwwelbor/agentmap","last_synced_at":"2026-03-01T23:09:42.442Z","repository":{"id":292252814,"uuid":"979054904","full_name":"jwwelbor/AgentMap","owner":"jwwelbor","description":"AgentMap: Build and deploy LangGraph workflows from CSV files. Create complex LLM agent graphs without coding, convert simple spreadsheets into powerful AI agents, and orchestrate multi-agent systems with ease. Integrates with OpenAI, Anthropic, and Google AI models. Includes CLI and FastAPI server for quick deployment.","archived":false,"fork":false,"pushed_at":"2026-02-23T02:56:43.000Z","size":17981,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-02-23T03:47:53.588Z","etag":null,"topics":["agentic-ai","langgraph","langgraph-python","llm-framework"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jwwelbor.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-05-06T23:40:22.000Z","updated_at":"2026-02-23T02:04:11.000Z","dependencies_parsed_at":"2025-07-30T06:13:45.432Z","dependency_job_id":"e3ec5e11-8f8a-4535-8979-da9369066735","html_url":"https://github.com/jwwelbor/AgentMap","commit_stats":null,"previous_names":["jwwelbor/agentmap"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/jwwelbor/AgentMap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwwelbor%2FAgentMap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwwelbor%2FAgentMap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwwelbor%2FAgentMap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwwelbor%2FAgentMap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jwwelbor","download_url":"https://codeload.github.com/jwwelbor/AgentMap/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwwelbor%2FAgentMap/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29987656,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T22:42:38.399Z","status":"ssl_error","status_checked_at":"2026-03-01T22:41:51.863Z","response_time":124,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agentic-ai","langgraph","langgraph-python","llm-framework"],"created_at":"2026-01-27T07:01:36.173Z","updated_at":"2026-03-01T23:09:42.437Z","avatar_url":"https://github.com/jwwelbor.png","language":"Python","readme":"# AgentMap\n\nBuild and deploy LangGraph agentic workflows from CSV files.\n\nAgentMap is a declarative orchestration framework that transforms simple CSV files into powerful AI agent workflows. Instead of writing hundreds of lines of boilerplate code for multi-agent systems, you define entire workflows in a spreadsheet format.\n\n## Why AgentMap?\n\n- **Declarative Workflows**: Define complex multi-agent workflows in readable CSV format\n- **Rapid Prototyping**: Iterate quickly without recompiling or redeploying\n- **Multiple LLM Providers**: Built-in support for OpenAI, Anthropic Claude, and Google Gemini\n- **Flexible Deployment**: Run from CLI, embed in Python code, or serve via FastAPI\n- **Production Ready**: Includes execution tracking, memory management, and intelligent LLM routing\n\n## Installation\n\n```bash\n# Basic installation\npip install agentmap\n\n# With LLM support (OpenAI, Anthropic, Google)\npip install agentmap[llm]\n\n# With storage support (Firebase, Chroma, document processing)\npip install agentmap[storage]\n\n# Everything included\npip install agentmap[all]\n```\n\n**Requirements**: Python 3.11+\n\n## Quick Start\n\n### 1. Initialize Configuration\n\n```bash\nagentmap init-config\n```\n\nThis creates three files in your current directory:\n\n| File | Purpose |\n|------|---------|\n| `agentmap_config.yaml` | Main configuration (LLM providers, paths, memory, execution) |\n| `agentmap_config_storage.yaml` | Storage configuration (CSV, JSON, vector DBs, cloud storage) |\n| `hello_world.csv` | Sample workflow to get started |\n\n### 2. Configure Your LLM Provider\n\nEdit `agentmap_config.yaml` and add your API key:\n\n```yaml\nllm:\n  openai:\n    api_key: \"your-openai-key\"  # Or use env var: OPENAI_API_KEY\n    model: \"gpt-4o-mini\"\n\n  anthropic:\n    api_key: \"your-anthropic-key\"  # Or use env var: ANTHROPIC_API_KEY\n    model: \"claude-sonnet-4-6\"\n\n  google:\n    api_key: \"your-google-key\"  # Or use env var: GOOGLE_API_KEY\n    model: \"gemini-2.5-flash\"\n```\n\nYou can also set API keys via environment variables:\n\n```bash\nexport OPENAI_API_KEY=\"your-key\"\nexport ANTHROPIC_API_KEY=\"your-key\"\nexport GOOGLE_API_KEY=\"your-key\"\n```\n\n### 3. Run a Sample Workflow\n\n```bash\n# Run the hello world example\nagentmap run hello_world.csv\n\n# With formatted output\nagentmap run hello_world.csv --pretty\n\n# With initial state\nagentmap run hello_world.csv --state '{\"name\": \"Alice\"}' --pretty\n```\n\n## Configuration Reference\n\n### Main Configuration (`agentmap_config.yaml`)\n\n| Section | Purpose |\n|---------|---------|\n| `paths` | Directory locations for agents, functions, and workflows |\n| `llm` | LLM provider settings (API keys, models, parameters) |\n| `memory` | Conversation memory settings |\n| `execution` | Tracking and success policies |\n| `routing` | Intelligent LLM routing configuration |\n| `logging` | Log levels and output configuration |\n\n**Path Configuration:**\n\n```yaml\npaths:\n  custom_agents: \"agentmap_data/custom_agents\"\n  functions: \"agentmap_data/custom_functions\"\n  csv_repository: \"agentmap_data/workflows\"\n```\n\n**Memory Configuration:**\n\n```yaml\nmemory:\n  enabled: true\n  default_type: \"buffer_window\"  # buffer, buffer_window, summary, token_buffer\n  buffer_window_size: 5\n  max_token_limit: 2000\n```\n\n### Storage Configuration (`agentmap_config_storage.yaml`)\n\n```yaml\ncore:\n  base_directory: \"agentmap_data/data\"\n\ncsv:\n  enabled: true\n  auto_create_files: true\n  collections:\n    users: \"csv/users.csv\"\n    products: \"csv/products.csv\"\n\njson:\n  enabled: true\n  auto_create_files: true\n```\n\n## Workflow CSV Format\n\nWorkflows are defined in CSV files with these columns:\n\n| Column | Description |\n|--------|-------------|\n| `graph_name` | Identifies the workflow graph |\n| `node_name` | Unique node identifier |\n| `agent_type` | Type of agent (input, echo, openai, claude, etc.) |\n| `next_node` | Next node on success |\n| `on_failure` | Next node on failure |\n| `prompt` | Instruction or message for the agent |\n| `input_fields` | Fields consumed from state (pipe-separated) |\n| `output_field` | Field name for storing output |\n\n**Example (`hello_world.csv`):**\n\n```csv\ngraph_name,node_name,agent_type,next_node,on_failure,prompt,input_fields,output_field\nHelloWorld,Start,input,PrintResult,HandleError,\"Hello world! What is your name?\",,name\nHelloWorld,PrintResult,echo,,,\"Hello {name}. Welcome to AgentMap!\",name,result\nHelloWorld,HandleError,echo,,,Error occurred\n```\n\n## CLI Commands\n\n### Workflow Execution\n\n```bash\n# Run a workflow\nagentmap run my_workflow.csv\nagentmap run my_workflow.csv --state '{\"input\": \"value\"}' --pretty --verbose\n\n# Resume a suspended workflow\nagentmap resume \u003cthread_id\u003e \u003caction\u003e --data '{\"key\": \"value\"}'\n```\n\n### Configuration \u0026 Setup\n\n```bash\n# Initialize configuration files\nagentmap init-config\nagentmap init-config --force  # Overwrite existing\n\n# Initialize API keys\nagentmap auth init --config agentmap_config.yaml\n\n# Check system dependencies\nagentmap diagnose\n\n# Refresh provider cache\nagentmap refresh --force\n```\n\n### Validation \u0026 Scaffolding\n\n```bash\n# Validate CSV structure\nagentmap validate workflow.csv\n\n# Generate agent templates\nagentmap scaffold workflow.csv --output agents/ --overwrite\n```\n\n### HTTP Server\n\n```bash\n# Start the API server\nagentmap serve --host 0.0.0.0 --port 8000\n\n# With auto-reload for development\nagentmap serve --port 8000 --reload\n```\n\nAPI documentation available at `http://localhost:8000/docs`\n\n## Interfaces\n\nAgentMap provides three ways to execute workflows:\n\n### 1. Command Line Interface\n\nBest for quick testing and scripting:\n\n```bash\nagentmap run my_workflow.csv --state '{\"user_id\": 123}' --pretty\n```\n\n### 2. Python API\n\nBest for embedding in applications:\n\n```python\nfrom agentmap import ensure_initialized, run_workflow\n\n# Initialize once at startup\nensure_initialized()\n\n# Execute a workflow\nresult = run_workflow(\n    graph_name=\"my_workflow::MyGraph\",\n    inputs={\"user_message\": \"Hello\"},\n    config_file=\"agentmap_config.yaml\"\n)\n\nif result.get(\"success\"):\n    print(result.get(\"outputs\"))\n```\n\n**Available Functions:**\n\n```python\nfrom agentmap import (\n    ensure_initialized,   # Initialize the runtime\n    run_workflow,         # Execute a workflow\n    resume_workflow,      # Resume suspended execution\n    list_graphs,          # List available workflows\n    inspect_graph,        # Get graph structure\n    validate_workflow,    # Validate CSV\n)\n```\n\n### 3. FastAPI HTTP Server\n\nBest for microservices and REST APIs:\n\n**Start the Server:**\n\n```bash\nagentmap serve --host 0.0.0.0 --port 8000\n```\n\n**Execute via HTTP:**\n\n```bash\n# Execute a workflow\ncurl -X POST \"http://localhost:8000/execution/my_workflow.csv%3A%3AMyGraph\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"inputs\": {\"message\": \"Hello\"}}'\n\n# List workflows\ncurl http://localhost:8000/workflows\n\n# Resume suspended execution\ncurl -X POST http://localhost:8000/resume/\u003cthread_id\u003e \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"action\": \"approve\", \"data\": {}}'\n```\n\n**Embed in Existing FastAPI App:**\n\n```python\nfrom fastapi import FastAPI\nfrom agentmap.deployment.http.api.server import create_sub_application\n\napp = FastAPI(title=\"My Application\")\n\n# Mount AgentMap routes\nagentmap_app = create_sub_application(\n    config_file=\"agentmap_config.yaml\",\n    prefix=\"/agentmap\"\n)\napp.mount(\"/agentmap\", agentmap_app)\n\n# AgentMap endpoints now at /agentmap/execute, /agentmap/workflows, etc.\n```\n\n## Built-in Agent Types\n\nAgentMap includes 20+ agent types:\n\n| Category | Agents |\n|----------|--------|\n| **Core** | `default`, `echo`, `input`, `branching`, `success`, `failure` |\n| **LLM** | `openai`, `claude`, `gemini` |\n| **Storage** | `csv_reader`, `csv_writer`, `json_reader`, `json_writer`, `file_reader`, `file_writer` |\n| **Advanced** | `orchestrator`, `summary`, `tool`, `graph` (sub-workflows), `suspend` |\n\n## Example: LLM Chatbot\n\n```csv\ngraph_name,node_name,agent_type,input_fields,output_field,next_node,prompt\nChatBot,GetInput,input,,user_input,Respond,\"How can I help you?\"\nChatBot,Respond,openai,user_input|chat_memory,response,GetInput,\"You are a helpful assistant. User says: {user_input}\"\n```\n\nRun it:\n\n```bash\nagentmap run chatbot.csv --pretty\n```\n\n## Example: Conditional Workflow\n\n```csv\ngraph_name,node_name,agent_type,input_fields,output_field,next_node,on_failure,prompt\nReviewFlow,Start,input,,request,Classify,,\"Enter your request:\"\nReviewFlow,Classify,branching,request,decision,Approve,Reject,\nReviewFlow,Approve,default,request,result,,,\"Request approved: {request}\"\nReviewFlow,Reject,default,request,result,,,\"Request rejected: {request}\"\n```\n\n## Useful Commands\n\n```bash\n# Check version\nagentmap --version\n\n# Get help\nagentmap --help\nagentmap run --help\n```\n\n## Project Links\n\n- **Documentation**: https://jwwelbor.github.io/AgentMap\n- **Repository**: https://github.com/jwwelbor/AgentMap\n- **Issue Tracker**: https://github.com/jwwelbor/AgentMap/issues\n- **Changelog**: https://github.com/jwwelbor/AgentMap/blob/main/CHANGELOG.md\n\n## License\n\nThis project is licensed under the MIT License.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjwwelbor%2Fagentmap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjwwelbor%2Fagentmap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjwwelbor%2Fagentmap/lists"}