# SSS

> Veri, hesaplar, kaynaklar, MCP endpoint'i, indeksleme ve AGPL lisansı hakkında kısa, kendi içinde tamam cevaplar.

- Güncelleme: 2026-09-24
- Kaynak: https://contextator.com/tr/docs/faq/
- Dil: tr-TR
- Yazar: Muhammet Şafak

---
### Dokümantasyonum makinemden çıkıyor mu?

Varsayılan ayarlarla değil. Gömmeler CPU'nuzda yerel olarak hesaplanır, ve veritabanı aynı konteynerin
içindedir. Varsayılan bir kurulumun yaptığı tek giden istekler, tek seferlik model indirmesi
(`EMBEDDING_OFFLINE=1`'in kaldırdığı) ve, onları yapılandırdıysanız, git host'unuzdan ya da Notion'dan
çekimlerdir. OpenAI gömmelerine geçmek doküman metnini gerçekten OpenAI'a gönderir — bu açık bir
seçimdir.

### Bir OpenAI API anahtarına ihtiyacım var mı?

Hayır. Opsiyoneldir. Bkz. [Gömme Modelleri](/tr/docs/embedding-models/).

### Bir GPU'ya ihtiyacım var mı?

Hayır. Gömme CPU'da çalışır.

### PostgreSQL kurmam gerekiyor mu?

Hayır. Konteynerin içinde gelir, yalnızca konteynerin loopback arayüzünde dinler.

### Hangi dosya türleri indekslenir?

Varsayılan olarak Markdown (`.md`) ve MDX (`.mdx`). Bir kaynağa ayrıca düz metin (`.txt`), HTML
(`.html`, `.htm`), CSV (`.csv`), Word (`.docx`) ve PDF (`.pdf`) alması da söylenebilir — ilk üçü
dışındaki her şey içeri girerken Markdown'a dönüştürülür, bu yüzden chunker, embedder ve
`read_document` her zaman yalnızca tek bir biçim görür. Bir OpenAPI ya da Swagger spesifikasyonu kendi
içerik türüdür ve operasyon başına bir doküman olur.

OCR yoktur, bu yüzden taranmış bir PDF, şifrelenmiş bir tane, ya da tamamen görsellerden oluşan bir
Word dosyası yarı indekslenmek yerine adıyla reddedilir, ve kaynağın geri kalanı normal şekilde
indekslenir. Bkz. [Belge Kaynakları](/tr/docs/document-sources/).

### Bir projenin birden çok kaynağı olabilir mi?

Evet — mesele de budur. Bir yerel klasör, iki git deposu, bir upload, bir Notion çalışma alanı ve bir
Confluence sitesi hepsi bir endpoint'i besleyebilir. Her kaynak kendi adı altında bağlanır, bu ad
dokümanlarının ilk yol segmenti olur. Bkz. [Belge Kaynakları](/tr/docs/document-sources/).

### Bir agent iki proje arasında arama yapabilir mi?

Hayır, tasarım gereği. Projeler uçtan uca izole edilmiştir. İki dokümantasyon gövdesi aynı soruya
aitse, bunun yerine onları **tek** bir projenin iki kaynağı yapın.

### Agent dokümantasyonumu değiştirebilir mi?

Hayır. Üç aracın tümü salt okunurdur. Contextator asla bir yerel dizine yazmaz ya da bir depoya push
etmez.

### MCP endpoint'i korunuyor mu?

Bir seferde bir proje olmak üzere, olabilir. Yeni bir proje varsayılan olarak **token required**'dır —
onu oluşturmak bir ilk token üretir ve gizli anahtarı oluşturma diyaloğunda bir kez gösterir — ve proje
sayfasındaki **MCP access** paneli üç mod sunar:

- **open** — projenin URL'sine ulaşabilen herkes orada indekslenen her şeyi okur. Token required
  varsayılan olmadan önceki varsayılan; kimlik bilgisi olmadan okunabilmesi gereken bir proje için hâlâ
  kullanılabilir.
- **token required** — bir istemci `Authorization: Bearer ctxm_…` göndermeli ya da `401` yanıtı
  almalıdır. Tokenlar aynı panelde üretilir ve tam olarak bir kez gösterilir.
- **account required** — bir istemci, her istekte denetlenen, projenin bir **member**'ı olan bir hesap
  gibi davranmalıdır. Bu kimlik bilgisini OAuth 2.1 üzerinden alır, ki bu tarayıcı tabanlı MCP
  connector'larının zaten konuştuğu şeydir; statik bir `ctxm_…` token burada kimseyi adlandırmaz ve
  reddedilir.

Bir token'ın size verdiği şey o endpoint'e erişimdir, bir kimlik değil: hiçbir doküman başına kural
taşımaz, bu yüzden onu elinde tutan herkes projedeki her dokümanı okur. Gerçekten bir hesabı
adlandıran bir kimlik bilgisi, **her** modda — **open** dahil — her istekte o hesabın üyeliğine karşı
denetlenir — böylece bir connector'ı kendiniz olarak oturum açtırmak, bir projeyi ancak onun üyesiyseniz
okur. Anonim çağıranlara açık bıraktığınız bir proje için, portu özel tutmak hâlâ kontroldür. Bkz.
[Güvenlik](/tr/docs/security/) ve [Yapay Zekâ İstemcilerini Bağlamak](/tr/docs/connecting-ai-clients/).

### Panoyu kullanmak için bir hesaba ihtiyacım var mı?

Evet. Pano ve admin API'si bir kişisel hesabın arkasındadır — anonim bir mod ve paylaşılan bir parola
yoktur. İlk hesap, yepyeni bir örnekte `/setup`'ta oluşturulur; başka herkes sağ üst menüdeki
**Users**'tan bir tane alır. Bkz. [Hesaplar ve İzinler](/tr/docs/accounts-and-permissions/).

### Kurulum kodunu kaybettim

Sunucuyu yeniden başlatın. Hiç hesap yokken her başlatmada yeni bir kod üretilir ve yazdırılır, bu
yüzden `docker compose restart && docker compose logs -f` kurtarmanın tamamıdır. Loga bağımlı olmak
istemiyorsanız, `.env`'e `SETUP_CODE=hatırlayacağınız-bir-şey` koyun ve yeniden başlatın — seçtiğiniz bir
kod olduğu gibi kullanılır, ve asla geri yansıtılmaz.

İlk hesap var olduktan sonra artık bir kod yoktur, ve `/setup`, `/login`'e yönlendirir.

### Parolamı unuttum

Zahmet sırasına göre:

1. Bir `root` ya da `admin` meslektaşınızdan isteyin. Users sayfası → **Reset password** size geçici
   bir tane verir.
2. Elinizde varsa `ADMIN_TOKEN`'ı kullanın: `POST /api/users/:id/password` aynı şeyi hiç hesap
   olmadan yapar, ve her hesap kaybolduysa `POST /api/users` yepyeni bir `root` hesabı oluşturabilir.
   Bkz. [Admin API](/tr/docs/admin-api/).
3. Kaynaktan çalışan bir kurulumda, `npm run reset-password -- <kullanıcı-adı>` doğrudan veritabanıyla
   konuşur ve yeni bir parolayı bir kez yazdırır. Docker imajında değildir, bu yüzden bir konteyner
   kurulumunda `ADMIN_TOKEN` kullanın.

Parolalar salted `scrypt` hash'leri olarak saklanır, bu yüzden bunların hiçbiri sizinkini aramaz —
hepsi onun yerine geçer.

### Birine yalnızca bir projeye erişim nasıl veririm?

Hesabını **member** rolüyle (varsayılan) oluşturun, sonra projeyi açın, **Members** panelini bulun ve
onu bir **viewer** ya da bir **editor** olarak **Add member** edin. Bir `member`, yalnızca listelendiği
projeleri görür; başka her proje, sanki yokmuş gibi ona `404` yanıtlar.

`admin` ve `root` hesapları her projeye ulaşır ve üye olarak eklenemez — aksini söyleyen bir satır
doğru olmazdı.

### Bir hesap ile `ADMIN_TOKEN` arasındaki fark nedir?

Bir hesap bir kişidir: bir kullanıcı adı, bir parola, bir rol, bir tarayıcıda bir oturum, ve kim
olduklarından doğan kurallar. `ADMIN_TOKEN`, `.env`'de tek bir dizedir ve onu gönderen her şeye
`/api/*` üzerinde `root` izinleri verir — arkalarında kimse olmayan betikler, CI ve cron için.

Artık panonun kilidi değildir ve bir tarayıcıya ait değildir: oturumdan çıkarılamaz, bir projeye
daraltılamaz, ve bir sahibi ötekinden ayırt edecek hiçbir şey bırakmaz. Betiklenmiş hiçbir şey API'ye
ihtiyaç duymuyorsa ayarlamayın.

### İngilizce dışındaki dillerde çalışıyor mu?

Evet. Varsayılan model, Türkçe dahil 100 dili kapsar. Cevabın yazıldığı dilde sorun: getirme bu dilleri
kapsar ama aralarında geçiş yapmaz, ve bu, bir anahtar değil, gömme modelinin ölçülmüş bir sınırıdır.

### Ne sıklıkla yeniden indeksler?

Ona söylediğinizde: pano düğmesi, API, ya da bir push webhook. İndeksleme artımlıdır, bu yüzden sık
çalışmalar ucuzdur. Notion, doğrulandıktan sonra kendi push webhook'una da sahiptir — bkz.
[Notion](/tr/docs/notion/) — aksi halde zamanlanmış bir API çağrısı oraya giden yoldur.

### Yeniden indeksleme her şeyi yeniden gömer mi?

Hayır. Dosyalar hash'lenir; değişmemiş dosyalar atlanır. Yalnızca **Force re-index**, ya da bir gömme
modeli değişikliği, her şeyi yeniden kurar.

### Bir proje ne kadar büyük olabilir?

Kesin bir sınır yoktur. HNSW indeksi ve yanındaki `tsvector` GIN'i sayesinde arama, on binlerce parçaya
kadar hızlı kalır; ilk indeksleme çalışması pahalı olan kısımdır. İlgisiz bilgiyi ayrı projelere
bölün, kapasite için değil daha iyi getirme için.

### Aynı anda birden çok proje çalıştırabilir miyim?

Evet, istediğiniz kadar. Tek bir indeksleme kuyruğunu paylaşırlar — bir seferde bir proje indekslenir —
ama aramaları sunmak eşzamanlıdır.

### Bir kaynak başarısız olursa ne olur?

O kaynak kendi hatasını bildirir ve diğerleri yine de indekslenir. İçeriği okunamayan bir kaynak, daha
önce katkıda bulunduğu dokümanları korur; bir başarısızlık bir kaynağı asla boşaltmaz.

### Onu bir SSH git remote'uyla kullanabilir miyim?

Hayır — yalnızca bir erişim token'ıyla HTTPS. Bkz. [Git Deposu Kaynağı](/tr/docs/git-repository-source/).

### Bir kaynağın adını değiştirebilir miyim?

Hayır. Ad, katkıda bulunduğu her doküman yolunun önekidir. Kaynağı silin ve onu yeni adla yeniden
ekleyin (bu onu yeniden indeksler).

### Bir projeyi sildiğimde dosyalarıma ne olur?

Contextator'ın somutlaştırdığı dosyalar (git checkout'ları, yüklemeler, Notion çekimleri) silinir. Kendi
dokümantasyonunuz dokunulmadan kalır: `/docs` salt okunur bağlanır ve yerel kaynaklar yerinde taranır.

### Onu bir reverse proxy'nin arkasına koyabilir miyim?

Evet — yanıt tamponlamayı devre dışı bırakın ve `PUBLIC_BASE_URL`'i ayarlayın. Bkz.
[Kurulum](/tr/docs/installation/).

### Claude Code, Cursor ve Claude Desktop'ı destekliyor mu?

Evet, ve MCP konuşan başka her şeyi. Her iki MCP taşıması da aynı URL'de sunulur, bu yüzden eski ve yeni
istemciler yapılandırma olmadan çalışır. Bkz. [Yapay Zekâ İstemcilerini Bağlamak](/tr/docs/connecting-ai-clients/).

### Cevabın dokümantasyonumdan geldiğini nasıl bilirim?

Her arama sonucu bir dosya yolu ve bir başlık breadcrumb'ı taşır, ve sunucu agent'lara kullandıkları
dosya yolunu alıntılamalarını söyler. `read_document`, kontrol edebilmeniz için dosyayı döndürür.

### Cevap dokümantasyonumdaysa arama neden *iyi eşleşme yok* diyor?

Sunucunun ilgi eşiği teknik dokümantasyona göre ayarlanmıştır. Ansiklopedik düzyazıda daha fazla
reddeder; bir yönetici o proje için eşiği düşürebilir, ya da onu orada tamamen kapatabilir, projenin
sorgu günlüğü panelinde, ki bu panel yeni eşiğin uygulanmadan önce zaten kaydedilmiş aramalara ne
yapacağını gösterir. Sunucunun `SEARCH_SCORE_FLOOR=0`'ı her projenin eşiğini kapatır. Skorların ne
anlama geldiği için bkz. [Gömme Modelleri](/tr/docs/embedding-models/).

### Yüklemelerim nerede saklanır?

`contextator-data` volume'ünde, kaynağın dizini altında. Upload kaynakları için bu **tek** kopyadır —
onu yedeklerinize dahil edin. Bkz. [Yedekleme ve Veri](/tr/docs/backup-and-data/).

### Nasıl yükseltirim?

`docker compose pull && docker compose up -d`. Şema başlangıçta kendini günceller; bir geçiş komutu
yoktur. Veri volume'lerde yaşar ve korunur. Bunun yerine kaynaktan mı build ediyorsunuz? Bkz.
[Kurulum](/tr/docs/installation/).

### Hangi lisans altında?

**GNU Affero General Public License, sürüm 3 ya da sonrası.** Tam metin `LICENSE` olarak gelir ve
çalışan her örnek onu `/license.txt`'te sunar; kendi panonuzun `/license` sayfası onu özetler.

2026-09-18'den önce MIT idi. AGPL seçildi çünkü Contextator bir sunucudur: düz bir GPL, birinin onu
fork'lamasına, bir servis olarak barındırmasına ve değişikliklerini hiç yayımlamamasına izin verirdi.
AGPL'in 13. bölümü o boşluğu kapatır.

### Onu işte kullanabilir miyim? Üzerine bir şey inşa edebilir miyim?

İkisine de evet, ve çoğu insan için karşılığında hiçbir şey gerekmez:

| Ne yapıyorsunuz | Lisans ne istiyor |
|--------------------|-----------------------|
| Contextator'ı geldiği gibi çalıştırmak — kendiniz, ekibiniz, tüm şirketiniz için | Hiçbir şey. İç kullanım yalnızca kullanımdır |
| Onu değiştirmek ve değişikliği kendinize saklamak | Hiçbir şey, dışarıdan kimse o sürümü bir ağ üzerinden kullanmadığı sürece |
| Onu değiştirmek ve başkalarının sürümünüze bir ağ üzerinden ulaşmasına izin vermek | Çalıştırdığınızın tam kaynağını AGPL altında o kullanıcılara sunun |
| Onu yeniden dağıtmak — bir depo, bir imaj, ya da bir ürünün içinde olarak | Sürümünüzün kaynağını AGPL altında verin |
| Onunla kendi dokümanlarınızı indekslemek | Hiçbir şey. Dokümanlarınız sizindir; lisans Contextator'ın kodunu kapsar, ve `/mcp/…`'i sorgulayan bir agent onu devralmaz |

Kuruluşunuz politika gereği AGPL yazılımını yasaklıyorsa, ya da onu kapalı bir şeyin içinde
göndermeniz gerekiyorsa, telif hakkı sahibi tarafından ayrı bir ticari lisans verilebilir —
[tunedness.com](https://tunedness.com)'dan sorun.
