quay-ai-factory 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/CODEOWNERS +2 -0
- package/.github/ISSUE_TEMPLATE/bug_report.yml +42 -0
- package/.github/ISSUE_TEMPLATE/feature_request.yml +29 -0
- package/.github/workflows/ci.yml +54 -0
- package/.github/workflows/pages.yml +37 -0
- package/.vscode/extensions.json +3 -0
- package/CONTRIBUTING.md +47 -0
- package/LICENSE +21 -0
- package/README.md +349 -0
- package/docs/index.html +1059 -0
- package/drizzle.config.ts +10 -0
- package/package.json +86 -0
- package/scripts/seed.ts +87 -0
- package/scripts/test-quay.sh +412 -0
- package/src/app.css +27 -0
- package/src/app.d.ts +13 -0
- package/src/app.html +12 -0
- package/src/lib/assets/favicon.svg +1 -0
- package/src/lib/index.ts +1 -0
- package/src/lib/stores/quay.ts +122 -0
- package/src/lib/types/index.ts +264 -0
- package/src/routes/+layout.svelte +6 -0
- package/src/routes/+page.svelte +464 -0
- package/src/server/agents/agentRunner.ts +200 -0
- package/src/server/db/index.ts +212 -0
- package/src/server/db/schema.ts +113 -0
- package/src/server/index.ts +300 -0
- package/src/server/mcp/index.ts +251 -0
- package/src/server/memory/memoryTree.ts +230 -0
- package/src/server/pipeline/pipeline.ts +209 -0
- package/src/server/sse/index.ts +54 -0
- package/src/types/bun.d.ts +14 -0
- package/static/robots.txt +3 -0
- package/tsconfig.json +21 -0
- package/vite.config.ts +20 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
name: Bug Report
|
|
2
|
+
description: Report a bug in Quay
|
|
3
|
+
labels: [bug]
|
|
4
|
+
body:
|
|
5
|
+
- type: markdown
|
|
6
|
+
attributes:
|
|
7
|
+
value: |
|
|
8
|
+
## Bug Description
|
|
9
|
+
A clear description of the bug.
|
|
10
|
+
|
|
11
|
+
- type: input
|
|
12
|
+
attributes:
|
|
13
|
+
label: Quay Version
|
|
14
|
+
placeholder: "0.0.1"
|
|
15
|
+
validations:
|
|
16
|
+
required: true
|
|
17
|
+
|
|
18
|
+
- type: textarea
|
|
19
|
+
attributes:
|
|
20
|
+
label: Steps to Reproduce
|
|
21
|
+
placeholder: |
|
|
22
|
+
1.
|
|
23
|
+
2.
|
|
24
|
+
3.
|
|
25
|
+
|
|
26
|
+
- type: textarea
|
|
27
|
+
attributes:
|
|
28
|
+
label: Expected Behavior
|
|
29
|
+
placeholder: What should happen
|
|
30
|
+
|
|
31
|
+
- type: textarea
|
|
32
|
+
attributes:
|
|
33
|
+
label: Actual Behavior
|
|
34
|
+
placeholder: What actually happens
|
|
35
|
+
|
|
36
|
+
- type: textarea
|
|
37
|
+
attributes:
|
|
38
|
+
label: Full Error Output
|
|
39
|
+
placeholder: |
|
|
40
|
+
```
|
|
41
|
+
paste error here
|
|
42
|
+
```
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
name: Feature Request
|
|
2
|
+
description: Propose a new feature for Quay
|
|
3
|
+
labels: [enhancement]
|
|
4
|
+
body:
|
|
5
|
+
- type: markdown
|
|
6
|
+
attributes:
|
|
7
|
+
value: |
|
|
8
|
+
## Feature Summary
|
|
9
|
+
A brief description of the feature.
|
|
10
|
+
|
|
11
|
+
- type: textarea
|
|
12
|
+
attributes:
|
|
13
|
+
label: Problem it Solves
|
|
14
|
+
placeholder: What problem does this solve?
|
|
15
|
+
|
|
16
|
+
- type: textarea
|
|
17
|
+
attributes:
|
|
18
|
+
label: Proposed Solution
|
|
19
|
+
placeholder: How should it work?
|
|
20
|
+
|
|
21
|
+
- type: textarea
|
|
22
|
+
attributes:
|
|
23
|
+
label: Alternatives Considered
|
|
24
|
+
placeholder: Any other approaches you considered?
|
|
25
|
+
|
|
26
|
+
- type: textarea
|
|
27
|
+
attributes:
|
|
28
|
+
label: Priority
|
|
29
|
+
placeholder: "Must have / Should have / Nice to have"
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main, develop]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
name: Test Suite
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v4
|
|
15
|
+
|
|
16
|
+
- uses: oven-sh/setup-bun@v2
|
|
17
|
+
with:
|
|
18
|
+
bun-version: latest
|
|
19
|
+
|
|
20
|
+
- name: Install dependencies
|
|
21
|
+
run: bun install
|
|
22
|
+
|
|
23
|
+
- name: Seed database
|
|
24
|
+
run: bun run scripts/seed.ts
|
|
25
|
+
|
|
26
|
+
- name: Start API server
|
|
27
|
+
run: bun run src/server/index.ts &
|
|
28
|
+
env:
|
|
29
|
+
QUAY_API_KEY: quay-dev-key
|
|
30
|
+
|
|
31
|
+
- name: Run test suite
|
|
32
|
+
run: bash scripts/test-quay.sh
|
|
33
|
+
|
|
34
|
+
typecheck:
|
|
35
|
+
name: TypeScript Check
|
|
36
|
+
runs-on: ubuntu-latest
|
|
37
|
+
steps:
|
|
38
|
+
- uses: actions/checkout@v4
|
|
39
|
+
- uses: oven-sh/setup-bun@v2
|
|
40
|
+
with:
|
|
41
|
+
bun-version: latest
|
|
42
|
+
- run: bun install
|
|
43
|
+
- run: npm run check
|
|
44
|
+
|
|
45
|
+
build:
|
|
46
|
+
name: Build
|
|
47
|
+
runs-on: ubuntu-latest
|
|
48
|
+
steps:
|
|
49
|
+
- uses: actions/checkout@v4
|
|
50
|
+
- uses: oven-sh/setup-bun@v2
|
|
51
|
+
with:
|
|
52
|
+
bun-version: latest
|
|
53
|
+
- run: bun install
|
|
54
|
+
- run: npm run build
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
name: Deploy Docs to GitHub Pages
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
paths: ['docs/**', '.github/workflows/pages.yml']
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
pages: write
|
|
11
|
+
id-token: write
|
|
12
|
+
|
|
13
|
+
concurrency:
|
|
14
|
+
group: pages
|
|
15
|
+
cancel-in-progress: false
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
deploy:
|
|
19
|
+
environment:
|
|
20
|
+
name: github-pages
|
|
21
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
22
|
+
runs-on: ubuntu-latest
|
|
23
|
+
steps:
|
|
24
|
+
- name: Checkout
|
|
25
|
+
uses: actions/checkout@v4
|
|
26
|
+
|
|
27
|
+
- name: Setup Pages
|
|
28
|
+
uses: actions/configure-pages@v4
|
|
29
|
+
|
|
30
|
+
- name: Upload artifact
|
|
31
|
+
uses: actions/upload-pages-artifact@v3
|
|
32
|
+
with:
|
|
33
|
+
path: 'docs'
|
|
34
|
+
|
|
35
|
+
- name: Deploy to GitHub Pages
|
|
36
|
+
id: deployment
|
|
37
|
+
uses: actions/deploy-pages@v4
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Contributing to Quay
|
|
2
|
+
|
|
3
|
+
Thank you for your interest in contributing to Quay.
|
|
4
|
+
|
|
5
|
+
## Development Setup
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
git clone https://github.com/Das-rebel/quay.git
|
|
9
|
+
cd quay
|
|
10
|
+
bun install
|
|
11
|
+
bun run scripts/seed.ts # seed the database
|
|
12
|
+
bun run src/server/index.ts # start API server
|
|
13
|
+
npm run dev # start dashboard (separate terminal)
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Running Tests
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
bash scripts/test-quay.sh
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
All PRs must pass the test suite. Run it before opening a PR.
|
|
23
|
+
|
|
24
|
+
## Code Style
|
|
25
|
+
|
|
26
|
+
- TypeScript strict mode is enforced
|
|
27
|
+
- Run `npm run check` before committing
|
|
28
|
+
- Use `bun` for all package management
|
|
29
|
+
|
|
30
|
+
## Submitting Changes
|
|
31
|
+
|
|
32
|
+
1. Fork and create a branch: `feat/your-feature` or `fix/your-bug`
|
|
33
|
+
2. Add tests for new functionality
|
|
34
|
+
3. Ensure `bash scripts/test-quay.sh` passes
|
|
35
|
+
4. Open a PR with a clear description of what changed and why
|
|
36
|
+
|
|
37
|
+
## Reporting Bugs
|
|
38
|
+
|
|
39
|
+
Open an issue with:
|
|
40
|
+
- Quay version (from `package.json`)
|
|
41
|
+
- Steps to reproduce
|
|
42
|
+
- Expected vs actual behavior
|
|
43
|
+
- Full error output
|
|
44
|
+
|
|
45
|
+
## Discussing Ideas
|
|
46
|
+
|
|
47
|
+
Open an issue first for significant changes β avoid major PRs without prior discussion.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Das-rebel
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
# Quay β Autonomous AI Software Factory
|
|
2
|
+
|
|
3
|
+
> Self-hosted AI agents that plan, code, review, security-scan, and deploy β with full cost transparency and an open architecture.
|
|
4
|
+
|
|
5
|
+
[](https://github.com/Das-rebel/quay/actions/workflows/ci.yml)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+
[](https://www.npmjs.com/package/quay)
|
|
8
|
+
[](https://www.typescriptlang.org/)
|
|
9
|
+
[](https://svelte.dev/)
|
|
10
|
+
|
|
11
|
+
**Quay** is an open-source AI Software Factory β a platform for orchestrating autonomous AI agents through customizable pipelines. Agents write code, run reviews, perform security scans, and produce deployable artifacts β all with an open, self-hosted architecture and real-time observability.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## β¨ Features
|
|
16
|
+
|
|
17
|
+
### π€ Autonomous Agent Pipelines
|
|
18
|
+
- **Role-based agents**: Engineer β Reviewer β Security β Deployer pipeline out of the box
|
|
19
|
+
- **Customizable stages**: Swap, add, or remove pipeline stages to match your workflow
|
|
20
|
+
- **SWE-agent loop**: Observe β Plan β Act β Reflect cycle with SQLite-backed step tracking
|
|
21
|
+
|
|
22
|
+
### π MCP Integration (Model Context Protocol)
|
|
23
|
+
- Connect any MCP-compatible tool server via stdio (filesystem, git, Slack, custom tools)
|
|
24
|
+
- First-class support for the Model Context Protocol β like USB for AI agents
|
|
25
|
+
- Lazy-loaded per pipeline stage; hot-reload on server restart
|
|
26
|
+
|
|
27
|
+
### π° Cost Transparency
|
|
28
|
+
- Every LLM call logged with token counts and cost in USD
|
|
29
|
+
- Per-task, per-project, and global cost dashboards
|
|
30
|
+
- Route through A3M Router for adaptive multi-provider routing (OpenAI, Anthropic, Groq, Ollama, and 40+ more)
|
|
31
|
+
|
|
32
|
+
### π‘οΈ Self-Hosted & Open
|
|
33
|
+
- No vendor lock-in β run entirely on your own infrastructure
|
|
34
|
+
- Bearer-token auth with configurable `QUAY_API_KEY`
|
|
35
|
+
- Full audit trail: every state transition, every tool call, every run β logged to SQLite
|
|
36
|
+
|
|
37
|
+
### π Mission Control Dashboard
|
|
38
|
+
- Real-time dark UI with KPI cards (success rate, active agents, pipeline health, daily cost)
|
|
39
|
+
- Kanban board (7 states: Backlog β Queued β In Progress β Review β Done / Failed / Blocked)
|
|
40
|
+
- Live activity feed via SSE streaming
|
|
41
|
+
- Mock/Live data toggle for development
|
|
42
|
+
|
|
43
|
+
### π§ Three-Tier Agent Memory
|
|
44
|
+
- **Short-term**: Per-run cache (30-minute TTL, in-memory Map)
|
|
45
|
+
- **Medium-term**: 7-day lessons learned per project
|
|
46
|
+
- **Long-term**: Agent capability/failure graph with success-rate weighting
|
|
47
|
+
|
|
48
|
+
### π‘ Real-Time Streaming
|
|
49
|
+
- Server-Sent Events for task lifecycle broadcasts
|
|
50
|
+
- WebSocket-ready architecture
|
|
51
|
+
- Zero polling β dashboard updates on every state change
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## π Competitive Comparison
|
|
56
|
+
|
|
57
|
+
Quay sits at the intersection of **enterprise capability** and **open-source flexibility** β self-hosted, cost-transparent, and built for teams that want full control without building from scratch.
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
### How to Read the Table
|
|
61
|
+
|
|
62
|
+
| Symbol | Meaning |
|
|
63
|
+
|--------|---------|
|
|
64
|
+
| β
Full support | Available and production-ready |
|
|
65
|
+
| β οΈ Partial / Limited | Available but with constraints |
|
|
66
|
+
| β Not available | Not supported or not applicable |
|
|
67
|
+
|
|
68
|
+
### Platform Comparison
|
|
69
|
+
|
|
70
|
+
*21 platforms compared across 13 parameters β platforms as rows for readability.*
|
|
71
|
+
|
|
72
|
+
| Platform | Type | Deploy | Pricing | LLM Flex | MCP | Cost Transp | Dashboard | State Mach | Audit | Auto Code | Pipeline | Multi-Agent | Open Src |
|
|
73
|
+
|---------|------|--------|---------|---------|-----|-----------|----------|----------|------|----------|----------|------------|---------|
|
|
74
|
+
| [**Quay**](https://github.com/Das-rebel/quay) | Factory | β
Self | β
MIT | β
Any (40+) | β
Native | β
Per-call | β
Live SSE | β
7-state | β
SQLite | β
Prod | β
Full | β
Role | β
MIT |
|
|
75
|
+
| [**XHawk OpenFactory**](https://xhawk.ai) | Factory | β Cloud | β οΈ Opaque | β οΈ Prop | β | β Opaque | β οΈ Dash | β οΈ Basic | β οΈ Logs | β
Prod | β οΈ Config | β οΈ Multi | β Prop |
|
|
76
|
+
| [**ServiceNow AI Agents**](https://www.servicenow.com/products/ai-agents.html) | Enterprise | β Cloud | β οΈ Opaque | β οΈ Prop | β οΈ Integr | β οΈ Agg | β οΈ Now UI | β
Full | β
Full | β οΈ Auto | β οΈ Flow | β οΈ Virt | β Prop |
|
|
77
|
+
| [**Copilot Studio**](https://www.microsoft.com/microsoft-copilot/microsoft-copilot-studio) | Enterprise | β Cloud | β οΈ Per-seat | β οΈ Copilot | β οΈ Conn | β οΈ Admin | β
Power | β
Flows | β
Full | β οΈ Prompt | β οΈ Studio | β οΈ Auto | β Prop |
|
|
78
|
+
| [**Einstein Agent**](https://www.salesforce.com/products/einstein/einstein-ai-agent/) | CRM | β Cloud | β οΈ Per-agent | β οΈ Einst | β οΈ APIs | β οΈ CRM | β οΈ SF UI | β οΈ Case | β
Full | β οΈ Case | β οΈ Flow | β οΈ Einst | β Prop |
|
|
79
|
+
| [**Workato**](https://www.workato.com) | iPaaS+AI | β οΈ Hybrid | β οΈ Per-job | β οΈ Wkto | β οΈ 200+ | β οΈ Conn | β οΈ Rpter | β οΈ Job | β
Full | β οΈ Recipe | β οΈ Low | β οΈ Recipe | β οΈ Src |
|
|
80
|
+
| [**Automation Anywhere**](https://www.automationanywhere.com) | RPA+AI | β οΈ On-prem | β οΈ Bot | β οΈ Insight | β οΈ Integr | β οΈ Analytics | β οΈ Room | β οΈ Attend | β
Full | β οΈ Attend | β οΈ RPA | β οΈ RPA | β Prop |
|
|
81
|
+
| [**MultiOn**](https://multion.ai) | Browser AI | β Cloud | β οΈ API | β
Any | β | β οΈ API | β οΈ API | β οΈ Basic | β | β οΈ Browser | β οΈ Browser | β | β οΈ Freem |
|
|
82
|
+
| [**Adept ACT-1**](https://www.adept.ai/act) | Ent AI | β Cloud | β οΈ Ent | β
Any | β | β Opaque | β οΈ Portal | β οΈ Task | β οΈ Ent | β οΈ Multi | β οΈ ACT-1 | β οΈ Ent | β Prop |
|
|
83
|
+
| [**Airkit**](https://www.airkit.com) | CX AI | β Cloud | β οΈ Seat | β οΈ Airkit | β | β οΈ CC | β οΈ Studio | β οΈ Bot | β οΈ Sess | β | β οΈ Builder | β | β οΈ Freem |
|
|
84
|
+
| [**Embra**](https://www.embra.ai) | Know AI | β Cloud | β οΈ Seat | β
Multi | β | β Opaque | β οΈ Space | β | β οΈ Logs | β οΈ Know | β | β | β οΈ Freem |
|
|
85
|
+
| [**Corr**](https://corr.ai) | AI Agent | β Cloud | β οΈ Seat | β
Multi | β οΈ Roadmap | β Opaque | β οΈ Dash | β οΈ Queue | β οΈ Basic | β οΈ Gen | β οΈ Config | β οΈ Multi | β οΈ Beta |
|
|
86
|
+
| [**Superagent**](https://superagent.sh) | OSS Agent | β
Self | β
MIT | β
Any | β οΈ Tools | β οΈ Back | β οΈ LangS | β οΈ Custom | β οΈ Custom | β οΈ Tool | β οΈ Config | β οΈ Single | β
MIT |
|
|
87
|
+
| [**Jina AI**](https://jina.ai) | Infra | β οΈ Hybrid | β οΈ Per-call | β
Any | β οΈ Proxy | β οΈ Pro | β οΈ Dash | β | β οΈ API | β οΈ Read | β οΈ Svc | β οΈ Read | β οΈ Partial |
|
|
88
|
+
| [**MindOS**](https://www.mindos.com) | Agent Plat | β Cloud | β οΈ Sub | β οΈ MindOS | β οΈ Plugins | β Opaque | β
Portal | β οΈ Agent | β οΈ Sess | β οΈ Know | β οΈ Builder | β οΈ Multi | β οΈ Freem |
|
|
89
|
+
| [**AutoGen**](https://microsoft.github.io/autogen) | OSS Frame | β
Self | β
MIT | β
Any | β οΈ Tools | β | β | β | β οΈ Console | β οΈ Rsrch | β οΈ Code | β οΈ Conv | β
MIT |
|
|
90
|
+
| [**CrewAI**](https://www.crewai.com) | OSS Multi | β
Self | β
MIT | β
Any | β οΈ Tools | β οΈ LangS | β οΈ LangS | β οΈ Crew | β οΈ LangS | β οΈ Role | β οΈ YAML | β οΈ Role | β
MIT |
|
|
91
|
+
| [**LangGraph**](https://www.langchain.com/langgraph) | OSS Workfl | β
Self | β
Apache | β
Any | β οΈ LC | β οΈ LangS | β οΈ LangS | β οΈ Check | β οΈ LangS | β οΈ Workfl | β οΈ Graph | β οΈ Graph | β
Apache |
|
|
92
|
+
| [**MetaGPT**](https://www.deepwisdom.ai) | OSS Dev | β
Self | β
MIT | β οΈ GPT4 | β | β | β | β | β οΈ Console | β οΈ Dev | β οΈ Role | β οΈ Prompt | β
MIT |
|
|
93
|
+
| [**OpenDevin**](https://www.all-hands.dev) | OSS Code | β
Self | β οΈ AGPL | β
Any | β οΈ Plugins | β | β οΈ Web UI | β οΈ Loop | β οΈ Events | β οΈ SWE | β οΈ AgentG | β οΈ Event | β οΈ AGPL |
|
|
94
|
+
| [**SWE-agent**](https://swe-agent.com) | OSS SWE | β
Self | β
Apache | β
Any | β | β | β CLI | β | β οΈ Term | β οΈ CLI | β οΈ CLAUDE | β | β
Apache |
|
|
95
|
+
| [**Continue Dev**](https://continue.dev) | OSS IDE | β
Local | β
Apache | β
Any | β οΈ Config | β | β οΈ IDE | β | β οΈ IDE | β οΈ IDE | β οΈ Config | β οΈ Pair | β
Apache |
|
|
96
|
+
| [**Moss**](https://moss.sh) | OSS Code | β
Self | β
MIT | β
Any | β οΈ Tools | β | β οΈ Web | β οΈ Basic | β οΈ Hist | β οΈ Gen | β οΈ Miss | β οΈ Miss | β
MIT |
|
|
97
|
+
|
|
98
|
+
### Why Teams Choose Quay
|
|
99
|
+
|
|
100
|
+
**vs. Open-Source Frameworks ([AutoGen](https://microsoft.github.io/autogen), [CrewAI](https://www.crewai.com), [MetaGPT](https://www.deepwisdom.ai), [OpenDevin](https://www.all-hands.dev))**
|
|
101
|
+
|
|
102
|
+
[AutoGen](https://microsoft.github.io/autogen), [CrewAI](https://www.crewai.com), [LangGraph](https://www.langchain.com/langgraph), [MetaGPT](https://www.deepwisdom.ai), and [OpenDevin](https://www.all-hands.dev) are powerful *research-grade* tools β but they're frameworks, not platforms. You still need to build: auth, a dashboard, state persistence, cost tracking, and deployment pipelines. Quay provides all of that out of the box with a production-ready UI.
|
|
103
|
+
|
|
104
|
+
| Capability | [AutoGen](https://microsoft.github.io/autogen)/[CrewAI](https://www.crewai.com)/[MetaGPT](https://www.deepwisdom.ai) | **Quay** |
|
|
105
|
+
|-----------|-----------------------------------------|----------|
|
|
106
|
+
| Production dashboard | β | β
Live SSE + Kanban |
|
|
107
|
+
| Task state machine | β | β
7-state with transitions |
|
|
108
|
+
| Cost per LLM call | β | β
Per-call USD logging |
|
|
109
|
+
| MCP native support | β οΈ Via custom tools | β
Native stdio registry |
|
|
110
|
+
| SQLite audit trail | β | β
Full schema |
|
|
111
|
+
| Self-hosted | β
| β
|
|
|
112
|
+
| Zero-config start | β | β
`bun run scripts/seed.ts` |
|
|
113
|
+
|
|
114
|
+
**vs. [XHawk OpenFactory](https://xhawk.ai)**
|
|
115
|
+
|
|
116
|
+
[XHawk](https://xhawk.ai) is the closest commercial equivalent β but it's cloud-only with opaque enterprise pricing and no self-hosted option. If your team has compliance requirements (GDPR, SOC2, data residency), XHawk may not be an option.
|
|
117
|
+
|
|
118
|
+
| Capability | [XHawk OpenFactory](https://xhawk.ai) | **Quay** |
|
|
119
|
+
|-----------|---------------------------|----------|
|
|
120
|
+
| Self-hosted | β Cloud-only | β
Run on your infra |
|
|
121
|
+
| Cost transparency | β Opaque | β
Per-call USD logging |
|
|
122
|
+
| Audit trail | β οΈ Logs | β
Full SQLite schema |
|
|
123
|
+
| MCP support | β | β
Native |
|
|
124
|
+
| Pricing | Enterprise (opaque) | β
MIT (open source) |
|
|
125
|
+
| Customization | β οΈ Configurable | β
Full pipeline code |
|
|
126
|
+
|
|
127
|
+
**vs. Enterprise Platforms ([ServiceNow](https://www.servicenow.com/products/ai-agents.html), [Copilot Studio](https://www.microsoft.com/microsoft-copilot/microsoft-copilot-studio), [Einstein](https://www.salesforce.com/products/einstein/einstein-ai-agent/))**
|
|
128
|
+
|
|
129
|
+
[ServiceNow AI Agents](https://www.servicenow.com/products/ai-agents.html), [Microsoft Copilot Studio](https://www.microsoft.com/microsoft-copilot/microsoft-copilot-studio), and [Salesforce Einstein Agent](https://www.salesforce.com/products/einstein/einstein-ai-agent/) are locked to their respective ecosystems β great if you live in those platforms, expensive and restrictive otherwise. Quay integrates with *any* LLM provider via [A3M Router](https://github.com/Das-rebel/a3m-router) and any MCP tool server.
|
|
130
|
+
|
|
131
|
+
| Capability | ServiceNow / Copilot Studio / Einstein | **Quay** |
|
|
132
|
+
|-----------|----------------------------------------|----------|
|
|
133
|
+
| Non-proprietary LLMs | β | β
Any via [A3M](https://github.com/Das-rebel/a3m-router) |
|
|
134
|
+
| MCP tool servers | β οΈ Via integration | β
Native |
|
|
135
|
+
| Self-hosted | β | β
|
|
|
136
|
+
| Transparent pricing | β Enterprise quote | β
Open source |
|
|
137
|
+
| Custom pipeline stages | β οΈ Flow Designer | β
Any stage, any code |
|
|
138
|
+
| Data residency | β Cloud-only | β
Full control |
|
|
139
|
+
|
|
140
|
+
**vs. Startups ([MultiOn](https://multion.ai), [Adept](https://www.adept.ai/act), [Airkit](https://www.airkit.com), [Embra](https://www.embra.ai), [Corr](https://corr.ai))**
|
|
141
|
+
|
|
142
|
+
Most AI agent startups are either browser-focused ([MultiOn](https://multion.ai)), enterprise-SaaS with opaque pricing ([Adept](https://www.adept.ai/act), [Corr](https://corr.ai)), or narrow-use-case ([Airkit](https://www.airkit.com)). Quay is the only open-source option with a full production software factory β complete state machine, real-time dashboard, audit trail, MCP, and cost logging β without vendor lock-in.
|
|
143
|
+
|
|
144
|
+
### Scoring Summary
|
|
145
|
+
|
|
146
|
+
Based on the comparison across 13 key parameters:
|
|
147
|
+
|
|
148
|
+
| Category | [Quay](https://github.com/Das-rebel/quay) Score | Best Open Source | Best Enterprise |
|
|
149
|
+
|----------|--------------------------------------|-----------------|-----------------|
|
|
150
|
+
| Deployment flexibility | 10/10 β
| 10/10 ([AutoGen](https://microsoft.github.io/autogen), [CrewAI](https://www.crewai.com)) | 4/10 ([ServiceNow](https://www.servicenow.com/products/ai-agents.html)) |
|
|
151
|
+
| LLM flexibility | 10/10 β
| 10/10 ([Quay](https://github.com/Das-rebel/quay), [AutoGen](https://microsoft.github.io/autogen)) | 3/10 ([Copilot Studio](https://www.microsoft.com/microsoft-copilot/microsoft-copilot-studio)) |
|
|
152
|
+
| MCP integration | 10/10 β
| 5/10 ([CrewAI](https://www.crewai.com)) | 3/10 ([ServiceNow](https://www.servicenow.com/products/ai-agents.html)) |
|
|
153
|
+
| Cost transparency | 10/10 β
| 0/10 ([AutoGen](https://microsoft.github.io/autogen), [OpenDevin](https://www.all-hands.dev)) | 2/10 ([XHawk](https://xhawk.ai)) |
|
|
154
|
+
| Real-time dashboard | 9/10 β
| 3/10 ([OpenDevin](https://www.all-hands.dev)) | 6/10 ([Copilot Studio](https://www.microsoft.com/microsoft-copilot/microsoft-copilot-studio)) |
|
|
155
|
+
| Task state machine | 10/10 β
| 0/10 (most OSS) | 7/10 ([ServiceNow](https://www.servicenow.com/products/ai-agents.html)) |
|
|
156
|
+
| Audit trail depth | 10/10 β
| 2/10 ([LangGraph](https://www.langchain.com/langgraph)) | 8/10 ([ServiceNow](https://www.servicenow.com/products/ai-agents.html)) |
|
|
157
|
+
| Autonomous coding | 9/10 β
| 8/10 ([OpenDevin](https://www.all-hands.dev)) | 6/10 ([XHawk](https://xhawk.ai)) |
|
|
158
|
+
| Pipeline customization | 10/10 β
| 7/10 ([CrewAI](https://www.crewai.com)) | 5/10 ([Workato](https://www.workato.com)) |
|
|
159
|
+
| Multi-agent support | 8/10 β
| 7/10 ([MetaGPT](https://www.deepwisdom.ai)) | 7/10 ([XHawk](https://xhawk.ai)) |
|
|
160
|
+
| Open source | 10/10 β
| 10/10 ([Quay](https://github.com/Das-rebel/quay), [AutoGen](https://microsoft.github.io/autogen)) | 0/10 |
|
|
161
|
+
| Production readiness | 8/10 β
| 4/10 ([OpenDevin](https://www.all-hands.dev)) | 8/10 ([ServiceNow](https://www.servicenow.com/products/ai-agents.html)) |
|
|
162
|
+
| **Total** | **114/130** | ~58/130 (best OSS) | ~58/130 (best ent) |
|
|
163
|
+
|
|
164
|
+
**Quay is the only platform that combines: self-hosted deployment + any LLM via [A3M Router](https://github.com/Das-rebel/a3m-router) + native MCP + per-call cost transparency + full state machine + real-time dashboard + open source MIT license.**
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## π Quick Start
|
|
169
|
+
|
|
170
|
+
### Prerequisites
|
|
171
|
+
- [Bun](https://bun.sh) β₯ 1.0 or Node.js β₯ 18
|
|
172
|
+
- SQLite (built-in via `bun:sqlite`)
|
|
173
|
+
|
|
174
|
+
### Install
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
git clone https://github.com/Das-rebel/quay.git
|
|
178
|
+
cd quay
|
|
179
|
+
bun install
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### Seed the Database
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
bun run scripts/seed.ts
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Start the API Server
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
bun run src/server/index.ts
|
|
192
|
+
# β http://localhost:3001
|
|
193
|
+
# β Health: http://localhost:3001/health
|
|
194
|
+
# β API key: quay-dev-key (development only)
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Start the Dashboard
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
npm run dev
|
|
201
|
+
# β http://localhost:5173
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Configure MCP Servers (optional)
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
export QUAY_MCP_SERVERS='[{"name":"filesystem","command":"npx","args":["-y","@modelcontextprotocol/server-filesystem","/tmp"]}]'
|
|
208
|
+
bun run src/server/index.ts
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## ποΈ Architecture
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
quay/
|
|
217
|
+
βββ src/
|
|
218
|
+
β βββ server/
|
|
219
|
+
β β βββ index.ts # Hono API + auth middleware + all routes
|
|
220
|
+
β β βββ db/
|
|
221
|
+
β β β βββ schema.ts # Drizzle schema (7 tables)
|
|
222
|
+
β β β βββ index.ts # bun:sqlite wrapper (dbq)
|
|
223
|
+
β β βββ agents/
|
|
224
|
+
β β β βββ agentRunner.ts # SWE-agent: observeβplanβactβreflect loop
|
|
225
|
+
β β βββ pipeline/
|
|
226
|
+
β β β βββ pipeline.ts # Role-based executor: engineerβreviewerβsecurity
|
|
227
|
+
β β βββ memory/
|
|
228
|
+
β β β βββ memoryTree.ts # 3-tier memory + knowledge graph
|
|
229
|
+
β β βββ mcp/
|
|
230
|
+
β β β βββ index.ts # MCP stdio registry + tools/call
|
|
231
|
+
β β βββ sse/
|
|
232
|
+
β β βββ index.ts # SSE broadcaster + heartbeat
|
|
233
|
+
β βββ routes/
|
|
234
|
+
β β βββ +page.svelte # Mission Control dashboard (dark UI)
|
|
235
|
+
β βββ lib/
|
|
236
|
+
β βββ stores/
|
|
237
|
+
β βββ quay.ts # Svelte stores + API helpers
|
|
238
|
+
βββ scripts/
|
|
239
|
+
β βββ seed.ts # Seed script with sample project/tasks/agents
|
|
240
|
+
βββ quay.db # SQLite database (gitignored)
|
|
241
|
+
βββ drizzle.config.ts
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### API Endpoints
|
|
245
|
+
|
|
246
|
+
| Method | Path | Description |
|
|
247
|
+
|---|---|---|
|
|
248
|
+
| `GET` | `/health` | Health check (no auth) |
|
|
249
|
+
| `GET` | `/sse` | SSE stream (no auth) |
|
|
250
|
+
| `GET` | `/api/projects` | List all projects |
|
|
251
|
+
| `POST` | `/api/projects` | Create project |
|
|
252
|
+
| `GET` | `/api/projects/:id/tasks` | List tasks for project |
|
|
253
|
+
| `POST` | `/api/projects/:id/tasks` | Create task |
|
|
254
|
+
| `GET` | `/api/projects/:id/kanban` | Kanban view (7 columns) |
|
|
255
|
+
| `POST` | `/api/tasks/:id/transition` | Trigger state transition |
|
|
256
|
+
| `POST` | `/api/tasks/:id/run` | Run pipeline on task |
|
|
257
|
+
| `GET` | `/api/agents` | List all agents |
|
|
258
|
+
| `PATCH` | `/api/agents/:id/status` | Update agent status |
|
|
259
|
+
| `GET` | `/api/stats` | Global dashboard stats |
|
|
260
|
+
| `POST` | `/api/test-event` | Broadcast SSE test event |
|
|
261
|
+
| `GET` | `/api/mcp/tools` | List registered MCP tools |
|
|
262
|
+
|
|
263
|
+
### Task State Machine
|
|
264
|
+
|
|
265
|
+
```
|
|
266
|
+
BACKLOG β QUEUED β IN_PROGRESS β REVIEW β DONE
|
|
267
|
+
β β β β
|
|
268
|
+
(SUBMIT) (ASSIGN) (STEP_COMPLETE) (APPROVE)
|
|
269
|
+
β β
|
|
270
|
+
FAILED βββββββ (REJECT)
|
|
271
|
+
β
|
|
272
|
+
(RETRY)
|
|
273
|
+
β
|
|
274
|
+
QUEUED
|
|
275
|
+
|
|
276
|
+
BLOCKED β (can block from REVIEW)
|
|
277
|
+
β
|
|
278
|
+
(UNBLOCK) β QUEUED
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## π§ Configuration
|
|
284
|
+
|
|
285
|
+
| Environment Variable | Default | Description |
|
|
286
|
+
|---|---|---|
|
|
287
|
+
| `QUAY_API_KEY` | `quay-dev-key` | Bearer token for API auth |
|
|
288
|
+
| `QUAY_PORT` | `3001` | API server port |
|
|
289
|
+
| `QUAY_MCP_SERVERS` | `[]` | JSON array of MCP server configs |
|
|
290
|
+
|
|
291
|
+
### MCP Server Config Format
|
|
292
|
+
|
|
293
|
+
```json
|
|
294
|
+
[
|
|
295
|
+
{
|
|
296
|
+
"name": "filesystem",
|
|
297
|
+
"command": "npx",
|
|
298
|
+
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
"name": "git",
|
|
302
|
+
"command": "uvx",
|
|
303
|
+
"args": ["mcp-server-git", "--repository", "/path/to/repo"]
|
|
304
|
+
}
|
|
305
|
+
]
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
## π¦ Tech Stack
|
|
311
|
+
|
|
312
|
+
| Layer | Technology |
|
|
313
|
+
|---|---|
|
|
314
|
+
| API Server | [Hono](https://hono.dev) + [Bun](https://bun.sh) |
|
|
315
|
+
| Database | [SQLite](https://www.sqlite.org) via [Drizzle ORM](https://orm.drizzle.team) + `bun:sqlite` |
|
|
316
|
+
| Dashboard | [SvelteKit](https://kit.svelte.dev) 5 (runes) |
|
|
317
|
+
| AI Routing | [A3M Router](https://github.com/Das-rebel/a3m-router) |
|
|
318
|
+
| Agent Protocol | [Model Context Protocol (MCP)](https://modelcontextprotocol.io) |
|
|
319
|
+
| Task Queue | [BullMQ](https://docs.bullmq.io) + [Redis](https://redis.io) |
|
|
320
|
+
| Streaming | [Server-Sent Events (SSE)](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events) |
|
|
321
|
+
| Validation | [Zod](https://zod.dev) |
|
|
322
|
+
|
|
323
|
+
---
|
|
324
|
+
|
|
325
|
+
## π Roadmap
|
|
326
|
+
|
|
327
|
+
- [ ] **v0.2** β MCP server registry UI in Mission Control
|
|
328
|
+
- [ ] **v0.3** β GitHub/GitLab webhook triggers for automatic task creation
|
|
329
|
+
- [ ] **v0.4** β Docker sandbox execution for agent isolation
|
|
330
|
+
- [ ] **v0.5** β Kubernetes operator for multi-tenant deployment
|
|
331
|
+
- [ ] **v1.0** β Production hardening: rate limiting, OAuth2, HA mode
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
## π€ Contributing
|
|
336
|
+
|
|
337
|
+
Contributions are welcome. Please read [CONTRIBUTING.md](CONTRIBUTING.md) before opening PRs.
|
|
338
|
+
|
|
339
|
+
1. Fork the repository
|
|
340
|
+
2. Create your feature branch (`git checkout -b feat/your-feature`)
|
|
341
|
+
3. Run tests (`bash scripts/test-quay.sh`)
|
|
342
|
+
4. Commit and push
|
|
343
|
+
5. Open a Pull Request
|
|
344
|
+
|
|
345
|
+
---
|
|
346
|
+
|
|
347
|
+
## π License
|
|
348
|
+
|
|
349
|
+
MIT License β see [LICENSE](LICENSE)
|