Skip to main content

Documentation Index

Fetch the complete documentation index at: https://paper.brimble.io/llms.txt

Use this file to discover all available pages before exploring further.

Brimble’s build pipeline auto-detects most popular frameworks and pre-fills the install, build, and start commands. This page lists what’s detected and what defaults you get. If your stack isn’t listed, set the commands manually under Configuration. Anything that runs in a Linux container will work, detection is a convenience, not a requirement.

How detection works

Brimble inspects:
  • The repo root for known files (package.json, requirements.txt, Gemfile, go.mod, Cargo.toml, composer.json, pom.xml, build.gradle, mix.exs, Dockerfile).
  • The contents of those files for framework-specific signals (e.g. next in dependencies).
  • A few file-pattern checks (Procfile, wrangler.toml, etc.).
A Dockerfile at the repo root takes precedence, Brimble uses it directly and skips framework detection.

Node.js

Detected via package.json.
FrameworkService typeDefault commands
Next.js (server)Web servicenpm install, npm run build, npm start
Next.js (export)Static sitenpm install, npm run build, output out/
Nuxt 3Web servicenpm install, npm run build, node .output/server/index.mjs
SvelteKitWeb servicenpm install, npm run build, node build
RemixWeb servicenpm install, npm run build, npm start
ViteStatic sitenpm install, npm run build, output dist/
AstroStatic site or Web servicenpm install, npm run build, output dist/
Express / Fastify / KoaWeb servicenpm install, no build, npm start
NestJSWeb servicenpm install, npm run build, npm run start:prod
HonoWeb servicenpm install, npm run build, npm start
AdonisJSWeb servicenpm install, npm run build, node build/server.js
Package manager auto-detected from lockfile: package-lock.json npm, yarn.lock yarn, pnpm-lock.yaml pnpm, bun.lockb bun. Node version auto-detected from engines.node in package.json or a .nvmrc file. Latest LTS by default.

Python

Detected via requirements.txt, pyproject.toml, or Pipfile.
FrameworkService typeDefault commands
DjangoWeb servicepip install -r requirements.txt, gunicorn <project>.wsgi
FlaskWeb servicepip install -r requirements.txt, gunicorn app:app
FastAPIWeb servicepip install -r requirements.txt, uvicorn main:app --host 0.0.0.0 --port $PORT
Python version detected from .python-version, runtime.txt, or pyproject.toml. Defaults to a recent stable version. Package manager: pip (requirements.txt), Poetry (pyproject.toml with [tool.poetry]), or pipenv (Pipfile).

Ruby

Detected via Gemfile.
FrameworkService typeDefault commands
RailsWeb servicebundle install, bundle exec rails assets:precompile, bundle exec rails server -p $PORT -b 0.0.0.0
SinatraWeb servicebundle install, no build, bundle exec ruby app.rb -o 0.0.0.0 -p $PORT
Ruby version from .ruby-version or Gemfile.

Go

Detected via go.mod.
  • Service type: Web service.
  • Build: go build -o app .
  • Start: ./app
Go version from go.mod.

PHP

Detected via composer.json.
FrameworkService typeDefault commands
LaravelWeb servicecomposer install --no-dev, php artisan migrate --force, php artisan serve --host=0.0.0.0 --port=$PORT
SymfonyWeb servicecomposer install --no-dev, bin/console cache:clear, php -S 0.0.0.0:$PORT public/index.php

Java / Kotlin

Detected via pom.xml (Maven) or build.gradle / build.gradle.kts (Gradle).
FrameworkService typeDefault commands
Spring BootWeb service./mvnw package -DskipTests (or Gradle equivalent), java -jar target/*.jar
JVM version from pom.xml’s <java.version> or Gradle’s targetCompatibility.

Rust

Detected via Cargo.toml.
  • Service type: Web service.
  • Build: cargo build --release
  • Start: ./target/release/<bin-name>
Rust toolchain from rust-toolchain.toml or stable.

Elixir

Detected via mix.exs.
  • Service type: Web service.
  • Build: mix deps.get, mix compile, asset compilation if Phoenix.
  • Start: mix phx.server or MIX_ENV=prod elixir --erl '-detached' -S mix run --no-halt.

Static-only frameworks

FrameworkDefault commands
Hugohugo, output public/
Jekyllbundle install, bundle exec jekyll build, output _site/
Eleventy (11ty)npm install, npx eleventy, output _site/
Gatsbynpm install, npm run build, output public/
Docusaurusnpm install, npm run build, output build/
MkDocspip install mkdocs, mkdocs build, output site/
For all of the above, Brimble creates a static site project (no runtime container).

Dockerfile

If a Dockerfile exists at the project root, Brimble uses it directly:
  • Build: docker build -t <image> .
  • Start: docker run -e PORT=$PORT -p $PORT <image>
The Dockerfile must:
  • Use EXPOSE for the listener port (or the container must listen on $PORT regardless).
  • Run as a non-root user where possible.
  • End with a CMD that launches your service in the foreground.

Custom commands

For any framework, detected or not, you can override under Configuration:
  • Install command, typically the package manager install step.
  • Build command, anything that compiles or bundles. Empty for runtime-only languages.
  • Pre-start command, runs once per build, after the build, before the artifact is pushed. Useful for migrations.
  • Start command, launches the runtime container. Must keep the process in the foreground.
The commands run in bash. Standard shell features (pipes, redirects, &&) work.

Language version selection

Most frameworks default to a recent stable version. Pin a specific version via the language’s standard mechanism:
  • Node: engines.node in package.json, or .nvmrc.
  • Python: .python-version, runtime.txt, or pyproject.toml.
  • Ruby: .ruby-version or Gemfile.
  • Go: go.mod’s go directive.
  • Java: pom.xml <java.version> or Gradle targetCompatibility.
If detection picks the wrong version, the deployment logs will show the chosen version under the Detect phase. Pin explicitly to fix.
Last modified on May 9, 2026