Day 4 of 5

Firebase Integration

Floating agents need persistent storage. Today you will connect your Antigravity fleet to Firebase Firestore so agents can read mission parameters, log flight data, and resume after an emergency landing.

python
import firebase_admin
from firebase_admin import credentials, firestore
import antigravity as ag

# Initialize Firebase
cred = credentials.Certificate('serviceAccountKey.json')
firebase_admin.initialize_app(cred)
db = firestore.client()

# Store agent mission parameters in Firestore
def save_mission(mission_id: str, params: dict):
    db.collection('missions').document(mission_id).set({
        **params,
        'status': 'pending',
        'created_at': firestore.SERVER_TIMESTAMP,
    })

# Agent reads its mission from Firestore on liftoff
from antigravity.agents import FloatingAgent

agent = FloatingAgent(name='mission-agent', model='gemini-gravity-pro')

@agent.on_liftoff
async def load_mission():
    doc = db.collection('missions').document(agent.mission_id).get()
    if not doc.exists:
        raise ValueError(f'Mission {agent.mission_id} not found')
    return doc.to_dict()

# Log telemetry in real-time
@agent.on_telemetry
async def log_telemetry(data: dict):
    db.collection('telemetry').add({
        'agent_id': agent.id,
        'altitude': data['altitude'],
        'timestamp': firestore.SERVER_TIMESTAMP,
        **data,
    })
python
# Resume after crash landing
@agent.on_emergency_landing
async def save_checkpoint(state: dict):
    db.collection('checkpoints').document(agent.id).set(state)

@agent.on_liftoff
async def restore_checkpoint():
    doc = db.collection('checkpoints').document(agent.id).get()
    if doc.exists:
        print('Resuming from checkpoint...')
        return doc.to_dict()

Exercise: Connect an Agent to Firestore

  1. Initialize Firebase Admin SDK in Python
  2. Write a function that saves a task to Firestore
  3. Have your agent read the task on startup
  4. Log progress updates to a 'logs' collection
  5. Implement checkpoint/restore for crash recovery

Day 4 Summary

Finished this lesson?