ডকুমেন্টেশন

টিম সার্ভার

সেল্ফ-হোস্টেড টিম সার্ভার

একটি একক, সেল্ফ-হোস্টেড HTTP সার্ভারের মাধ্যমে আপনার টিমের সাথে সব ৫৮টি lean-ctx MCP টুল শেয়ার করুন। টোকেন-ভিত্তিক প্রমাণীকরণ, ওয়ার্কস্পেস আইসোলেশন, রেট লিমিটিং, এবং সম্পূর্ণ অডিট লগিং - lean-ctx কেন্দ্রীয়ভাবে চালানোর জন্য প্রয়োজনীয় সবকিছু।

Prerequisites

  • LeanCTX installed on each developer's machine (Installation Guide)
  • Docker (for containerized deployment) or a Linux/macOS server
  • Network connectivity between developer machines and the server

দ্রুত শুরু (৪ ধাপ)

৫ মিনিটের মধ্যে টিম সার্ভার চালু করুন। প্রয়োজন: lean-ctx বাইনারি (--all-features দিয়ে বিল্ড) এবং একটি JSON কনফিগারেশন ফাইল।

১. কনফিগারেশন ফাইল তৈরি করুন (team.json)

{
  "host": "0.0.0.0",
  "port": 9877,
  "defaultWorkspaceId": "main",
  "auditLogPath": "/var/log/lean-ctx/audit.log",
  "workspaces": [
    {
      "id": "main",
      "label": "Main Project",
      "root": "/home/team/project"
    }
  ],
  "tokens": []
}

২. API টোকেন জেনারেট করুন

# Generate a token with specific scopes
TOKEN="$(lean-ctx team token create \
  --config team.json \
  --id dev-alice \
  --scopes search,graph,artifacts,index,events,sessionMutations,knowledge
)"

# TOKEN is the Bearer token (printed once; config stores only sha256Hex).

৩. সার্ভার শুরু করুন

lean-ctx team serve --config team.json

# Team Server - 0.0.0.0:9877
# Workspaces: 1 (main)
# Tokens: 1 active
# Tools: 58 available

৪. যেকোনো ক্লায়েন্ট থেকে সংযোগ করুন

# Health check
curl http://your-server:9877/health

# List available tools (requires token)
curl -H "Authorization: Bearer $TOKEN" \
  http://your-server:9877/v1/manifest

# Call a tool (workspace defaults to defaultWorkspaceId)
curl -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"ctx_tree","arguments":{"path":".","depth":2}}' \
  http://your-server:9877/v1/tools/call

# Call a tool in a specific workspace (header overrides default)
curl -X POST -H "Authorization: Bearer $TOKEN" \
  -H "x-leanctx-workspace: main" \
  -H "Content-Type: application/json" \
  -d '{"name":"ctx_read","arguments":{"path":"README.md","mode":"signatures"}}' \
  http://your-server:9877/v1/tools/call

Docker Deployment

Run the Team Server as a Docker container for quick deployment without compiling from source.

docker run -d --name leanctx-team \
  -p 7700:7700 \
  -v leanctx-data:/data \
  ghcr.io/yvgude/lean-ctx:latest \
  serve --team --data-dir /data

Or run directly from the binary:

lean-ctx serve --team --bind 0.0.0.0:7700 --data-dir ./team-data

Verify the server is running:

curl http://your-server:7700/healthz
# {"status":"ok","version":"3.5.1","uptime":"2m"}

কনফিগারেশন রেফারেন্স

টিম সার্ভার একটি একক JSON ফাইল দিয়ে কনফিগার করা হয়। সব সেটিংস রিস্টার্ট ছাড়াই পরিবর্তন করা যায় - শুধু ফাইল পরিবর্তন করুন এবং সার্ভার রিস্টার্ট করুন।

ফিল্ডটাইপবিবরণডিফল্ট
hoststringবাইন্ড অ্যাড্রেস (রিমোট অ্যাক্সেসের জন্য 0.0.0.0 ব্যবহার করুন)127.0.0.1
portu16HTTP পোর্ট9877
defaultWorkspaceIdstringরিকোয়েস্টে উল্লেখ না থাকলে ডিফল্ট ওয়ার্কস্পেস-
auditLogPathpathJSON Lines অডিট লগ ফাইলের পাথ-
disableHostCheckboolঅরিজিন/হোস্ট হেডার যাচাই নিষ্ক্রিয় করুন (শুধুমাত্র ডেভেলপমেন্টের জন্য)false
allowedHostsstring[]CORS-এর জন্য অনুমোদিত অরিজিন হোস্টনেম[]
maxBodyBytesusizeসর্বোচ্চ রিকোয়েস্ট বডি সাইজ বাইটে (ডিফল্ট: 10 MB)2097152
maxConcurrencyusizeসর্বোচ্চ সমসাময়িক রিকোয়েস্ট32
maxRpsu32প্রতি সেকেন্ডে সর্বোচ্চ রিকোয়েস্ট50
rateBurstu32maxRps-এর উপরে বার্স্ট ক্যাপাসিটি (সংক্ষিপ্ত স্পাইক শোষণ করে)100
requestTimeoutMsu64রিকোয়েস্ট টাইমআউট মিলিসেকেন্ডে30000

টোকেন ও স্কোপ

প্রতিটি টিম সদস্য সূক্ষ্ম স্কোপ সহ একটি অনন্য API টোকেন পায়। টোকেন কনফিগ ফাইলে SHA-256 হ্যাশ হিসেবে সংরক্ষিত হয় - প্লেইনটেক্সট টোকেন তৈরির সময় একবারই দেখানো হয়।

উপলব্ধ স্কোপ

স্কোপবিবরণ
searchরিড টুলস: ctx_read, ctx_search, ctx_tree, ctx_overview, ctx_pack, ctx_proof, ctx_verify, এবং সমস্ত রিড-ওরিয়েন্টেড টুল
graphগ্রাফ টুলস: ctx_graph, ctx_graph_diagram, ctx_impact, ctx_callgraph, ctx_callers, ctx_callees, ctx_routes
artifactsctx_artifacts, ctx_semantic_search (artifacts=true সহ)
indexগ্রাফ ইনডেক্স বিল্ড (ctx_graph action=index-build*), সিমেন্টিক রিইনডেক্স
eventsSSE ইভেন্ট স্ট্রিমে সাবস্ক্রাইব করুন (GET /v1/events)
sessionMutationsসেশন রাইট: ctx_session (save, task, checkpoint, decision, reset), ctx_handoff, ctx_workflow, ctx_share
knowledgeনলেজ রাইট: ctx_knowledge (remember, feedback, remove, consolidate), ctx_knowledge_relations
auditGET /v1/metrics, সম্পূর্ণ পেলোড ইভেন্ট অ্যাক্সেস, অডিট লগ রিড
# Create token with all scopes
lean-ctx team token create \
  --config team.json \
  --id ci-bot \
  --scopes search,graph,artifacts,index,events,sessionMutations,knowledge,audit

# Create read-only token (search + graph only)
lean-ctx team token create \
  --config team.json \
  --id reviewer \
  --scopes search,graph

# Create agent token (read + write + events)
lean-ctx team token create \
  --config team.json \
  --id agent-alice \
  --scopes search,graph,events,sessionMutations,knowledge

টোকেন সংরক্ষণের আগে SHA-256 দিয়ে হ্যাশ করা হয়। প্লেইনটেক্সট তৈরির সময় stdout-এ একবার প্রিন্ট হয়। টোকেন হারিয়ে গেলে নতুন জেনারেট করুন - মূল টোকেন পুনরুদ্ধারের কোনো উপায় নেই।

Connecting Agents

Each developer configures their local LeanCTX to connect to the Team Server via a config file or environment variables.

Add to .lean-ctx/config.toml:

[team]
server = "http://your-server:7700"
token = "lctx_t_alice_a3f8..."
workspace = "my-team"

Or set via environment variables:

export LEANCTX_TEAM_SERVER="http://your-server:7700"
export LEANCTX_TEAM_TOKEN="lctx_t_alice_a3f8..."
export LEANCTX_WORKSPACE="my-team"

মাল্টি-ওয়ার্কস্পেস সেটআপ

একটি একক সার্ভার ইনস্ট্যান্স থেকে একাধিক প্রজেক্ট সার্ভ করুন। প্রতিটি ওয়ার্কস্পেস ভিন্ন প্রজেক্ট রুট ডিরেক্টরিতে পয়েন্ট করে এবং নিজস্ব গ্রাফ ইন্ডেক্স ও সেশন স্টেট বজায় রাখে।

{
  "workspaces": [
    { "id": "frontend", "label": "React Frontend", "root": "/srv/frontend" },
    { "id": "backend", "label": "Rust API", "root": "/srv/backend" },
    { "id": "infra", "label": "Infrastructure", "root": "/srv/infra" }
  ],
  "defaultWorkspaceId": "frontend"
}

ক্লায়েন্টরা তাদের রিকোয়েস্টে <code>X-Workspace</code> হেডার যোগ করে ওয়ার্কস্পেস নির্বাচন করে। বাদ দিলে <code>defaultWorkspaceId</code> ব্যবহার হয়।

Shared Sessions

Once connected, sessions are automatically shared. Agents on the same workspace and channel see each other's context in real time.

lean-ctx session list --workspace my-team

# workspace: my-team
# channel: feat/auth-refactor  rev:14  agents: cursor, claude-code
# channel: fix/api-timeout     rev:7   agents: windsurf
# channel: main                rev:42  agents: copilot, kiro

Governance & Budgets

Configure per-agent budgets, roles, and policies in your team profile to control spending and access.

[budget]
max_context_tokens = 200000
max_cost_usd = 5.0
alert_threshold = 0.8

[roles]
default = "developer"

[roles.ci]
scope = "read"
max_cost_usd = 1.0

Monitoring

The Team Server exposes Prometheus metrics and a status endpoint. Use the observatory dashboard for a visual overview.

lean-ctx observatory --open

প্রমাণীকরণ

প্রতিটি রিকোয়েস্টে (/health ব্যতীত) Authorization হেডারে একটি বৈধ Bearer টোকেন প্রয়োজন। সার্ভার কনফিগ ফাইলের SHA-256 হ্যাশের বিরুদ্ধে টোকেন যাচাই করে এবং টোকেনের স্কোপ রিকোয়েস্টেড টুল কভার করে কিনা পরীক্ষা করে।

Authorization: Bearer $TOKEN

# Without token → HTTP 401 + JSON {error_code:"unauthorized", ...}
# Invalid token → HTTP 401 + JSON {error_code:"unauthorized", ...}
# Valid token, wrong scope → HTTP 403 + JSON {error_code:"scope_denied", ...}

রেট লিমিট ও সুরক্ষা

টিম সার্ভারে বিল্ট-ইন রেট লিমিটিং, কনকারেন্সি কন্ট্রোল, রিকোয়েস্ট সাইজ লিমিট, এবং টাইমআউট আছে। এগুলো অনিয়ন্ত্রিত Agent এবং দুর্ঘটনাজনিত সার্ভিস অস্বীকার থেকে রক্ষা করে।

{
  "maxRps": 50,
  "rateBurst": 100,
  "maxConcurrency": 32,
  "requestTimeoutMs": 30000,
  "maxBodyBytes": 2097152
}

অডিট লগ

প্রতিটি প্রমাণীকৃত টুল কল JSON Lines ফাইলে লগ হয়। প্রতিটি এন্ট্রিতে টাইমস্ট্যাম্প, টোকেন ID, টুলের নাম, ওয়ার্কস্পেস, সময়কাল, এবং স্ট্যাটাস থাকে। ডিবাগিং, কমপ্লায়েন্স, এবং খরচ অ্যাট্রিবিউশনের জন্য ব্যবহার করুন।

Audit log is JSONL (one JSON object per line). It never stores raw tool arguments — only argumentsMd5 of a canonicalized JSON representation.

# Inspect the latest audit entry
tail -n 1 /var/log/lean-ctx/audit.log | jq .

# Keys per entry:
# ts, tokenId, workspaceId, tool, method, allowed, deniedReason, argumentsMd5

ওয়ার্কস্পেস সিঙ্ক

সিঙ্ক কমান্ড চালিয়ে ওয়ার্কস্পেস ইন্ডেক্স আপডেট রাখুন। এটি প্রতিটি ওয়ার্কস্পেসে git fetch করে এবং পুরনো গ্রাফ ইন্ডেক্স পুনর্নির্মাণ করে। সম্পূর্ণ স্বয়ংক্রিয় টিম ওয়ার্কফ্লোর জন্য cron বা CI জব দিয়ে চালান।

# Sync all workspaces (git fetch + rebuild indexes)
lean-ctx team sync --config team.json

# Sync a specific workspace
lean-ctx team sync --config team.json --workspace backend

Next Steps