{"id":46932582,"url":"https://github.com/rustic-ai/forge","last_synced_at":"2026-04-01T18:47:18.040Z","repository":{"id":343193502,"uuid":"1171609575","full_name":"rustic-ai/forge","owner":"rustic-ai","description":null,"archived":false,"fork":false,"pushed_at":"2026-03-27T05:18:33.000Z","size":12305,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-27T17:42:03.070Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"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/rustic-ai.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":"SECURITY.md","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-03-03T12:20:05.000Z","updated_at":"2026-03-27T05:18:36.000Z","dependencies_parsed_at":null,"dependency_job_id":"158366a7-380c-4d99-a027-c8e429f4c2de","html_url":"https://github.com/rustic-ai/forge","commit_stats":null,"previous_names":["rustic-ai/forge"],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/rustic-ai/forge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustic-ai%2Fforge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustic-ai%2Fforge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustic-ai%2Fforge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustic-ai%2Fforge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rustic-ai","download_url":"https://codeload.github.com/rustic-ai/forge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustic-ai%2Fforge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290947,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"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":[],"created_at":"2026-03-11T05:00:27.203Z","updated_at":"2026-04-01T18:47:18.020Z","avatar_url":"https://github.com/rustic-ai.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Forge\n\nForge is the Rustic AI runtime stack for running guilds with:\n\n- `forge-go`: Go control plane/runtime (API, scheduler, supervisors, storage, distributed node support)\n- `forge-python`: Python execution bridge and system agents (including `GuildManagerAgent`)\n\n## Repository and Module\n\n- Git repository: `git@github.com:rustic-ai/forge.git`\n- Go module root: `github.com/rustic-ai/forge/forge-go`\n- Go module file: `forge-go/go.mod`\n\nIf you import Forge Go packages, use:\n\n```go\nimport \"github.com/rustic-ai/forge/forge-go/\u003cpackage\u003e\"\n```\n\n## Prerequisites\n\n- Go `1.25+`\n- Python `3.13`\n- `uv`\n- `uvx` available on PATH\n- Docker (required for some integration/e2e scenarios)\n\n## Build and Test\n\n```bash\nexport FORGE_REPO_DIR=\"/absolute/path/to/forge\"\n\ncd \"$FORGE_REPO_DIR/forge-go\"\nmake build\nmake test\nmake lint\n```\n\nBinary output:\n\n- `\"$FORGE_REPO_DIR/forge-go/bin/forge\"`\n\n## Quick Start (Single Process)\n\nThis starts everything in one Forge process:\n\n- HTTP API server\n- Embedded Redis (`127.0.0.1:6379`, default when `--redis` is omitted)\n- In-process Forge client/node (`--with-client`)\n- SQLite metastore\n\n```bash\nexport FORGE_REPO_DIR=\"/absolute/path/to/forge\"\n\ncd \"$FORGE_REPO_DIR/forge-go\"\nmake build\n\nmkdir -p /tmp/forge-uv-cache /tmp/forge-xdg-cache /tmp/forge-xdg-data\n\nFORGE_PYTHON_PKG=\"$FORGE_REPO_DIR/forge-python\" \\\nFORGE_UV_CACHE_DIR=/tmp/forge-uv-cache \\\nUV_CACHE_DIR=/tmp/forge-uv-cache \\\nXDG_CACHE_HOME=/tmp/forge-xdg-cache \\\nXDG_DATA_HOME=/tmp/forge-xdg-data \\\n\"$FORGE_REPO_DIR/forge-go/bin/forge\" server \\\n  --listen :3001 \\\n  --db sqlite:////tmp/forge-local.db \\\n  --with-client \\\n  --client-node-id local-single-node \\\n  --client-metrics-addr 127.0.0.1:19091\n```\n\nHealth check:\n\n```bash\ncurl -sS http://127.0.0.1:3001/healthz\n```\n\n## Distributed Mode (Server + External Client)\n\nStart server:\n\n```bash\nexport FORGE_REPO_DIR=\"/absolute/path/to/forge\"\n\ncd \"$FORGE_REPO_DIR/forge-go\"\n\"$FORGE_REPO_DIR/forge-go/bin/forge\" server --listen :3001 --db sqlite:////tmp/forge-server.db\n```\n\nStart a separate client node:\n\n```bash\nexport FORGE_REPO_DIR=\"/absolute/path/to/forge\"\n\ncd \"$FORGE_REPO_DIR/forge-go\"\nFORGE_PYTHON_PKG=\"$FORGE_REPO_DIR/forge-python\" \\\n\"$FORGE_REPO_DIR/forge-go/bin/forge\" client --server http://127.0.0.1:3001 --redis 127.0.0.1:6379\n```\n\n## Python Package (`forge-python`)\n\nInstall and run tests:\n\n```bash\nexport FORGE_REPO_DIR=\"/absolute/path/to/forge\"\n\ncd \"$FORGE_REPO_DIR/forge-python\"\nuv sync --group dev\nuv run pytest\n```\n\nContract-only tests:\n\n```bash\nuv run pytest tests/contract/\n```\n\n## Rustic AI Integration Dependencies\n\nSome integration/parity flows depend on the canonical `rustic-ai` repository.\nUse the actual repository, not a relative sibling path:\n\n- `https://github.com/rustic-ai/rustic-ai`\n\nExample:\n\n```bash\ngit clone https://github.com/rustic-ai/rustic-ai.git /absolute/path/to/rustic-ai\nexport RUSTIC_AI_CORE=\"/absolute/path/to/rustic-ai/core\"\n```\n\n## APIs\n\nForge exposes:\n\n- Public OpenAPI/API surface\n- Rustic compatibility surface under `/rustic/*`\n- Internal manager metastore surface under `/manager/*`\n\n## Local Debug Runbook\n\nDetailed end-to-end local debug steps are in:\n\n- `LOCAL_DEBUG.md`\n\n## License\n\nApache License 2.0. See `LICENSE`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustic-ai%2Fforge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frustic-ai%2Fforge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustic-ai%2Fforge/lists"}