· Engineering  · 4 min read

Mac Mini'de Mastra ile AI Agent Ekosistemi Kurmak

Mac Mini üzerinde Mastra framework'ü ile 6 agent, 75+ tool, RAG sistemi ve Cloudflare Tunnel içeren tam teşekküllü bir AI agent ekosistemi nasıl kurulur?

Mac Mini üzerinde Mastra framework'ü ile 6 agent, 75+ tool, RAG sistemi ve Cloudflare Tunnel içeren tam teşekküllü bir AI agent ekosistemi nasıl kurulur?

Yazar: Erkan Bartan | Tarih: 20 Mart 2026


Neden Kendi Sunucunda AI Agent?

Bulut servisleri harika ama bazen kontrolü elinizde tutmak istiyorsunuz — veri gizliliği, maliyet, gecikme süresi veya sadece “benim makinem, benim kurallarım” hissi. Ben de Mac Mini üzerinde Mastra framework’ü ile tam teşekküllü bir AI agent ekosistemi kurdum. Sonuç: 6 agent, 75+ tool, RAG sistemi, Cloudflare Tunnel ile dışarıya açık — hepsi ~1500 satır TypeScript.

Mastra Nedir?

Mastra, TypeScript tabanlı açık kaynak bir AI agent framework’ü. npx create-mastra@latest ile başlıyorsunuz, dakikalar içinde çalışan bir agent sisteminiz oluyor. Studio arayüzü ile tarayıcıdan test ediyorsunuz.

Temel yapı taşları:

  • Agent = LLM + Tools + Memory + Instructions
  • Tool = Agent’ın çağırabileceği herhangi bir fonksiyon
  • Workflow = Adım bazlı iş akışı (dallanma, duraklatma/devam)
  • Memory = Konuşma geçmişi + semantik hatırlama
  • Processor = LLM öncesi/sonrası middleware
  • MCP = Dış araçlara standart bağlantı protokolü

Mimari

Mac Mini
├── Mastra Studio (localhost:4111) ← pm2 ile sürekli çalışıyor
├── Cloudflare Tunnel ← pm2 ile sürekli çalışıyor
│   └── mastra.explorebodrum.blog → localhost:4111
├── LibSQL (mastra.db) ← agent hafızası + observability
├── LibSQL Vector (rag-vector.db) ← 328 chunk, 26MB
└── gh CLI ← GitHub private repo erişimi

Cloudflare Tunnel sayesinde https://mastra.explorebodrum.blog adresinden her yerden erişebiliyorum. Tek dikkat edilecek nokta: Mastra sadece IPv6 loopback’te dinliyor, bu yüzden tunnel config’de http://[::1]:4111 kullanmak gerekiyor.

Kurduğum 6 Agent

1. Weather Agent

İlk ve en basit agent. Open-Meteo API’si ile şehir adından hava durumu çekiyor. Geocoding + meteoroloji verisi tek seferde.

2. Research Agent

DuckDuckGo üzerinden web araması yapan, sayfaları okuyan ve Türkçe özet çıkaran araştırma asistanı. İki tool’u var: web-search ve fetch-page. Kaynakları belirtiyor, bilgileri çapraz kontrol ediyor.

3. MCP Agent (60+ Tool)

En güçlü agent. Üç farklı kaynağı birleştiriyor:

  • Filesystem MCP — workspace dizininde dosya okuma/yazma
  • GitHub MCP — GitHub’ın resmi MCP server’ı üzerinden 57 tool (repo, issue, PR, dosya işlemleri)
  • Browser tool’ları — web sayfalarını fetch edip içerik ve yapı analizi

Tek agent ile dosya yönetimi, GitHub işlemleri ve web tarama yapabiliyorsunuz.

4. RAG Agent

İki web sitesini (microfueturkey.com ve teslatravel.com) crawl edip vektör veritabanına yükledim. Agent bu bilgi tabanından sorulara cevap veriyor.

Crawl pipeline’ı: site tarama → metin çıkarma → 500 karakterlik chunk’lara bölme → FastEmbed ile lokal embedding → LibSQL Vector’e kaydetme.

FastEmbed’in avantajı: API key gerektirmiyor, tamamen lokalde çalışıyor. 328 chunk’ı saniyeler içinde embed etti.

5. GitHub Agent (Public API)

GitHub REST API üzerinden kullanıcı profillerini analiz eden agent. Yıldızlanan repoları tarih sırasıyla çekiyor, dil dağılımını özetliyor.

6. GitHub Private Agent (gh CLI)

En pratik agent. gh CLI’ı execSync ile sarmalayarak 8 tool oluşturdum:

  • Repo listele/detay göster
  • Dosya ağacı ve içerik okuma
  • Issue oluşturma/listeleme
  • PR listeleme
  • Tüm repolarda kod arama

GitHub’ın MCP server’ı güzel çalışıyor ama gh CLI sarmalama daha basit ve güvenilir — private repolar dahil her şeye erişim var.

2 Workflow

Weather Workflow: Şehir adı gir → hava durumu çek → aktivite öner. Agent’ı adım içinde kullanarak doğal dilde öneriler üretiyor.

Research Workflow: 3 adımlı araştırma pipeline’ı — konudan arama sorguları üret, her sorgu için web araması yap, sonuçları Türkçe rapor olarak derle. Mastra’nın createWorkflow + createStep API’si ile adımlar arası veri akışı şema bazlı (Zod) ve type-safe.

Processor ile Konuşma Loglama

Tüm agent’lara eklediğim ConversationLogger processor’ı her mesajı günlük JSONL dosyalarına kaydediyor. Processor’lar LLM’e gitmeden önce (input) ve LLM yanıt verdikten sonra (output) çalışıyor — middleware pattern’i gibi düşünün.

Rakamlarla

MetrikDeğer
Agent6
Workflow2
Tool75+
RAG chunk328
Vektör DB26 MB
TypeScript kodu~1500 satır
LLMOpenRouter → Claude Sonnet 4
EmbeddingFastEmbed (lokal)
HostingMac Mini + Cloudflare Tunnel

Öğrendiklerim

  • MCP schema uyumsuzluğu olabilir. Playwright MCP’nin JSON Schema draft-2020-12’si Mastra’nın draft-07 validator’ı ile çalışmadı. Çözüm: kendi fetch tabanlı browser tool’umu yazdım.
  • IPv6 dikkat. Mastra sadece IPv6 loopback’te dinliyor. Cloudflare Tunnel config’de http://[::1]:4111 kullanmak gerekiyor, localhost veya 127.0.0.1 çalışmıyor.
  • FastEmbed büyük kolaylık. RAG için API key’e bağımlı olmadan lokal embedding yapabilmek geliştirme sürecini çok hızlandırıyor.
  • gh CLI sarmalama pragmatik. Karmaşık MCP entegrasyonu yerine execSync ile CLI sarmalama bazen en iyi çözüm.
  • pm2 şart. mastra dev ve cloudflared ikisi de pm2 ile daemon olarak çalışmalı, yoksa terminal kapandığında her şey duruyor.

Başlamak İsteyenler İçin

npx create-mastra@latest
cd my-project
# .env dosyasına OPENROUTER_API_KEY ekle
npx mastra dev
# http://localhost:4111 açılır

Sonra agent ekle, tool yaz, workflow kur. Mastra Studio’dan tarayıcıda test et. Dışarıya açmak istersen Cloudflare Tunnel ekle.

Back to Blog

Related Posts

View All Posts »