Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
2e23d39
Add progress notification support and fix incorrect diff (#326)
arsenyinfo Jul 7, 2025
b81a27b
fix missing tool use id (#328)
arsenyinfo Jul 7, 2025
20f3a8a
improvements for NiceGUI UI (#330)
arsenyinfo Jul 7, 2025
efbd0bb
Disable Dagger telemtry (#332)
keugenek Jul 10, 2025
5bb37f6
Fix/endless loop refinement (#331)
keugenek Jul 10, 2025
72bb091
consistency for healthcheck between NiceGUI and tRPC (#333)
arsenyinfo Jul 14, 2025
68b2817
Add NiceGUI trace viewer (#334)
arsenyinfo Jul 14, 2025
d5e1e48
Add DBRX integration (#335)
arsenyinfo Jul 14, 2025
2443bf3
Logging improvement
keugenek Jul 15, 2025
47d673e
Refinement requests reporting
keugenek Jul 15, 2025
e7db8a2
fix CI build (#337)
arsenyinfo Jul 15, 2025
c299bc7
Fix tool_use ID mismatch (#339)
arsenyinfo Jul 15, 2025
b17b082
[Laravel] PR1 - Put scaffolding in (#340)
keugenek Jul 15, 2025
29406a1
Fix handle_custom_tool method signature mismatch (#341)
arsenyinfo Jul 15, 2025
8fe146e
Fix actor method signatures (#342)
arsenyinfo Jul 16, 2025
b2d7477
Stack agnostic agent prompts not to frustrate different specific agen…
keugenek Jul 17, 2025
87c903c
e2e support for laravel template (#344)
keugenek Jul 17, 2025
55cf97d
Simplify and use native TRPC context.
igrekun Jul 17, 2025
1e6aa7f
update readme
arsenyinfo Jul 18, 2025
52e9b66
Readme update with Laravel early support
keugenek Jul 18, 2025
23c500e
feat: Add enhanced telemetry for LLM API calls (#354)
keugenek Jul 18, 2025
d39ec22
Ollama support readme note
keugenek Jul 18, 2025
f14f14f
Docker compose workaround for Laravel to avoid no APP_KEY env var set…
keugenek Jul 21, 2025
997aee2
UC data source integration (#336)
arsenyinfo Jul 21, 2025
2ee1bf8
Patchfix for laravel agent to avoid missing APP_KEY error during gene…
keugenek Jul 21, 2025
18febae
[Laravel] Fix common failures in laravel (#355)
keugenek Jul 21, 2025
dcea439
Fix Laravel agent empty snapshot handling and formatting (#356)
arsenyinfo Jul 22, 2025
86b3648
[Laravel] Remove binary files from template to workaround unsupported…
keugenek Jul 22, 2025
f843b69
[Laravel] Another binary removed
keugenek Jul 22, 2025
001b0a2
add alloy llm support (#353)
arsenyinfo Jul 22, 2025
6f3e8e2
Fix e2e for diff application
keugenek Jul 22, 2025
55f472e
Remove .github folder from laravel template and move to readme
keugenek Jul 22, 2025
f20905e
[Laravel] Adapting to deployment env var
keugenek Jul 23, 2025
22dc651
Add standard DB URL for Koyeb (#358)
keugenek Jul 23, 2025
ab5f9ba
[Laravel] Another fix for APP_DATABASE_URL
keugenek Jul 23, 2025
fcbcdd3
Add ast-grep support (#357)
arsenyinfo Jul 23, 2025
3aca691
Add rules and update pyproject config (#359)
arsenyinfo Jul 23, 2025
23a12b0
fix: laravel tempalte for deployment (#360)
pffigueiredo Jul 23, 2025
0e6aebc
Increase number of iterations in laravel
keugenek Jul 23, 2025
a7e7f05
[Laravel] Prompt fixes for correct Inertia renders (#361)
keugenek Jul 24, 2025
ba1d595
add nicegui cursorrules (#327)
arsenyinfo Jul 24, 2025
e4dcf1e
fix: http assets serving in Laravel apps in production (#365)
pffigueiredo Jul 24, 2025
a977c33
[Temp] Ignore nicegui tests until timeout fixed
keugenek Jul 24, 2025
f9f4c4f
Feat/laravel update template (#362)
keugenek Jul 24, 2025
2a09b4e
fix: app_env on docker compose (#367)
pffigueiredo Jul 24, 2025
c1525d8
many changes for NiceGUI reliability (#368)
arsenyinfo Jul 28, 2025
d02d01b
remove py files from cursor rules
arsenyinfo Jul 28, 2025
c5ebc74
Merge remote-tracking branch 'origin/main' into neon-auth-ctx
igrekun Jul 28, 2025
aac5f4b
Update playbooks.
igrekun Jul 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ jobs:
timeout-minutes: 20
strategy:
matrix:
template: [nicegui, trpc]
template: [trpc, laravel] # TODO: return after test fix nicegui
steps:
- name: Checkout repository
uses: actions/checkout@v3
Expand Down
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@ dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
Expand Down Expand Up @@ -174,3 +172,4 @@ agent/app_dumps.zip
agent/FSMAppRecovery.ipynb
agent/app_dumps/*.*
agent/bin/*.*
agent/laravel_agent/template_backup_*/**
28 changes: 23 additions & 5 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

## Basic Usage

1) Install [uv](https://docs.astral.sh/uv/getting-started/installation/) and [dagger](https://dagger.io)
1) Install [uv](https://docs.astral.sh/uv/getting-started/installation/) and [dagger](https://dagger.io)
2) Make sure you have `ANTHROPIC_API_KEY` and `GEMINI_API_KEY` env vars available.
3) Run the commands
3) Run the commands

### Commands

Expand All @@ -19,9 +19,28 @@ uv run generate "my app description" # generate an app from scratch using full p
uv run interactive # a naive debug client working with local server
```

### App templates

We support three app templates:
- **trpc**: Full-stack web app with Bun, React, Vite, Fastify, tRPC and Drizzle
- **python**: Data-oriented app with Python, NiceGUI, and SQLModel
- **laravel**: Full-stack web app with Laravel, React, TypeScript, Tailwind CSS, and Inertia.js (early version)

You can specify the template when generating an app, e.g.:

```bash
uv run generate "make a dashboard showing my current stock portfolio value using up to date prices from yfinance" --template_id "nicegui_agent"
```
or

```bash
uv run generate "make a presentation-like website with multiple pages with content and next buttons on each. last page mush show a counter that increments each time this presentation has been shown" --template_id "laravel_agent"
```


### Testing with debug client on prod servers

1. Make sure you have the `uv` installed
1. Make sure you have the `uv` installed
2. `uv run interactive --host yourhostname --port 80` (or change the host if needed);
3. In the client, prompt for your app.
4. Waste some time, get some tea.
Expand All @@ -37,7 +56,7 @@ We use VCR for testing LLM calls. VCR records LLM completions and saves them to

- **Record mode**: Makes real API calls, saves responses to cache
- **Replay mode**: Uses only cached responses
- **LRU mode**: Tries using cached responses, but can call APIs too.
- **LRU mode**: Tries using cached responses, but can call APIs too.
- **Off mode**: No caching, direct API calls

Default usage (to run tests with cached responses):
Expand All @@ -51,4 +70,3 @@ If you want to record new responses, use:
LLM_VCR_CACHE_MODE=record uv run pytest .
```
New responses should be recorded in case of prompt changes or other significant changes in the pipeline (e.g. template modification, adding new steps etc.). VCR cache is stored in ./agent/llm/llm_cache.json by default, and new version should be committed to the repository.

47 changes: 39 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,54 @@

## What it builds

- **Full-stack web apps** with Bun, React, Vite, Fastify and Drizzle
- **Neon Postgres database** provisioned instantly via API
We're currently supporting the following application types:

### tRPC CRUD Web Applications

- **Full-stack web apps** with Bun, React, Vite, Fastify, tRPC and Drizzle;
- **Automatic validation** with ESLint, TypeScript, and runtime verification;
- **Applications tested** ahead of generation with smoke tests using Playwright

### Laravel Web Applications (Alpha Version)

- **Full-stack web apps** with Laravel, React, TypeScript, Tailwind CSS, and Inertia.js;
- **Modern Laravel 12** with PHP 8+ features and strict typing;
- Designed to become production-ready soon with authentication, validation, code style enforcement and testing infrastructure;

### Data-oriented Applications

- **Data apps** with Python + NiceGUI + SQLModel stack - perfect for dashboards and data visualization;
- **Automatic validation** using pytest, ruff, pyright, and runtime verification;
- **Additional packages management** with uv;

All applications support:
- **Neon Postgres database** provisioned instantly via API
- **GitHub repository** with complete source code
- **CI/CD and deployment** via the [app.build platform](https://github.com/appdotbuild/platform)
- **Automatic validation** with ESLint, TypeScript, and runtime verification
- **CI/CD and deployment** via the [app.build platform](https://github.com/appdotbuild/platform).

New application types are work in progress, stay tuned for updates!

## Try it

### Via the [managed service](https://app.build)

```bash
# for tRPC CRUD apps
npx @app.build/cli

for Python/NiceGUI apps
npx @app.build/cli --template=python
```

### Locally
Local usage and development instructions are available in [CONTRIBUTING.md](CONTRIBUTING.md).

### Local Models with Ollama (expreimental)

Want to run everything locally without API keys? We added experimental support [Ollama](https://ollama.ai) for local model inference. Set up Ollama, pull your preferred models, and run the agent completely offline. See [PROJECT_GUIDELINES.md](PROJECT_GUIDELINES.md) for detailed setup instructions and recommended models.

We are open for you contributions in better supporting local models. Feel free to send you PRs!

## Architecture

This agent doesn't generate entire applications at once. Instead, it breaks down app creation into small, well-scoped tasks that run in isolated sandboxes:
Expand All @@ -41,10 +76,6 @@ This is the **agent** repository containing the core code generation engine and

See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and contribution guidelines.

## Running locally

Local development instructions are available in [CONTRIBUTING.md](CONTRIBUTING.md).

---

Built to showcase agent-native infrastructure patterns. Fork it, remix it, use it as a reference for your own projects.
26 changes: 26 additions & 0 deletions agent/.env.local
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# LLM Configuration
# Set these environment variables to override default model selection

# For ultra fast tasks (commit names, simple completions)
# LLM_ULTRA_FAST_MODEL=gemini-flash-lite
LLM_ULTRA_FAST_MODEL=phi4:latest

# For best coding tasks (slow, high quality)
# LLM_BEST_CODING_MODEL=sonnet
LLM_BEST_CODING_MODEL=llama3.3:latest

# For universal tasks (medium speed, FSM tools)
# LLM_UNIVERSAL_MODEL=sonnet
LLM_UNIVERSAL_MODEL=llama3.3:latest

# For vision and UI analysis
# LLM_VISION_MODEL=gemini-flash-lite
LLM_VISION_MODEL=gemma3:27b

OLLAMA_HOST=http://localhost:11434

PREFER_OLLAMA=1

# Provider API keys
# ANTHROPIC_API_KEY=your_key_here
# GEMINI_API_KEY=your_key_here
9 changes: 6 additions & 3 deletions agent/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
FROM alpine:3.21.3 AS prod
FROM python:3.12-slim AS prod

RUN apk add --update --no-cache curl python3 docker
COPY --from=ghcr.io/astral-sh/uv:0.6.14 /uv /uvx /bin/
RUN apt-get update && apt-get install -y --no-install-recommends \
curl \
docker.io \
&& rm -rf /var/lib/apt/lists/*
COPY --from=ghcr.io/astral-sh/uv:0.7.20-debian /usr/local/bin/uv /usr/local/bin/uvx /usr/local/bin
RUN curl -fsSL https://dl.dagger.io/dagger/install.sh | BIN_DIR=/usr/local/bin sh

WORKDIR /app
Expand Down
Loading
Loading