Zum Inhalt springen

Flutter đź’™ Jules (setting up container for background AI Agent)

At this Google I/O, Google introduced a new development tool: https://jules.google.com

What are the advantages? It’s currently free, runs on Gemini, and it’s an AI Agent.

What does this mean (example)? Often, there’s a problem where the number of modules or libraries you’d like to create or maintain in the project exceeds what can be maintained (if you are solo or small team), especially if you’re managing an open-source library in spare time.
Background agents help take on some of the work. I’ve found them useful for documentation, light refactoring, and implementing small features.

To get started, you can usually use a short prompt to pre-create a plan that Jules will partially follow (in reality, it will recreate the plan, but having references will make it easier):

Please write a condensed plan for an AI Agent so it can execute it step by step. Make sure that the plan has only one final goal; otherwise, ask the user what to do.
Make sure that the plan contains original links to sources, a chosen configuration script, and is written in a way that allows for one-click copy & paste.

This plan can be created in any AI chat, but when working with the plan, it’s advisable to specify the project/documentation the agent will be working with.
An important part of the prompt that needs to be included in the prompt-plan is the Flutter installation in Ubuntu:

Always add as first steps:

  1. Branch & Environment Setup
    1.1 Create a new branch from the default branch (e.g., {name}).
    1.2 Run the provided environment setup scripts to ensure Dart, FVM, and Flutter are correctly installed and configured.
  2. For flutter fvm (should be dependent from what user asks):
# Install Dart SDK (using apt, official Google repo)
sudo apt-get update
sudo apt-get install -y apt-transport-https wget
wget -qO- https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo sh -c 'wget -qO- https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list’
sudo apt-get update
sudo apt-get install -y dart
# Add Dart to PATH
export PATH="$PATH:/usr/lib/dart/bin”
# Install FVM globally
dart pub global activate fvm
# Add FVM to PATH
export PATH="$PATH:$HOME/.pub-cache/bin”
# Install Flutter version from .fvmrc
fvm install
# Get Flutter dependencies
fvm flutter pub get
  • For flutter without fvm:
# Install Dart SDK (using apt, official Google repo)
sudo apt-get update
sudo apt-get install -y apt-transport-https wget
wget -qO- https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo sh -c 'wget -qO- https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list’
sudo apt-get update
sudo apt-get install -y dart
# Add Dart to PATH
export PATH="$PATH:/usr/lib/dart/bin”
flutter pub get

Why is this important?

Initially, Jules (like Cursor background agents and Codex) runs in an isolated environment. Since Dart & Flutter are typically not present in the container, they need to be forcibly installed before starting work on a project. By declaring this in the initial prompt, we provide clearer instructions on how the agent should act, which enables it to complete the task with higher quality.

I hope this concept proves useful 🙂

Please share your thoughts in the comments 🙂 This will help make this article visible to others and will be great support and motivation 🙂

Thank you for your time and have a good day!
Anton

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert