{"id":50571777,"url":"https://github.com/ghackenberg/agentbrick","last_synced_at":"2026-06-04T19:01:40.285Z","repository":{"id":337997339,"uuid":"1151474999","full_name":"ghackenberg/agentbrick","owner":"ghackenberg","description":"Build and refine LDraw models using LangChain agents and LangGraph workflows.","archived":false,"fork":false,"pushed_at":"2026-02-12T12:57:49.000Z","size":208,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-12T18:52:59.897Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ghackenberg.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","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":null,"dco":null,"cla":null}},"created_at":"2026-02-06T14:11:41.000Z","updated_at":"2026-02-12T12:57:52.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ghackenberg/agentbrick","commit_stats":null,"previous_names":["ghackenberg/agentbrick"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/ghackenberg/agentbrick","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghackenberg%2Fagentbrick","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghackenberg%2Fagentbrick/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghackenberg%2Fagentbrick/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghackenberg%2Fagentbrick/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ghackenberg","download_url":"https://codeload.github.com/ghackenberg/agentbrick/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghackenberg%2Fagentbrick/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33916321,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-04T02:00:06.755Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2026-06-04T19:01:39.652Z","updated_at":"2026-06-04T19:01:40.278Z","avatar_url":"https://github.com/ghackenberg.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# **AgentBrick** - From Chat to CAD\n\n![AgentBrick Logo](assets/preview.jpg)\n\n**AgentBrick** is an open-source framework designed to bridge the gap between natural language and the **LDraw** standard. By leveraging **LangChain agents** and **LangGraph workflows**, AgentBrick transforms user prompts into valid, structured LDraw models, allowing for iterative refinement through conversational AI.\n\n## User guide\n\n```python\nfrom agentbrick.workflows import main_workflow\n\nmain_workflow.invoke({\n  \"prompt\": \"House\", # Initial model description\n  \"size_x\": 5, # Size of the target voxel grid in x direction\n  \"size_y\": 5, # Size of the target voxel grid in y direction\n  \"size_z\": 5  # Size of the target voxel grid in z direction\n})\n```\n\n## Main workflow\n\n### Step 1: Model Description\n\nBased on the initial user input (including the size of the discrete voxel grid), the agent derives a detailed description of the target model.\n\n```mermaid\nflowchart LR\n  Promt[\"Prompt\"] --\u003e LLM\n  Size[\"Grid size (x, y, z)\"] --\u003e LLM\n  LLM --\u003e Description[\"Detailed model description\"]\n  \n  LLM@{ shape: cloud }\n```\n\n### Step 2: Component Graph\n\nThen, the agent extracts a list of logical components (i.e. groups of connected voxels) and their interfaces with other components (i.e. voxels).\n\n**Step 2.1: Extract components**\n\n```mermaid\nflowchart LR\n  Promt[\"Prompt\"] --\u003e LLM\n  Size[\"Grid size (x, y, z)\"] --\u003e LLM\n  Description[Detailed model description] --\u003e LLM\n  LLM --\u003e Components[List of components]\n\n  LLM@{ shape: cloud }\n```\n\n**Step 2.2: Extract interfaces**\n\n```mermaid\nflowchart LR\n  Promt[\"Prompt\"] --\u003e LLM\n  Size[\"Grid size (x, y, z)\"] --\u003e LLM\n  Description[Detailed model description] --\u003e LLM\n  Components[List of components] --\u003e LLM\n  LLM --\u003e Interfaces[List of interfaces]\n\n  LLM@{ shape: cloud }\n```\n\n**Step 2.3: Visualize components and interfaces**\n\n![](./assets/screenshots/component_graph.png)\n\n### Step 3: Voxel Model\n\nFinally, the agent iterates over the individual voxels of the voxel grid and determines the contents of each voxel (i.e. empty or assigned to component).\n\n**Step 3.1: Define voxel model**\n\n```mermaid\nflowchart LR\n  subgraph X[\"Define voxel content\"]\n    direction LR\n    Promt[\"Prompt\"] --\u003e LLM\n    Size[\"Grid size (x, y, z)\"] --\u003e LLM\n    Description[Detailed model description] --\u003e LLM\n    Components[List of components] --\u003e LLM\n    Interfaces[List of interfaces] --\u003e LLM\n    Grid[Current voxel model] --\u003e LLM\n    Cell[\"Next voxel coordinate (x, y, z)\"] --\u003e LLM\n    LLM --\u003e Content[\"Voxel content (empty | component)\"]\n  end\n\n  X --repeat--\u003e X\n\n  LLM@{ shape: cloud }\n\n  style Cell white-space:nowrap;\n  style Content white-space:nowrap;\n```\n\n**Step 3.2: Visualize voxel model**\n\n![](./assets/screenshots/voxel_model.png)\n\n## Project structure\n\n- [assets/](./assets/) - Project assets (icon, logo, social preview image, ...)\n- [sources/](./sources/) - Source code\n  - [agentbrick/](./sources/agentbrick/) - AgentBrick library\n    - [agents/](./sources/agentbrick/agents/) - Agent package\n      - [middlewares.py](./sources/agentbrick/agents/middlewares.py) - Middleware definitions (e.g. `log_model_call`)\n      - [responses.py](./sources/agentbrick/agents/responses.py) - Response definitions (i.e. pydantic schema classes)\n      - [tools.py](./sources/agentbrick/agents/tools.py) - Tool definitions (e.g. `calculate_sum`)\n      - [\\_\\_init__.py](./sources/agentbrick/agents/__init__.py) - Agent definitions (e.g. `generate_description_agent`)\n    - [workflows/](./sources/agentbrick/workflows/) - Workflow package\n      - [states.py](./sources/agentbrick/workflows/states.py) - State definitions\n      - [\\_\\_init__.py](./sources/agentbrick/workflows/__init__.py) - Workflow definitions\n    - [models.py](./sources/agentbrick/models.py) - Model definitions (e.g. llama 3.2)\n  - [main.py](./sources/main.py) - Main program\n- [requirements.txt](./requirements.txt) - Project dependencies\n\n## Developer guide\n\nInstall dependencies\n\n```sh\npip install -r requirements.txt\n```\n\nLinting\n\n```sh\nblack .\n```\n\nStatic type checking\n\n```sh\npyright\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fghackenberg%2Fagentbrick","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fghackenberg%2Fagentbrick","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fghackenberg%2Fagentbrick/lists"}