{"id":45909235,"url":"https://github.com/stackgenhq/genie","last_synced_at":"2026-04-02T14:09:42.770Z","repository":{"id":341104835,"uuid":"1165918482","full_name":"stackgenhq/genie","owner":"stackgenhq","description":"Genie: an Agent who tells you what its trying to do.","archived":false,"fork":false,"pushed_at":"2026-03-03T04:21:04.000Z","size":1371,"stargazers_count":3,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-03T04:33:27.958Z","etag":null,"topics":["agent","ai","assistant","golang","own-your-data","reactree","secure"],"latest_commit_sha":null,"homepage":"https://stackgenhq.github.io/genie/","language":"Go","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/stackgenhq.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":"Agents.md","dco":null,"cla":null}},"created_at":"2026-02-24T17:25:55.000Z","updated_at":"2026-03-03T01:27:52.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/stackgenhq/genie","commit_stats":null,"previous_names":["stackgenhq/genie"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/stackgenhq/genie","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stackgenhq%2Fgenie","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stackgenhq%2Fgenie/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stackgenhq%2Fgenie/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stackgenhq%2Fgenie/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stackgenhq","download_url":"https://codeload.github.com/stackgenhq/genie/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stackgenhq%2Fgenie/sbom","scorecard":{"id":1244104,"data":{"date":"2026-02-28T05:27:02Z","repo":{"name":"github.com/stackgenhq/genie","commit":"31d676633788ffb4afa86ca3e36fcdea0dd683dd"},"scorecard":{"version":"v5.1.1","commit":"cd152cb6742c5b8f2f3d2b5193b41d9c50905198"},"score":6.6,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/5 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#code-review"}},{"name":"Dependency-Update-Tool","score":10,"reason":"update tool detected","details":["Info: detected update tool: Dependabot: .github/dependabot.yml:1"],"documentation":{"short":"Determines if the project uses a dependency update tool.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#dependency-update-tool"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#security-policy"}},{"name":"Maintained","score":0,"reason":"project was created in last 90 days. please review its contents carefully","details":["Warn: Repository was created in last 90 days."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/releaser.yml:19","Info: topLevel 'contents' permission set to 'read': .github/workflows/go-test.yml:13","Info: topLevel 'contents' permission set to 'read': .github/workflows/releaser.yml:11","Info: topLevel permissions set to 'read-all': .github/workflows/scorecard.yml:18"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":2,"reason":"badge detected: InProgress","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#cii-best-practices"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.1.2-rc.1 not signed: https://api.github.com/repos/stackgenhq/genie/releases/291587876","Warn: release artifact v0.1.0 not signed: https://api.github.com/repos/stackgenhq/genie/releases/291569093","Warn: release artifact v0.1.2-rc.1 does not have provenance: https://api.github.com/repos/stackgenhq/genie/releases/291587876","Warn: release artifact v0.1.0 does not have provenance: https://api.github.com/repos/stackgenhq/genie/releases/291569093"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":8,"reason":"dependency not pinned by hash detected -- score normalized to 8","details":["Warn: containerImage not pinned by hash: Dockerfile:19: pin your Docker image by updating alpine:3.23 to alpine:3.23@sha256:25109184c71bdad752c8312a8623239686a9a2071e8825f20acb8f2198c3f659","Info:  12 out of  12 GitHub-owned GitHubAction dependencies pinned","Info:   5 out of   5 third-party GitHubAction dependencies pinned","Info:   1 out of   2 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#pinned-dependencies"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#license"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: SAST configuration detected: CodeQL","Info: all commits (1) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#sast"}},{"name":"Contributors","score":10,"reason":"project has 3 contributing companies or organizations -- score normalized to 10","details":["Info: found contributions from: appcd-dev, stackgen, stackgen-demo"],"documentation":{"short":"Determines if the project has a set of contributors from multiple organizations (e.g., companies).","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#contributors"}},{"name":"CI-Tests","score":10,"reason":"1 out of 1 merged PRs checked by a CI test -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project runs tests before pull requests are merged.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#ci-tests"}},{"name":"Vulnerabilities","score":1,"reason":"9 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2025-4251 / GHSA-f6mr-38g8-39rg","Warn: Project is vulnerable to: GO-2025-3548","Warn: Project is vulnerable to: GO-2025-3557","Warn: Project is vulnerable to: GO-2025-3558","Warn: Project is vulnerable to: GO-2025-3559","Warn: Project is vulnerable to: GO-2025-3582","Warn: Project is vulnerable to: GO-2025-3689","Warn: Project is vulnerable to: GO-2025-3695","Warn: Project is vulnerable to: GO-2025-3824"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":10,"reason":"project is fuzzed","details":["Info: GoBuiltInFuzzer integration found: pkg/config/fuzz_test.go:17","Info: GoBuiltInFuzzer integration found: pkg/config/fuzz_test.go:46","Info: GoBuiltInFuzzer integration found: pkg/tools/sqltool/sql_fuzz_test.go:12"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":8,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'main'","Info: 'force pushes' disabled on branch 'main'","Warn: 'branch protection settings apply to administrators' is disabled on branch 'main'","Info: 'stale review dismissal' is required to merge on branch 'main'","Warn: required approving review count is 1 on branch 'main'","Info: codeowner review is required on branch 'main'","Info: 'last push approval' is required to merge on branch 'main'","Info: 'up-to-date branches' is required to merge on branch 'main'","Info: status check found to merge onto on branch 'main'","Info: PRs are required in order to make changes on branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/cd152cb6742c5b8f2f3d2b5193b41d9c50905198/docs/checks.md#branch-protection"}}]},"last_synced_at":"2026-02-28T11:00:11.018Z","repository_id":341104835,"created_at":"2026-02-28T11:00:11.028Z","updated_at":"2026-02-28T11:00:11.028Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30238096,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T23:52:25.683Z","status":"ssl_error","status_checked_at":"2026-03-07T23:52:25.373Z","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":["agent","ai","assistant","golang","own-your-data","reactree","secure"],"created_at":"2026-02-28T05:26:27.828Z","updated_at":"2026-04-02T14:09:42.759Z","avatar_url":"https://github.com/stackgenhq.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🧞 genie (by Stackgen)\n\n[![Go Reference](https://pkg.go.dev/badge/github.com/stackgenhq/genie.svg)](https://pkg.go.dev/github.com/stackgenhq/genie)\n[![Go Report Card](https://goreportcard.com/badge/github.com/stackgenhq/genie)](https://goreportcard.com/report/github.com/stackgenhq/genie)\n[![CI](https://github.com/stackgenhq/genie/actions/workflows/go-test.yml/badge.svg)](https://github.com/stackgenhq/genie/actions/workflows/go-test.yml)\n[![License: Apache 2.0 + BSL 1.1](https://img.shields.io/badge/License-Apache%202.0%20%2B%20BSL%201.1-blue.svg)](./LICENSING.md)\n[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/12058/badge)](https://www.bestpractices.dev/projects/12058)\n[![Release](https://img.shields.io/github/v/release/stackgenhq/genie)](https://img.shields.io/github/v/release/stackgenhq/genie)\n[![Scorecard](https://api.scorecard.dev/projects/github.com/stackgenhq/genie/badge)](https://scorecard.dev/viewer/?uri=github.com/stackgenhq/genie)\n[![codecov](https://codecov.io/gh/stackgenhq/genie/graph/badge.svg?token=8DPGF0MP08)](https://codecov.io/gh/stackgenhq/genie)\n\nGenerative Engine for Natural Intent Execution\n\n\u003e **\"Your intent is my command.\"**\n\n`genie` is an **Enterprise Agentic Platform** powered by [Stackgen](https://stackgen.com). Describe what you need — across code, operations, security, and beyond — and let `genie` plan and execute it.\n\n\u003e **🚧 Early Stage — API Surface Evolving**\n\u003e\n\u003e Genie is under active development and not yet at v1.0. Library interfaces, method signatures, and configuration schemas may change between minor releases as we refine the platform based on real-world usage and community feedback. We follow [Semantic Versioning](https://semver.org/) — breaking changes are always documented in the [CHANGELOG](./CHANGELOG.md). If you're building on top of Genie, we recommend pinning to a specific release and watching the changelog for migration notes.\n\n---\n\n## ✨ Enterprise Differentiators\n\n`genie` is a platform designed for reliability, compliance, and scale.\n\n* **ReAcTree Execution Engine**: A deterministic, multi-stage reasoning engine that ensures verifiable plans.\n* **Agentic Execution**: Plans, decomposes, and executes complex multi-step tasks autonomously with sub-agent orchestration.\n* **Governance \u0026 Audit**: Built-in Human-in-the-Loop (HITL) guardrails and immutable audit logs ensure strict compliance.\n* **Multi-Model Routing**: Intelligently routes tasks to the best model (OpenAI, Gemini, Anthropic, Ollama, HuggingFace) for cost and performance.\n* **Enterprise Integrations**: Seamlessly integrates with **OpsVerse ObserveNow** for full-stack observability and **Aiden** for automated incident response.\n* **Skills \u0026 MCP**: Extensible via a file-based skills system and full MCP protocol support.\n\n---\n\n## 🚀 Get Started\n\n### Prerequisites\n\n* **Go 1.25+** (only for building from source)\n* **CGO enabled** — required for SQLite via GORM (`CGO_ENABLED=1` is set by default on most platforms)\n\n### Installation\n\n**Homebrew (macOS / Linux):**\n\n```bash\nbrew install stackgenhq/homebrew-stackgen/genie\n```\n\n**Go install:**\n\n```bash\nCGO_ENABLED=1 go install -mod=mod github.com/stackgenhq/genie@latest\n```\n\n**Build from source:**\n\n```bash\ngit clone https://github.com/stackgenhq/genie.git\ncd genie\nmake build        # binary at build/genie\nmake install      # install to $GOPATH/bin\n```\n\n**Docker:**\n\n```bash\ndocker run --rm -it \\\n  -v ~/.genie.toml:/home/genie/.genie.toml \\\n  -v $(pwd):/workspace \\\n  ghcr.io/stackgenhq/genie:latest grant\n```\n\n**GitHub Releases:**\nDownload pre-built binaries for macOS, Linux, and Windows from the\n[Releases](https://github.com/stackgenhq/genie/releases) page.\n\n**Windows (Scoop):**\n\n```powershell\nscoop bucket add stackgen https://github.com/stackgenhq/homebrew-stackgen\nscoop install genie\n```\n\n### Local Development Stack (Qdrant + Docling)\n\nFor local testing with vector memory and document parsing, use the included Docker Compose stack:\n\n```bash\ndocker compose up -d          # start Qdrant + Docling Serve\ndocker compose logs -f        # tail logs (Docling takes ~2 min for ML model init)\ndocker compose down           # stop (data persisted in volumes)\ndocker compose down -v        # stop and delete all data\n```\n\n| Service | Port | Purpose |\n|---------|------|---------|\n| **Qdrant** | `6333` (REST/Dashboard), `6334` (gRPC) | Vector store |\n| **Docling Serve** | `5001` | Document parser (PDF, DOCX, images → structured text) |\n\n**Validate the pipeline:**\n\n```bash\ngo run -mod=mod ./cmd/parser/main.go                   # parse built-in sample\ngo run -mod=mod ./cmd/parser/main.go ./path/to/file.pdf # parse your own file\n```\n\nSee [compose.yaml](./compose.yaml) for full configuration details.\n\n### Grant Your First Wish\n\nReady to see the magic? Run the interactive wizard:\n\n```bash\ngenie\n```\n\nOr use the explicit command:\n\n```bash\ngenie grant\n```\n\n### Deploying on Cloud Instances (EC2, Azure VM, GCP Compute)\n\nWant to run Genie as a shared service for your team? Deploy it on a cloud instance with persistent storage and systemd management.\n\n#### Option 1: Docker Deployment (Recommended)\n\n```bash\n# 1. Install Docker on your instance\ncurl -fsSL https://get.docker.com -o get-docker.sh\nsudo sh get-docker.sh\n\n# 2. Create a config directory\nmkdir -p ~/.genie\nnano ~/.genie/genie.toml  # Add your configuration\n\n# 3. Run Genie with Docker\ndocker run -d \\\n  --name genie \\\n  --restart unless-stopped \\\n  -p 9876:9876 \\\n  -v ~/.genie:/home/genie/.config \\\n  -v /var/lib/genie/data:/workspace \\\n  -e OPENAI_API_KEY=\"${OPENAI_API_KEY}\" \\\n  ghcr.io/stackgenhq/genie:latest grant\n```\n\n#### Option 2: Binary Installation with Systemd\n\n**For EC2 (Amazon Linux / Ubuntu):**\n\n```bash\n# 1. Download and install the binary\ncurl -L https://github.com/stackgenhq/genie/releases/latest/download/genie_Linux_x86_64.tar.gz -o genie.tar.gz\ntar xzf genie.tar.gz\nsudo mv genie /usr/local/bin/\nsudo chmod +x /usr/local/bin/genie\n\n# 2. Create a genie user\nsudo useradd -r -s /bin/false genie\nsudo mkdir -p /etc/genie /var/lib/genie\nsudo chown genie:genie /var/lib/genie\n\n# 3. Create configuration\nsudo nano /etc/genie/genie.toml\n# Add your model config, see config.toml.example\n\n# 4. Create systemd service\nsudo tee /etc/systemd/system/genie.service \u003e /dev/null \u003c\u003cEOF\n[Unit]\nDescription=Genie Agentic Platform\nAfter=network.target\n\n[Service]\nType=simple\nUser=genie\nGroup=genie\nWorkingDirectory=/var/lib/genie\nEnvironment=\"OPENAI_API_KEY=your-key-here\"\nExecStart=/usr/local/bin/genie grant --config /etc/genie/genie.toml\nRestart=on-failure\nRestartSec=10\n\n[Install]\nWantedBy=multi-user.target\nEOF\n\n# 5. Start the service\nsudo systemctl daemon-reload\nsudo systemctl enable genie\nsudo systemctl start genie\nsudo systemctl status genie\n```\n\n#### Security Recommendations\n\n* **Use IAM roles** (AWS) or equivalent for secret management instead of hardcoded keys\n* **Configure firewall**: Only expose port 9876 to trusted IPs/VPCs\n* **Enable HTTPS**: Use a reverse proxy (nginx/caddy) with Let's Encrypt certificates\n* **Set rate limits**: Configure `[agui] rate_limit` and `max_concurrent` in your config\n* **Regular updates**: Set up automated security updates for your instance\n* **Use cloud secret managers**: Configure `[security.secrets]` for AWS Secrets Manager, GCP Secret Manager, or Azure Key Vault\n\n**Example with AWS Secrets Manager:**\n\n```toml\n[security.secrets]\nOPENAI_API_KEY = \"awssecretsmanager://genie/openai?region=us-east-1\u0026decoder=string\"\nANTHROPIC_API_KEY = \"awssecretsmanager://genie/anthropic?region=us-east-1\u0026decoder=string\"\n```\n\n**Nginx reverse proxy example:**\n\n```nginx\nserver {\n    listen 443 ssl http2;\n    server_name genie.example.com;\n\n    ssl_certificate /etc/letsencrypt/live/genie.example.com/fullchain.pem;\n    ssl_certificate_key /etc/letsencrypt/live/genie.example.com/privkey.pem;\n\n    location / {\n        proxy_pass http://localhost:9876;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"upgrade\";\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}\n```\n\n---\n\n## 🛠 Commands\n\n| Command | Description |\n|---|---|\n| `genie` or `genie grant` | Interactive agentic wizard. |\n\n---\n\n## ⚙️ Configuration\n\n`genie` supports configuration via **YAML** or **TOML** files. You can customize model routing, tool access, security policies, and more.\n\nBy default, `genie` looks for `.genie.yaml`, `.genie.yml`, `genie.yaml`, or `genie.yml` in the current directory, and then falling back to `$HOME/.genie.yaml`.\n\nYou can also specify a config file explicitly:\n\n```bash\ngenie grant --config /path/to/my-config.toml\n```\n\n### Environment Variables \u0026 Secret Providers\n\nConfiguration values matching the pattern `${VAR_NAME}` are resolved through the configured **SecretProvider**:\n\n* **Default (env vars):** Without a `[security]` section, placeholders resolve from environment variables — fully backward compatible.\n* **Cloud / file backends:** Add a `[security.secrets]` section to resolve secrets from GCP Secret Manager, AWS Secrets Manager, Azure Key Vault, mounted files, or any [gocloud.dev/runtimevar](https://gocloud.dev/howto/runtimevar/) backend.\n* **Diagnostics:** If a secret-like key (`token`, `api_key`, `password`, etc.) resolves to empty, `genie` emits a warning pointing to the missing variable name and config path.\n\nSee the [Security section](docs/docs.html) in the docs for full configuration details.\n\n### Example Configuration\n\nCheck out [config.toml.example](./config.toml.example) for a full example of available options.\n\n```toml\n[[model_config]]\nprovider = \"openai\"\nmodel_name = \"gpt-5.4\"\ntoken = \"${OPENAI_API_KEY}\"\ngood_for_task = \"planning\"\n\n[[model_config]]\nprovider = \"ollama\"\nmodel_name = \"llama3\"\nhost = \"http://localhost:11434\"\ngood_for_task = \"tool_calling\"\n\n# Skills: Enable reusable agent capabilities\nskills_roots = [\"./skills\"]  # Paths to skills directories\n```\n\n### Skills System\n\n`genie` supports a skills system based on the [agentskills.io specification](https://agentskills.io/specification). Skills are reusable, self-contained capabilities that agents can discover, load, and execute.\n\n**Quick Start:**\n\n1. Create a skills directory:\n\n   ```bash\n   mkdir -p skills/my-skill\n   ```\n\n2. Add a `SKILL.md` file with YAML frontmatter:\n\n   ```markdown\n   ---\n   name: my-skill\n   description: What this skill does\n   ---\n   \n   # My Skill\n   \n   Detailed instructions...\n   ```\n\n3. Configure in `genie.toml`:\n\n   ```toml\n   skills_roots = [\"./skills\"]\n   ```\n\n   Or use environment variable:\n\n   ```bash\n   export SKILLS_ROOT=./skills\n   ```\n\n**Learn More:** See [docs/skills.md](./docs/skills.md) for complete documentation, examples, and best practices.\n\n---\n\n## 📖 The \"Genie\" Workflow\n\n1. **Rub the Lamp:** Call `genie` (or `genie grant`).\n2. **Speak your Intent:** Describe what you want to accomplish.\n3. **Watch the Magic:** `genie` plans, decomposes, and executes using multi-model orchestration.\n4. **Review \u0026 Ship:** Approve results through HITL guardrails and deploy with confidence.\n\n\u003e **Why call it Genie?** Because at Stackgen, we believe complex tasks should feel like magic. Just express your intent and consider it granted.\n\n---\n\n## 🤝 Join the Movement\n\nWe are redefining agentic automation. If you want to contribute, check out our [contribution guidelines](./CONTRIBUTING.md).\n\n1. Fork the repo.\n2. Create your feature branch.\n3. Submit a PR.\n\n---\n\n## 📜 Community \u0026 Governance\n\n| Document | Purpose |\n|---|---|\n| [Contributing Guide](./CONTRIBUTING.md) | How to contribute, build, and test |\n| [Code of Conduct](./CODE_OF_CONDUCT.md) | Community behavior standards |\n| [Security Policy](./SECURITY.md) | How to report vulnerabilities |\n| [Changelog](./CHANGELOG.md) | Release notes and history |\n| [Licensing](./LICENSING.md) | Apache 2.0 / BSL 1.1 |\n\n---\n\n**Built with ✨ by [Stackgen](https://stackgen.com).**\n*Complex tasks are hard. Being a Genie is easy.*\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstackgenhq%2Fgenie","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstackgenhq%2Fgenie","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstackgenhq%2Fgenie/lists"}