{"id":50752144,"url":"https://github.com/agentjido/jido_managed_agents","last_synced_at":"2026-06-11T02:04:51.530Z","repository":{"id":350560725,"uuid":"1207377072","full_name":"agentjido/jido_managed_agents","owner":"agentjido","description":"Jido implementation of Managed Agents on Phoenix","archived":false,"fork":false,"pushed_at":"2026-06-08T13:10:17.000Z","size":538,"stargazers_count":23,"open_issues_count":1,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-06-08T14:19:11.968Z","etag":null,"topics":["application","elixir","example","jido","managed-agents","phoenix"],"latest_commit_sha":null,"homepage":"https://jido.run","language":"Elixir","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/agentjido.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2026-04-10T21:53:25.000Z","updated_at":"2026-06-08T13:10:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/agentjido/jido_managed_agents","commit_stats":null,"previous_names":["agentjido/jido_managed_agents"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/agentjido/jido_managed_agents","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agentjido%2Fjido_managed_agents","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agentjido%2Fjido_managed_agents/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agentjido%2Fjido_managed_agents/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agentjido%2Fjido_managed_agents/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/agentjido","download_url":"https://codeload.github.com/agentjido/jido_managed_agents/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agentjido%2Fjido_managed_agents/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34178824,"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-11T02:00:06.485Z","response_time":57,"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":["application","elixir","example","jido","managed-agents","phoenix"],"created_at":"2026-06-11T02:04:51.037Z","updated_at":"2026-06-11T02:04:51.524Z","avatar_url":"https://github.com/agentjido.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JidoManagedAgents\n\n## Status And Expectations: April 10, 2026, 5:00 p.m. CT\n\nThis repository is being released in public very early.\n\nAs of Friday, April 10, 2026 at 5:00 p.m. Central Time, Anthropic's Claude Managed Agents public materials are roughly 48 hours old. I wanted to respond quickly with a Jido-based alternative that the community can run, inspect, critique, and help build in the open.\n\nThis is pre-alpha code. I put together a plan, built an end-to-end first implementation, and shipped it before the normal QA, hardening, and polish cycle I would usually require for a public release. I would not normally release code in this state.\n\nI am releasing it anyway because managed agents are an active topic right now, and I think it is more useful for the community to react to a working first pass than to wait for a quieter and more polished launch. This initial version should be treated as exactly that: an initial version.\n\nSet expectations accordingly:\n\n- the current codebase has not been QA'd to the standard I expect for a normal release\n- rough edges, missing safeguards, and incomplete UX are expected in this first pass\n- the README will be the primary place for status notes, communication, and build-in-public updates in the near term\n- quality, tests, docs, and operator experience should improve in public from here\n\nJido has a commitment to quality as the ecosystem grows. The point of releasing this early is not to lower that bar. It is to let the community watch the bar get raised in real time and contribute to that process. If you want to help move this from pre-alpha prototype to a credible open source managed-agents platform, PRs are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md).\n\n`JidoManagedAgents` is a Phoenix application that packages a local managed-agents stack behind an Anthropic-shaped `/v1` API, an authenticated dashboard, seeded demo data, and runnable example assets.\n\nThe quickest way to explore it is:\n\n```bash\nmix setup\nmix phx.server\n```\n\n`mix setup` seeds a demo user plus example agents, environments, a vault, a credential, and archived sessions that make the dashboard useful immediately.\n\n## Quickstart\n\n### 1. Start the app\n\n```bash\nmix setup\nmix phx.server\n```\n\nOpen \u003chttp://localhost:4000\u003e.\n\n### 2. Sign in or create a user\n\nYou have two supported local paths:\n\n- Use the seeded demo account at \u003chttp://localhost:4000/sign-in\u003e\n  - email: `demo@example.com`\n  - password: `demo-pass-1234`\n- Or create your own browser user at \u003chttp://localhost:4000/register\u003e\n\n### 3. Create an API key\n\nGenerate a local `/v1` API key for any existing user:\n\n```bash\nmix run examples/scripts/create_api_key.exs --email demo@example.com\nexport JMA_API_KEY=PASTE_THE_PRINTED_KEY_HERE\n```\n\n### 4. Import an example agent and create an environment\n\nImport one of the sample `*.agent.yaml` definitions:\n\n```bash\nmix run examples/scripts/import_agent_yaml.exs \\\n  --email demo@example.com \\\n  examples/agents/coding-assistant.agent.yaml\n```\n\nCopy the printed `Agent ID` into `AGENT_ID`.\n\nCreate an environment from the example payload:\n\n```bash\ncurl -sS http://127.0.0.1:4000/v1/environments \\\n  -X POST \\\n  -H \"content-type: application/json\" \\\n  -H \"x-api-key: $JMA_API_KEY\" \\\n  -d @examples/environments/restricted-cloud.environment.json\n```\n\nCopy the returned `id` into `ENVIRONMENT_ID`.\n\nIf you want the unrestricted Anthropic-compatible networking shape instead, use [`examples/environments/unrestricted-cloud.environment.json`](examples/environments/unrestricted-cloud.environment.json).\n\n### 5. Configure a vault and MCP credential\n\nCreate a vault:\n\n```bash\ncurl -sS http://127.0.0.1:4000/v1/vaults \\\n  -X POST \\\n  -H \"content-type: application/json\" \\\n  -H \"x-api-key: $JMA_API_KEY\" \\\n  -d @examples/requests/demo-vault.create.json\n```\n\nCopy the returned `id` into `VAULT_ID`.\n\nCreate a demo static-bearer MCP credential inside that vault:\n\n```bash\ncurl -sS http://127.0.0.1:4000/v1/vaults/$VAULT_ID/credentials \\\n  -X POST \\\n  -H \"content-type: application/json\" \\\n  -H \"x-api-key: $JMA_API_KEY\" \\\n  -d @examples/requests/linear-static-bearer.credential.create.json\n```\n\n### 6. Start a session\n\nCreate the session:\n\n```bash\ncurl -sS http://127.0.0.1:4000/v1/sessions \\\n  -X POST \\\n  -H \"content-type: application/json\" \\\n  -H \"x-api-key: $JMA_API_KEY\" \\\n  -d \"{\\\"agent\\\":\\\"$AGENT_ID\\\",\\\"environment_id\\\":\\\"$ENVIRONMENT_ID\\\",\\\"title\\\":\\\"OSS Walkthrough\\\",\\\"vault_ids\\\":[\\\"$VAULT_ID\\\"]}\"\n```\n\nCopy the returned `id` into `SESSION_ID`.\n\nAppend the first user message:\n\n```bash\ncurl -sS http://127.0.0.1:4000/v1/sessions/$SESSION_ID/events \\\n  -X POST \\\n  -H \"content-type: application/json\" \\\n  -H \"x-api-key: $JMA_API_KEY\" \\\n  -d @examples/requests/user-message.event.json\n```\n\n### 7. Stream events and run the local session\n\nIn terminal A, open the stream:\n\n```bash\ncurl -N http://127.0.0.1:4000/v1/sessions/$SESSION_ID/stream \\\n  -H \"accept: text/event-stream\" \\\n  -H \"x-api-key: $JMA_API_KEY\"\n```\n\nIn terminal B, invoke the local runtime:\n\n```bash\nmix run examples/scripts/run_session.exs --email demo@example.com $SESSION_ID\n```\n\nThe stream replays persisted events and then stays open for live updates. Stop it with `Ctrl-C` when you have seen enough.\n\n### Quick smoke task\n\nIf you want one command that exercises the managed-agent runtime without driving the `/v1` API manually, use:\n\n```bash\nmix ma\n```\n\nThat task imports the sample coding assistant, ensures the restricted demo environment exists, creates a fresh session, appends a prompt, and runs `SessionRuntime.run/2` locally.\n\n### 8. Use the dashboard\n\nThe authenticated dashboard lives under `/console`:\n\n- `/console/agents/new`: create or edit agents, view API/YAML previews, and launch a local run inline\n- `/console/environments`: manage reusable environment templates\n- `/console/vaults`: manage vaults and write-only credentials\n- `/console/sessions`: inspect timelines, raw events, tool activity, and thread traces\n\nThe seeded demo data already includes archived happy-path and threaded sessions so `/console/sessions` is populated on a fresh clone.\n\n## Examples\n\nThe full example asset index is in [`examples/README.md`](examples/README.md).\n\n- `examples/agents/`: sample `*.agent.yaml` files\n- `examples/environments/`: reusable environment payloads\n- `examples/requests/`: curl-ready JSON payloads\n- `examples/env/llm-providers.env.example`: optional provider env vars\n- `examples/scripts/`: helper entrypoints for API keys, YAML import, and local session execution\n\n## Compatibility\n\n### Compatibility goals\n\n- `/v1` uses `x-api-key` authentication and Anthropic-style list/error envelopes for local clients.\n- Agent definitions import from and export to Anthropic-compatible `*.agent.yaml` files.\n- Environment payloads intentionally follow Anthropic's managed-environment config shape.\n- Session resources, event resources, vaults, and credentials are scoped per local user and persist durably in Postgres.\n- The dashboard mirrors the Console workflow: create resources, run a session, then inspect traces.\n\n### Intentional divergences from Anthropic's hosted product\n\n- This repository is a self-hosted Phoenix application, not a hosted control plane.\n- Browser users and API keys are local Ash authentication resources, not Anthropic account primitives.\n- Sessions execute through the local supervised Jido runtime.\n- There is no hosted `/v1` run endpoint in this repo today. Use the dashboard runner or [`examples/scripts/run_session.exs`](examples/scripts/run_session.exs) to execute persisted session input locally.\n- The current `/v1/environments` surface only accepts `config.type = \"cloud\"` and `config.networking.type = \"restricted\" | \"unrestricted\"`.\n- MCP credentials are stored in local vault records with write-only secret behavior instead of provider-managed secret stores.\n- The UI intentionally follows Anthropic's flow, not Anthropic branding.\n\n## Provider configuration\n\nReal provider-backed runs need credentials in the environment:\n\n- `ANTHROPIC_API_KEY`\n- `OPENAI_API_KEY`\n\nUse [`examples/env/llm-providers.env.example`](examples/env/llm-providers.env.example) as the starting point. If the app is not reachable at `http://127.0.0.1:$PORT`, set `JIDO_MANAGED_AGENTS_MCP_BASE_URL` as well.\nUse [`.env.example`](.env.example) if you want a root-level file to copy into your local shell workflow.\n\n## Jido stack\n\nThis project is configured with:\n\n- `jido` for the supervised agent runtime\n- `jido_ai` for tool-using AI agents\n- `jido_mcp` for exposing and consuming MCP tools\n- `jido_workspace` for per-agent files, snapshots, and shell sessions\n- `ash_jido` for generating `Jido.Action` modules from Ash resources\n\nThe app exposes an MCP endpoint at \u003chttp://localhost:4000/mcp\u003e and includes a local example tool published through `JidoManagedAgents.MCP.Server`.\n\nAuthentication and authorization stay Ash-native:\n\n- `User` actors use a small v1 role model: `member` and `platform_admin`\n- owner-scoped resources rely on `Ash.Policy.Authorizer` policies instead of controller branches\n- API keys authenticate as their owning user, so they inherit that user's permissions\n\n## API surfaces\n\n- `/v1`: Anthropic-style local API clients and examples\n- `/api/json`: internal Ash JSON:API surface for Ash-oriented workflows\n- `/mcp`: local MCP endpoint\n\n`/v1` accepts optional `anthropic-version` and `anthropic-beta` compatibility headers. `/api/json` is intended for internal tooling and may expose different media types and payload conventions than `/v1`.\n\n## Architecture notes\n\nThe platform foundation for domains, ownership, Postgres conventions, AshCloak/Cloak secret infrastructure, and normalized-vs-embedded Ash modeling lives in [`docs/ash_platform_architecture.md`](docs/ash_platform_architecture.md). The code-level source of truth for those decisions is `JidoManagedAgents.Platform.Architecture`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagentjido%2Fjido_managed_agents","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fagentjido%2Fjido_managed_agents","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagentjido%2Fjido_managed_agents/lists"}