{"id":29152870,"url":"https://github.com/galliani/contextmax","last_synced_at":"2026-04-10T05:03:43.751Z","repository":{"id":301899265,"uuid":"996022790","full_name":"galliani/contextmax","owner":"galliani","description":"🚀 Browser-based tool for creating reusable sets of context for LLM. Improve response quality \u0026 time and reduce token usage. Privacy-first, works with any LLM (Claude, GPT-4, Gemini). Stop re-explaining your codebase to AI (and your team members).","archived":false,"fork":false,"pushed_at":"2025-06-29T14:00:42.000Z","size":29268,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-29T14:20:17.950Z","etag":null,"topics":["ai-tools","browser-based","claude-code","context-management","cursor","developer-tools","huggingface-transformers","llm","nuxtjs","privacy-first","prompt-engineering-tool","vue"],"latest_commit_sha":null,"homepage":"https://contextmax.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/galliani.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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}},"created_at":"2025-06-04T10:48:15.000Z","updated_at":"2025-06-29T14:17:22.000Z","dependencies_parsed_at":"2025-06-29T14:20:30.609Z","dependency_job_id":null,"html_url":"https://github.com/galliani/contextmax","commit_stats":null,"previous_names":["galliani/contextmax"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/galliani/contextmax","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/galliani%2Fcontextmax","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/galliani%2Fcontextmax/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/galliani%2Fcontextmax/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/galliani%2Fcontextmax/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/galliani","download_url":"https://codeload.github.com/galliani/contextmax/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/galliani%2Fcontextmax/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262876871,"owners_count":23378139,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["ai-tools","browser-based","claude-code","context-management","cursor","developer-tools","huggingface-transformers","llm","nuxtjs","privacy-first","prompt-engineering-tool","vue"],"created_at":"2025-07-01T01:03:19.283Z","updated_at":"2026-04-10T05:03:38.717Z","avatar_url":"https://github.com/galliani.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"public/logo-transparent.png\" alt=\"ContextMax Logo\" width=\"120\" height=\"120\" /\u003e\n  \n  # ContextMax\n\n  \u003cp align=\"center\"\u003e\n    \u003cstrong\u003eTell your LLM exactly what parts of your codebase matter for each task.\u003c/strong\u003e\n  \u003c/p\u003e\n\n  \u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"static/images/context-creation-cut-cropped-3x.gif\" alt=\"Creating Context Sets Demo using contextMax\" /\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\u003ch4 align=\"center\"\u003e\n  \u003ca href=\"https://contextmax.dev\"\u003eHome Page\u003c/a\u003e |\n  \u003ca href=\"https://curator.contextmax.dev\"\u003eTry it Yourself\u003c/a\u003e\n\u003c/h4\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/galliani/contextmax/blob/main/badges/coverage.svg\"\u003e\n    \u003cimg src=\"badges/coverage.svg\" alt=\"Coverage Status\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/galliani/contextmax/blob/main/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/galliani/contexmax\" alt=\"contextMax is released under the Mozilla Public License.\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/contextmax\"\u003e\n    \u003cimg src=\"https://img.shields.io/npm/v/contextmax\" alt=\"NPM Package\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://twitter.com/intent/follow?screen_name=_galihm\"\u003e\n    \u003cimg src=\"https://img.shields.io/twitter/follow/GetErgomake.svg?label=Follow%20@_galihm\" alt=\"Follow Me\" /\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n  ContextMax is a browser-based tool that lets you create context sets for LLMs. Define which files, functions, and workflows are relevant for specific tasks. Get assistance from the embedded LLM to assist in your search. Your code never leaves your browser.\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003e[Youtube Video] How curated context set helps LLM (click to view)\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n\nhttps://github.com/user-attachments/assets/b9d9ba24-2911-4e65-856b-218de3fc0cce\n\n\n\n## 🚀 Quick Start\n\n### [QUICKEST] Option 1: Use the hosted version\n\nGo to the [curation tool](https://curator.contextmax.dev).\n\n**Privacy Note**: Even on the hosted version, your code stays in your browser. No files are uploaded to our servers.\n\n### Option 2: Run it locally using the npm package (Recommended)\n\n```bash\nnpx contextmax\n# by default it runs on port 3000, but you can also specify the port like this: \nPORT=3005 npx contextmax\n```\n\nThis will automatically run the tool locally and open it on your browser.\n\n### Option 3: Development setup\n\n```bash\n# Clone and install\ngit clone https://github.com/galliani/contextmax.git\ncd contextmax\nnpm install\n\n# Start development server\nnpm run dev\n```\n\nOpen http://localhost:3000 in Chrome/Edge and start creating context sets!\n\n\u003cbr\u003e\n\n## What is ContextMax\n\nContextMax helps you create context sets - JSON files that tell your LLM which parts of your codebase to focus on. Instead of dumping your entire project into an LLM, you specify:\n- Which files are relevant\n- Which specific functions matter\n- How different parts connect (workflows)\n\nThink of it as creating a map for your LLM to navigate your codebase.\n\n\u003c!-- PLACEHOLDER: Screenshot of the main interface --\u003e\n![ContextMax Interface](static/images/MainInterface.png)\n\n\n### Key Features\n\n- **Visual Builder**: Create context sets through a UI instead of editing JSON\n- **100% Private**: Everything runs in your browser. No servers, no uploads\n- **Function-Level Context**: Point to specific functions, not just files\n- **Workflow Mapping**: Show how files and functions connect in your data flow\n- **Version Control Ready**: Output is a simple JSON file you can commit\n- **Team Sharing**: Everyone uses the same context definitions\n- **Local AI**: Built-in embeddings model for smart file suggestions\n- **Fast**: Uses IndexedDB caching and WebGPU when available\n\n\n### Try It Yourself: See the Difference\n\nWant proof that context sets work? The contextMax codebase itself uses context sets!\n\nFirst, clone the `contextmax` repo:\n\n```\ngit clone https://github.com/galliani/contextmax.git\n```\n\n**Then, to get the sense of how the curation tool works**\n\n- **Upload the `contextmax` repo** into the tool\n\n**Or to get the sense of how it works**\n\n- **Test with your LLM**:\n  - Ask: \"How does @context:embeddingsGeneration work?\"\n  - Ask: \"Explain the @context:contextCreation flow\"\n  - Compare with asking: \"How does embedding generation work in this codebase?\"\n\nYou'll see firsthand how context sets give your LLM laser focus on the right code, reducing token usage by ~80% while getting more accurate answers.\n\n\n\u003cbr\u003e\n\n## Why ContextMax\n\nLLMs often fail on real codebases because they:\n- Generate code that ignores your existing patterns\n- Miss critical dependencies and relationships\n- Suggest solutions that don't fit your architecture\n- Force you to repeatedly explain the same context\n\nEven when LLMs succeed, they waste time and tokens searching through your entire codebase, reading irrelevant files to piece together context. With ContextMax, your LLM starts with the exact files and functions it needs, understands the workflow from entry point to completion, and produces accurate results faster with fewer tokens.\n\nContextMax solves this by letting you define context once and reuse it. Your team gets consistent, accurate AI assistance that actually understands your code structure.\n\n\n### Without Context Sets\n\n```mermaid\ngraph TD\n    A[Prompt: Fix login bug] --\u003e B[LLM searches codebase]\n    B --\u003e C[Grep through all files]\n    C --\u003e D[Read many files]\n    D --\u003e E[Infer relationships]\n    E --\u003e F[Assume architecture]\n    F --\u003e G[Generate code]\n    G --\u003e H{Code works?}\n    H --\u003e|No| I[User provides more context]\n    I --\u003e B\n    H --\u003e|Yes| J[Done - 10k+ tokens used]\n```\n\n### With Manual File Lists\n\n```mermaid\ngraph TD\n    A[User lists: login.vue, auth.controller.ts, user.model.ts] --\u003e B[LLM reads files]\n    B --\u003e C[Reads complete files - 3k tokens]\n    C --\u003e D[No function targeting]\n    D --\u003e E[Identifies relevant functions]\n    E --\u003e F[Missing: middleware, validators, utils]\n    F --\u003e G[No workflow information]\n    G --\u003e H[Generate code]\n    H --\u003e I[User adds missing files]\n    I --\u003e J[Include more context]\n    J --\u003e B\n```\n\n### With Context Sets\n\n```mermaid\ngraph TD\n    A[Prompt: Fix login bug] --\u003e B[LLM loads context:UserAuth_Flow]\n    B --\u003e C[Read 5 specified files]\n    C --\u003e D[Target validatePassword function]\n    D --\u003e E[Follow workflow: login → validatePassword → generateToken]\n    E --\u003e F[Generate code using existing patterns]\n    F --\u003e G[Done - 2k tokens used]\n```\n\n\u003cbr\u003e\n\n## Architecture\n\nContextMax is built with a privacy-first, browser-based architecture where all processing happens in your browser. No code ever leaves your machine.\n\n### Key Architecture Highlights\n\n- **🔒 Privacy First**: All processing happens client-side using browser APIs\n- **🤖 AI-Enhanced**: Local embeddings model for intelligent code suggestions  \n- **⚡ Performance**: Multi-tier caching with IndexedDB and OPFS\n\n### System Architecture\n\n```mermaid\ngraph TB\n    subgraph \"User's Browser\"\n        UI[Vue/Nuxt UI Layer]\n        Store[Project Store\u003cbr/\u003euseProjectStore.ts]\n        \n        subgraph \"Processing Layer\"\n            Parser[Code Parser\u003cbr/\u003eRegex-based]\n            AI[Local AI Models\u003cbr/\u003eJina Embeddings + Flan-T5]\n            Analyzer[Project Analyzer\u003cbr/\u003euseProjectAnalysis.ts]\n            Suggestions[Smart Suggestions\u003cbr/\u003euseSmartContextSuggestions.ts]\n        end\n        \n        subgraph \"Storage Layer\"\n            OPFS[Origin Private\u003cbr/\u003eFile System]\n            IDB[IndexedDB Cache\u003cbr/\u003euseIndexedDBCache.ts]\n            FS[File System API\u003cbr/\u003euseFileSystem.ts]\n        end\n        \n        subgraph \"Context Management\"\n            ContextSets[Context Sets\u003cbr/\u003euseContextSets.ts]\n            Exporter[Context Exporter\u003cbr/\u003euseContextSetExporter.ts]\n        end\n    end\n    \n    LocalFiles[Local Project Files]\n    Export[context-sets.json]\n    \n    LocalFiles --\u003e FS\n    UI --\u003e Store\n    Store --\u003e Parser\n    Parser --\u003e AI\n    AI --\u003e Analyzer\n    Analyzer --\u003e Suggestions\n    Suggestions --\u003e Store\n    Store --\u003e OPFS\n    Store --\u003e IDB\n    Store --\u003e ContextSets\n    ContextSets --\u003e Exporter\n    Exporter --\u003e Export\n    \n    style UI fill:#e1f5fe\n    style AI fill:#fff9c4\n    style Export fill:#c8e6c9\n```\n\n### Data Flow\n\n```mermaid\ngraph LR\n    subgraph \"Input Phase\"\n        PF[Project Files]\n        User[User Actions]\n    end\n    \n    subgraph \"Processing Phase\"\n        Load[File Loader\u003cbr/\u003ebuildFilteredFileTree]\n        Parse[Parse \u0026 Index\u003cbr/\u003eprepareFilesForEmbedding]\n        Embed[Generate Embeddings\u003cbr/\u003egenerateEmbeddingsOnDemand]\n        Cache[Cache Manager\u003cbr/\u003estoreCachedEmbedding]\n        Search[Tri-Model Search\u003cbr/\u003eperformTriModelSearch]\n    end\n    \n    subgraph \"Context Creation Phase\"\n        Select[File/Function Selection\u003cbr/\u003eActiveContextComposer.vue]\n        Define[Define Workflows\u003cbr/\u003eWorkflowPointEditor.vue]\n        Relate[Set Relationships\u003cbr/\u003eChildContextsList.vue]\n        Functions[Function Specification\u003cbr/\u003eFunctionSelectorModal.vue]\n    end\n    \n    subgraph \"Output Phase\"\n        JSON[context-sets.json\u003cbr/\u003eExport with useContextSetExporter]\n        LLM[To Any LLM\u003cbr/\u003e@context:references]\n    end\n    \n    PF --\u003e Load\n    Load --\u003e Parse\n    Parse --\u003e Embed\n    Embed --\u003e Cache\n    Cache --\u003e Search\n    User --\u003e Select\n    Search --\u003e Select\n    Select --\u003e Functions\n    Functions --\u003e Define\n    Define --\u003e Relate\n    Relate --\u003e JSON\n    JSON --\u003e LLM\n    \n    style Search fill:#fff9c4\n    style JSON fill:#c8e6c9\n```\n\n### Component Architecture\n\n```mermaid\ngraph TD\n    App[App.vue]\n    App --\u003e Header[ProjectHeader.vue\u003cbr/\u003eExport Controls]\n    App --\u003e FileExplorer[ProjectFileBrowser]\n    App --\u003e ContextManager[ContextSetListManager.vue\u003cbr/\u003eContext Creation]\n    App --\u003e ActiveContext[ActiveContextComposer.vue\u003cbr/\u003eContext Specification]\n    \n    FileExplorer --\u003e Search[Search.vue\u003cbr/\u003eFile Search]\n    FileExplorer --\u003e Assisted[AssistedCuration.vue\u003cbr/\u003eAI-Assisted Search]\n    \n    ContextManager --\u003e AddNew[AddNewContext.vue\u003cbr/\u003eCreate New Context]\n    ContextManager --\u003e ContextList[Context List\u003cbr/\u003eManage Existing]\n    \n    ActiveContext --\u003e FilesList[FilesList.vue\u003cbr/\u003eSelected Files]\n    ActiveContext --\u003e Workflows[WorkflowPointEditor.vue\u003cbr/\u003eDefine Flows]\n    ActiveContext --\u003e Functions[FunctionSelectorModal.vue\u003cbr/\u003ePick Functions]\n    ActiveContext --\u003e ChildContexts[ChildContextsList.vue\u003cbr/\u003eDependencies]\n    \n    subgraph \"Core Composables\"\n        Store[useProjectStore\u003cbr/\u003eCentral State]\n        FS[useFileSystem\u003cbr/\u003eFile Access]\n        Export[useContextSetExporter\u003cbr/\u003eJSON Export]\n        AI[useSmartContextSuggestions\u003cbr/\u003eAI Features]\n        Cache[useIndexedDBCache\u003cbr/\u003ePerformance]\n        Analysis[useProjectAnalysis\u003cbr/\u003eCode Analysis]\n        Sets[useContextSets\u003cbr/\u003eContext Logic]\n    end\n    \n    Header -.-\u003e Export\n    FileExplorer -.-\u003e FS\n    FileExplorer -.-\u003e AI\n    ContextManager -.-\u003e Store\n    ActiveContext -.-\u003e Store\n    ActiveContext -.-\u003e Sets\n    Assisted -.-\u003e AI\n    AI -.-\u003e Cache\n    \n    style Header fill:#e1f5fe\n    style Assisted fill:#fff9c4\n    style ActiveContext fill:#f3e5f5\n```\n\n### Context Processing Flow\n\n```mermaid\nsequenceDiagram\n    participant User\n    participant UI\n    participant Store as useProjectStore\n    participant AI as AI Models\n    participant Cache as IndexedDB\n    participant Export as Exporter\n    \n    User-\u003e\u003eUI: Select project folder\n    UI-\u003e\u003eStore: Load files via useFileSystem\n    Store-\u003e\u003eCache: Check cached embeddings\n    \n    alt No cache exists\n        Store-\u003e\u003eAI: prepareFilesForEmbedding()\n        AI-\u003e\u003eAI: generateEmbeddingsOnDemand()\n        AI-\u003e\u003eCache: storeCachedEmbedding()\n    end\n    \n    User-\u003e\u003eUI: Search for files/functions\n    UI-\u003e\u003eAI: performTriModelSearch()\n    AI--\u003e\u003eUI: Return suggestions\n    \n    User-\u003e\u003eUI: Create context set\n    UI-\u003e\u003eStore: createContextSet()\n    \n    User-\u003e\u003eUI: Add files to context\n    UI-\u003e\u003eStore: Add file references\n    \n    User-\u003e\u003eUI: Specify functions\n    UI-\u003e\u003eStore: Add functionRefs\n    \n    User-\u003e\u003eUI: Define workflows\n    UI-\u003e\u003eStore: Store workflow start/end\n    \n    User-\u003e\u003eUI: Set relationships (uses)\n    UI-\u003e\u003eStore: Update context dependencies\n    \n    User-\u003e\u003eUI: Export context\n    UI-\u003e\u003eExport: Generate JSON\n    Export-\u003e\u003eStore: Gather all contexts\n    Export-\u003e\u003eUser: context-sets.json\n    \n    Note over User: Use @context:name with any LLM\n```\n\n\n\u003cbr\u003e\n\n## How It Works\n\n1. **Open your project folder** - Uses File System Access API (Chrome/Edge)\n2. **Create context sets** - Name them based on features or workflows (e.g., \"UserAuth_Flow\")\n3. **Add files and functions** - Pick whole files or specific functions\n4. **Define workflows** - Show how code flows from entry point to completion\n5. **Export context-sets.json** - Use with Cursor, Continue, or any LLM tool\n\n\u003c!-- PLACEHOLDER: Step-by-step screenshots --\u003e\n### Visual Walkthrough\n| Step | Screenshot |\n|------|------------|\n| 1. Project Loading | ![Load Project](REPLACE_WITH_STEP1_SCREENSHOT_URL) |\n| 2. Context Creation | ![Create Context](REPLACE_WITH_STEP2_SCREENSHOT_URL) |\n| 3. Function Selection | ![Select Functions](REPLACE_WITH_STEP3_SCREENSHOT_URL) |\n| 4. Workflow Definition | ![Define Workflow](REPLACE_WITH_STEP4_SCREENSHOT_URL) |\n| 5. Export JSON | ![Export JSON](REPLACE_WITH_STEP5_SCREENSHOT_URL) |\n\n\n\u003cbr\u003e\n\n## The context-sets.json Format\n\nContextMax generates a single JSON file you can commit to your repo:\n\n```json\n{\n  \"schemaVersion\": \"1.0\",\n  \"projectName\": \"MyProject\",\n  \"filesIndex\": {\n    \"file_abc12345\": {\n      \"path\": \"src/auth/login.ts\",\n      \"contexts\": [\"context:UserAuth_Flow\"]\n    }\n  },\n  \"sets\": {\n    \"context:UserAuth_Flow\": {\n      \"description\": \"Complete user authentication flow\",\n      \"files\": [\n        \"file_abc12345\",\n        {\n          \"fileRef\": \"file_xyz67890\",\n          \"comment\": \"User model with authentication methods\",\n          \"functionRefs\": [\n            { \"name\": \"validatePassword\", \"comment\": \"Validates user password\" }\n          ]\n        }\n      ],\n      \"workflows\": [{\n        \"start\": {\n          \"fileRef\": \"file_abc12345\",\n          \"function\": \"login\",\n          \"protocol\": \"http\",\n          \"method\": \"POST\"\n        },\n        \"end\": {\n          \"fileRef\": \"file_xyz67890\",\n          \"function\": \"generateToken\",\n          \"protocol\": \"function\"\n        }\n      }],\n      \"uses\": [\"context:Database_Connection\"],\n      \"systemBehavior\": {\n        \"processing\": {\n          \"mode\": \"synchronous\"\n        }\n      }\n    }\n  }\n}\n```\n\n\n## Tech Stack\n\n- Nuxt.js 3 + Vue 3 + TypeScript\n- Tailwind CSS v4, Reka UI, shadcn-nuxt\n- @huggingface/transformers (WebGPU)\n- Regex-based code parsing\n- File System Access API, OPFS, IndexedDB\n- Vitest\n\n\n\u003cbr\u003e\n\n## Local AI Models\n\nContextMax runs AI models directly in your browser:\n\n### Embeddings: `jinaai/jina-embeddings-v2-base-code` (~300MB)\n- Semantic code search (finds code by meaning, not just text)\n- Auto-classifies files (entry-point, core-logic, helper, config)\n- Suggests related files and patterns\n- Uses WebGPU for speed\n\nModels download automatically on first use. For programmatic access:\n\n```typescript\nconst { getModel } = useLLMLoader()\nconst embeddingsModel = await getModel('embeddings')\nconst embeddings = await embeddingsModel('your code snippet')\n```\n\nAll processing happens locally. No external API calls.\n\n\n\u003cbr\u003e\n\n## Development\n\n### Requirements\n\n- Node.js 18+\n- Chrome/Edge (for File System Access API)\n\n### Commands\n\n```bash\n# Development\nnpm run dev          # Start dev server on port 3000\nnpm run dev:clean    # Clean start (removes .nuxt cache)\nnpm run dev:fresh    # Fresh start (clean + reinstall)\n\n# Building\nnpm run generate     # Build for production\n\n# Testing\nnpm run test         # Run tests\nnpm run test:coverage # Run tests with coverage report\nnpm run coverage:badge # Generate coverage badge\n```\n\n### Browser Compatibility\n\nContextMax requires browsers that support:\n- File System Access API (Chrome 86+, Edge 86+)\n- WebGPU (for AI acceleration)\n- IndexedDB and OPFS\n\n\n\u003cbr\u003e\n\n## Contributing\n\nWe welcome contributions from anyone. Please report bugs via GitHub Issues with reproduction steps.\n\n\n\u003cbr\u003e\n\n## License\n\nMozilla Public License 2.0 - see [LICENSE](LICENSE)\n\n---\n\nMade by [Galih](https://github.com/galliani) from [51 New York](https://51newyork.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgalliani%2Fcontextmax","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgalliani%2Fcontextmax","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgalliani%2Fcontextmax/lists"}