{"id":50342790,"url":"https://github.com/mainro/adjent","last_synced_at":"2026-05-29T18:01:20.522Z","repository":{"id":358732005,"uuid":"1237038506","full_name":"MainRo/adjent","owner":"MainRo","description":"sdd with low tune, high gain","archived":false,"fork":false,"pushed_at":"2026-05-18T20:33:30.000Z","size":54,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-18T22:41:33.002Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MainRo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-05-12T20:19:26.000Z","updated_at":"2026-05-18T20:33:34.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/MainRo/adjent","commit_stats":null,"previous_names":["mainro/adjent"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/MainRo/adjent","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MainRo%2Fadjent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MainRo%2Fadjent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MainRo%2Fadjent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MainRo%2Fadjent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MainRo","download_url":"https://codeload.github.com/MainRo/adjent/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MainRo%2Fadjent/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33664259,"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-05-29T02:00:06.066Z","response_time":107,"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-05-29T18:01:19.525Z","updated_at":"2026-05-29T18:01:20.512Z","avatar_url":"https://github.com/MainRo.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Adjent\n\nAdjent is a task manager designed to orchestrate complex software engineering tasks with AI agents. It provides a structured environment for agents to interact with project artifacts (inputs, outputs, and logs) in a scoped and reproducible manner.\n\n## Core Concepts\n\n- **Projects**: The top-level container for a specific codebase or goal.\n- **Tasks**: Discrete units of work within a project (e.g., \"implement-mcp-server\").\n- **Rounds**: Iterative attempts at a task. Each round has its own set of artifacts.\n- **Artifacts**: Files categorized into `inputs` (read-only for agents), `outputs` (agent results), and `logs` (execution trails).\n- **Actions**: Specific requests sent to an agent to perform work on a round.\n\n### Workflow \u0026 Artifact Flow\n\nThe following diagram illustrates a typical iterative session where an agent moves from refinement to development across multiple rounds. Note how `outputs` from one round become `inputs` for the next.\n\n```mermaid\ngraph TD\n    subgraph R0 [Round 0: Refinement]\n        inputsR0[inputs]\n        outputsR0[outputs]\n        logsR0[logs]\n        inputsR0 --\u003e|instructions.md| AG0[AI Agent]\n        AG0 --\u003e|plan.md| outputsR0\n        AG0 --\u003e|session.md| logsR0\n    end\n\n    inputsR0 -.-\u003e|Copied| inputsR1\n    outputsR0 -.-\u003e|Copied| inputsR1\n\n    subgraph R1 [Round 1: Implementation]\n        inputsR1[inputs]\n        outputsR1[outputs]\n        logsR1[logs]\n        File@{ shape: doc, label: \"work environment\"}\n        inputsR1 --\u003e|instructions.md| AG1[AI Agent]\n        inputsR1 --\u003e|plan.md| AG1[AI Agent]\n        AG1 --\u003e|execution.md| outputsR1\n        AG1 --\u003e|code.rs| File\n        AG1 --\u003e|logs| logsR1\n    end\n\n    inputsR1 -.-\u003e|Copied| inputsR2\n    outputsR1 -.-\u003e|Copied| inputsR2\n\n    subgraph R2 [Round 2: Fix / Polish]\n        inputsR2[inputs]\n        outputsR2[outputs]\n        logsR2[logs]\n        FileR2@{ shape: doc, label: \"work environment\" }\n        inputsR2 --\u003e|instructions.md| AG2[AI Agent]\n        inputsR2 --\u003e|plan.md| AG2[AI Agent]\n        AG2 --\u003e|execution.md| outputsR2\n        AG2 --\u003e|code.rs| FileR2\n        AG2 --\u003e|logs| logsR2\n    end\n```\n\n## Getting Started\n\n### Installation\n\n```bash\ncargo build --release\n```\n\n### Starting the Server\n\nThe Adjent server provides both a REST API for management and an MCP endpoint for agents.\n\n```bash\n# Start on default port 8080\n./target/release/adjent server start\n```\n\n### Starting the Manager\n\nThe manager is a long-running process that polls the server for pending actions in a project and spawns an agent to process them.\n\n```bash\n# Start the manager for a project\n./target/release/adjent manage --project your-project-id --agent \"your-agent-command\"\n```\n\nThe `agent-command` is the command used to start your AI agent (e.g., `claude` or `gemini-cli`). The manager automatically spawns agents to work on tasks.\n\n## Agent Configuration\n\nAdjent exposes an MCP server via SSE (Server-Sent Events) at `/mcp`. Agents must provide scoping headers to identify which project and action they are working on.\n\nWhen the manager spawns an agent, it sets the `ADJENT_PROJECT_ID` and `ADJENT_ACTION_ID` environment variables. Agent configurations should use these variables to set the required headers.\n\n### 1. Claude Code\n\nTo use Adjent with Claude Code, add it as an MCP server in your configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"adjent\": {\n      \"type\": \"sse\",\n      \"url\": \"http://localhost:8080/mcp\",\n      \"headers\": {\n        \"X-Adjent-ProjectId\": \"${ADJENT_PROJECT_ID}\",\n        \"X-Adjent-ActionId\": \"${ADJENT_ACTION_ID}\"\n      }\n    }\n  }\n}\n```\n\n### 2. Gemini CLI\n\nFor `gemini-cli`, you can configure the MCP server in your `settings.json` or equivalent config file:\n\n```json\n{\n  \"mcpServers\": {\n    \"adjent\": {\n      \"url\": \"http://localhost:8080/mcp\",\n      \"headers\": {\n        \"X-Adjent-ProjectId\": \"${ADJENT_PROJECT_ID}\",\n        \"X-Adjent-ActionId\": \"${ADJENT_ACTION_ID}\"\n      }\n    }\n  }\n}\n```\n\n## Scoping Architecture\n\nAdjent strictly scopes agent actions. An agent connected with a specific `X-Adjent-ActionId` can only see and modify artifacts associated with the task and round linked to that action. This ensures that agents don't accidentally leak context between different tasks or projects.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmainro%2Fadjent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmainro%2Fadjent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmainro%2Fadjent/lists"}