Ada

portfolio.yaml not configured

—

Case study

In brief

  1. Problem

    Edge operators want an AI assistant that runs on their own hardware with predictable cost and local state—not another hosted SaaS with opaque billing.

  2. Approach

    Built a headless Python agent for Raspberry Pi-class devices: SQLite per profile, allowlisted shell commands, Gemini chat, and token budgets for cost control.

  3. Outcome

    One install supports interactive chat, queued background goals, offline RSS and Search Console ingest, and deterministic workflows that draft and publish SEO pages to S3.

Look closer

Stage

Architecture

Primary path: chat → orchestrator → allowlisted tools → SQLite. Cron publish and HUD read paths exist but are secondary on this map.

Architecture

Operator surfacesAgent coreLocal truth
ada chat (Entity / Agent / Plan)
cron / systemd
ada hud (read-only)
ada daemon (goals + workflows)
Orchestrator (Gemini tools)
Tool executor (allowlist)
memory/*.md
state.db (SQLite)
Publish workflows → S3
S3 page.json + manifest

Proof

portfolio.yaml not configured

Proof

$ ada status
profile: default
db: ~/.ada/profiles/default/state.sqlite
worker: running (pid 4821)
token_budget: 12000 remaining

$ ada chat "summarize today's RSS ingest"
[agent] loading tools: rss_fetch, sqlite_query, shell_allowlist
[tool] rss_fetch → 14 items from 3 feeds
[tool] sqlite_query → INSERT ingest_queue (14 rows)
[agent] queued 3 goals for background worker

$ ada worker --once
[worker] goal: draft_seo_page slug=em-bail-accommodation
[tool] search_console → impressions=142, ctr=6.2%
[tool] s3_put → s3://site-pages/em-bail-accommodation.html
[worker] done — quality gate passed

Continue