Friday, 6 March 2026

Tool That Detects if a Website Was "Vibe Coded" — Here's How It Works!

Vibe coding is everywhere. But can you tell when a website was built by prompting AI instead of writing code? I built VibeCheck to answer that question.

A friend sent me his new startup's landing page last month. Looked stunning — dark theme, smooth animations, glassmorphic cards, the whole nine yards. I opened DevTools out of curiosity and found a data-v0-t attribute sitting right there in the markup. The entire thing was scaffolded with v0. He hadn't written a single line of frontend code.

No judgment — honestly, the site looked great. But it got me thinking. If I could spot that in 10 seconds by poking at the DOM, what other fingerprints are these AI tools leaving behind? And could you automate the detection?

Turns out, you can. So I built VibeCheck.

VibeCheck demo analyzing lovable.dev
Analyzing lovable.dev — scored 42/100

Wait, what's "vibe coding"?

If you haven't come across the term yet — vibe coding is when you build a website (or app, or feature) mostly by prompting AI tools. Sometimes that's specialized tools like v0, Bolt.new, Lovable, or Cursor. Sometimes it's just straight-up ChatGPT, Claude, or Gemini — paste the output into a file, fix what's broken, ship it. You describe what you want, the AI generates the code, you tweak it a bit, deploy, done.

It's gotten really good. I've seen people ship MVPs in a weekend that would've taken weeks to build from scratch. And for prototyping, it's genuinely amazing.

But there's a flip side that doesn't get talked about enough.

When someone submits a portfolio full of AI-generated sites during a hiring process, that's a problem. When a freelancer charges ₹2L for a "custom-built" website that was actually prompted in Bolt.new (or copy-pasted from a Claude conversation) in an afternoon, the client deserves to know. When a site skips accessibility, SEO fundamentals, and proper error handling because the AI didn't think of it — well, users pay the price.

I wanted a way to check. Not to shame anyone (I use AI tools too), but simply to know.


What already existed — and why it wasn't enough

I looked around before building anything, obviously. Found a couple of Chrome extensions — one checks for purple gradients and emoji density (seriously), another does some basic HTML analysis but gives you a binary "likely/unlikely" with no explanation of why.

Then there's the AI text detector space — GPTZero, Originality.ai, etc. Those are great for detecting AI-written essays, but they only look at text content. They won't tell you that a site has 18 levels of DOM nesting, shadcn CSS variables everywhere, and Vercel's default caching headers.

Nothing combined structural analysis + content heuristics + deployment signals into one tool. And nothing was open source, so you couldn't even see what rules it was using.


So what does VibeCheck actually do?

You give it a URL. It does the following (all automated):

  1. Fetches the page — and if Cloudflare blocks the request, it spins up a headless browser with Playwright as a fallback
  2. Crawls up to 6 internal pages (follows links on the same domain)
  3. Pulls linked stylesheets and JS files — because a lot of signals hide in external assets, not in the HTML itself
  4. Runs everything through 9 detection categories
  5. Spits out a score from 0 to 100, with a breakdown of every finding

The important bit: every point in the score maps to something concrete. If the tool says 72, you can scroll through and see exactly which signals were found, on which page, and how confident the detection is. No black box.

Scoring works like this:

Score What it means
🟢 0–25 Probably human-crafted
🟡 26–50 Mixed — hard to tell
🟠 51–75 Likely vibe coded
🔴 76–100 Almost certainly vibe coded

The 9 things it checks

I'll keep this concise. Each category looks for specific, verifiable patterns:

🤖 AI Platform Signatures — This is the most direct evidence. v0 leaves data-v0-t attributes in the HTML. Lovable and GPTEngineer inject references into the source. Bolt.new has its own markers. Some tools add <meta generator> tags. If these exist, it's pretty much game over — that's hard proof.

🧩 UI Library Patterns — AI tools default to shadcn/ui more than anything else. VibeCheck looks for the telltale class combos (rounded-md border bg-background), Radix UI data attributes, shadcn-specific CSS variables like --radius and --ring, and Lucide icon SVGs.

⚡ Framework Detection — Next.js markers (__next, _next/static), Vite module scripts, React/Nuxt/Astro/SvelteKit traces. On its own this means nothing — tons of developers use Next.js. But Next.js + shadcn + Vercel is the vibe coding stack, and the tool picks up on that combination.

📝 Content Signals — Generic marketing copy has a pattern. If your site says "Transform your workflow" and "Revolutionize your business" and has 26 "Get Started" buttons, that's a signal. Same with stock image CDNs (Unsplash URLs, Pexels embeds) and placeholder text that never got replaced.

🔬 Code Quality — DOM nesting depth is a surprisingly good indicator. AI-generated markup tends to be deeply nested (18+ levels isn't uncommon). High Tailwind utility-class density is another — elements with 10+ classes each. Also checks for those perfectly organized AI-style comments: <!-- Hero Section -->, <!-- Features Grid -->. Real developers rarely comment that neatly, let's be honest.

🚀 Deployment Signals — Checks response headers and DNS for Vercel, Netlify, Railway. Also checks if robots.txt and sitemap.xml exist. Vibe-coded projects almost never set these up because the AI doesn't think about it and most people don't know to ask.

🎨 Design Patternsbackdrop-blur everywhere (glassmorphism), gradient overuse, the classic hero → features grid → testimonials → CTA layout that every AI tool generates. Card grids, neon glow effects.

♿ Accessibility — Missing alt text, no ARIA labels, broken heading hierarchy, missing form labels. AI tools are getting better at this, but they still skip a lot of the basics.

🔍 SEO — Missing or generic titles, no meta descriptions, multiple <h1> tags on one page, no Open Graph tags. Pretty common in AI output because SEO requires intentionality.


Not all signals are equal (the tier system)

This was something I spent a lot of time on. Early versions of the tool would flag a site as "probably vibe coded" just because it used Tailwind and was on Vercel. That's obviously wrong — plenty of legitimately hand-coded projects use that stack.

So I built a 4-tier evidence system:

Tier Points Cap Example
🔴 Definitive 25 pts None v0.dev data attributes in HTML
🟠 Strong 10 pts 40 shadcn/ui class patterns detected
🟡 Moderate 4 pts 25 Generic marketing phrases
⚪ Weak 2 pts 10 Deployed on Vercel

The caps are important. Seven weak signals can't push a score past 10 points, no matter how many you find. But one definitive finding (an actual v0 data attribute) is worth 25 points on its own. This way, a legitimate Next.js/Vercel site doesn't get unfairly flagged, but actual AI fingerprints get properly weighted.


Under the hood

The tech stack is straightforward — I didn't want it to be complicated for people to self-host or contribute to:

  • Python + Flask for the server and API endpoint
  • BeautifulSoup + lxml for HTML parsing
  • Playwright for headless browser fallback (some sites have Cloudflare protection that blocks regular requests)
  • Vanilla HTML/CSS/JS for the frontend — yes, no React. I wanted it simple

One thing I want to emphasize: no AI is used in the detection. The whole analyzer is plain heuristic pattern matching. The detection engine is a single Python file (~1,000 lines). Every rule is readable, every weight is configurable. I didn't want this to be another black box.

The analysis flow:

URL submitted
    ↓
Fetch page (requests first, Playwright if blocked)
    ↓
Discover & crawl internal pages (≤6)
    ↓
Fetch linked CSS/JS assets (≤10)
    ↓
Run 9 detection categories
    ↓
Compute tiered score
    ↓
Return JSON with score + all evidence

A few things I learned along the way

AI code has a "smell," and it's the combination that gives it away. No single signal is definitive (except platform-specific markers). But when you see Next.js + shadcn/ui + Vercel + 18-level DOM nesting + generic copy + missing robots.txt + glassmorphism on every card — you know. Individually, each of those is fine. Together, the pattern is unmistakable.

False positives are unavoidable. A well-known SaaS company using shadcn/ui legitimately will trigger some signals. That's by design — the tier system keeps it in the "Mixed Signals" range unless there's stronger evidence. I've tuned the weights a lot, but it's an ongoing process. If you run it against your own (genuinely hand-coded) site and it scores high, I'd genuinely like to know — that helps me improve the heuristics.

AI tool output is evolving fast. v0's output six months ago was way more obvious than what it produces now. Some tools have started cleaning up their markers. The heuristics need to keep pace, which is partly why I made the whole thing open source — more eyes on it, more rules getting added.

Static analysis only goes so far. VibeCheck can't execute full client-side JS in a meaningful way. SPAs that render everything dynamically will show fewer signals. Playwright helps with the initial load, but there's a ceiling to what you can detect without something more sophisticated. That's on the roadmap, eventually.


Try it

It's on GitHub — MIT licensed, free to use.

Getting it running locally takes about 2 minutes:

git clone https://github.com/ashish-jabble/vibe-check.git
cd vibe-check
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python app.py

Then open http://localhost:5000, paste a URL, and see what comes back.

There's also a JSON API if you want to integrate it into something:

curl -X POST http://localhost:5000/api/analyze \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com"}'

What I want to build next

Some things I'm thinking about (PRs welcome, by the way):

  • A browser extension that shows a quick vibe score while you're browsing
  • Batch analysis — paste a list of URLs and get a report
  • Tracking score changes over time for a given site (interesting for portfolio audits)
  • Adding detection rules for newer tools — Windsurf, Replit Agent, and better fingerprinting for code generated by ChatGPT, Claude, and Gemini
  • Maybe a public hosted version with rate limiting, though self-hosting is always going to be an option

If you work in hiring, client services, or QA and find this useful — or if you think a detection rule is unfair or missing something — I'd like to hear about it. Open an issue or shoot me a message.


Again: this isn't about dunking on vibe coding. I use AI tools in my own workflow. But when the question is "did a human actually build this?" — whether for hiring, for client work, or just for curiosity — there should be a way to get a straight answer backed by real evidence.

That's what VibeCheck does.

🔗 github.com/ashish-jabble/vibe-check

Wednesday, 25 February 2026

Build Your First AI Agent with Gemini – Python Tutorial + GitHub Template

Learn to build your first autonomous AI agent using Gemini and Python. Step-by-step tutorial with GitHub repo, code examples, and diagrams for beginners.


Introduction

Are you curious about building AI agents that can think, act, and manage tasks autonomously? With Gemini and Python, you can create your very own intelligent agent in just a few steps.

In this tutorial, we’ll walk you through:

  • Setting up a Gemini AI agent

  • Running the agent locally with Python

  • Understanding the code and logic behind it

  • Linking the ready-to-use GitHub template for easy replication

By the end, you’ll have a functional AI agent capable of managing a simple to-do list and ready for customization.


Prerequisites

Before you start, make sure you have:

  • A Gemini subscription

  • Python 3.10+ installed

  • Basic knowledge of Python programming

  • Git installed to clone the repo

Step 1: Clone the GitHub Repository

We’ve prepared a complete template for your AI agent. Clone it locally:

git clone https://github.com/ashish-jabble/ai.git
cd ai/agents/gemini

This repository includes:

  • agent_gemini.py → Main agent script
  • requirements.txt → Python dependencies
  • diagram.png → Visual overview of the agent

Step 2: Install Dependencies

Install the required Python packages:

pip install -r requirements.txt

This ensures your agent can communicate with Gemini properly.


Step 3: Set Your Gemini API Key

To allow your agent to use Gemini, export your API key as an environment variable.

On macOS / Linux:

export GEMINI_API_KEY="your_key_here"

On Windows (PowerShell):

setx GEMINI_API_KEY "your_key_here"

Important: Never commit your API key to GitHub. Always use environment variables.


Step 4: Run Your AI Agent

Start the agent with:

python gemini.py

You will see a prompt like this:

Enter a new task for your AI agent:

Example input:

Find the latest major tech news headlines from the past hour and summarize the top 3 with bullet points.

The agent will display top 3 news from techcrunch.


Step 5: Explore the Code

Here’s how the logic works inside gemini.py:

1. Read  bash command and returns the standard output

def execute_bash():
...

This function can be used for things like creating directories, moving files, searching, or running curl requests.

3. Gemini Interaction

chat = client.chats.create(model='gemini-2.5-flash', config=config)

Step 6: Architecture Diagram

Below is a simple architecture overview:

[User Input] → [Gemini API] → [Agent Logic] → [Output]
  • User Input → You provide a new task
  • Gemini API → AI processes and prioritizes
  • Agent Logic → Python handles task management
  • Memory → Tasks saved locally
  • Output → Updated prioritized list

Step 7: Customize Your Agent

Once your agent works, you can extend it:

  • Add multi-step reasoning
  • Integrate Google Calendar or email APIs
  • Create multi-agent workflows
  • Store memory in a database instead of a text file

Gemini Pro allows longer context windows, making it ideal for advanced workflows.


Step 8: GitHub Repository

Explore or download the full template here:

View on GitHub → Gemini AI Agent Template

This repository serves as the foundation for building more advanced AI agents using Gemini.


Congratulations! 🎉

You have successfully built your first AI agent using Gemini and Python. Now you can extend it, improve it, and integrate it into real-world applications.


Tip: Bookmark this repo — it’s the foundation for all future AI agent experiments!


Conclusion

You’ve now built your first autonomous AI agent using Gemini. With the GitHub template, Python code, and step-by-step tutorial, you can start experimenting with advanced AI workflows.

Share your agent with friends, customize it for your own tasks, and watch your AI skills grow!

Tuesday, 24 February 2026

LLM Gateways: The Missing Infrastructure Layer for Production AI

The Problem: LLM Calls Are Not Just API Calls

When you first integrate an LLM into your application, it feels simple. You install the OpenAI SDK, pass a prompt, get a response. Ship it.

Then reality hits.

You want to try Claude for summarization because it's cheaper. Now you have two SDKs, two authentication flows, two response formats. A teammate adds Mistral for a classification task. Someone else wants to experiment with Llama running on Bedrock. Suddenly, your "simple" integration has become a tangle of provider-specific code scattered across your codebase.

But the API sprawl is only the surface. The deeper problems creep in once LLM calls sit on the critical path of your system:

Cost blindness. Token-based pricing is unpredictable. A single runaway loop can burn through your monthly budget in minutes. Without centralized tracking, you have no idea which team, feature, or prompt is responsible for the spend.

Fragile reliability. LLM providers have outages. Rate limits get hit. Latency spikes. Without retries, fallbacks, and circuit breaking, your application is only as reliable as the weakest provider endpoint you depend on.

Zero observability. Traditional APM tools can tell you an HTTP call took 3 seconds. They can't tell you that it consumed 4,200 tokens, cost $0.12, and the response quality degraded because you hit a rate limit and silently fell back to a weaker model.

Governance gaps. As LLM usage grows across teams, you need to answer questions like: who has access to which models? Are we leaking PII in prompts? Is anyone using unapproved providers? Without a centralized layer, these questions are nearly impossible to answer.

This is the problem space LLM gateways were built to solve.


What Is an LLM Gateway?

An LLM gateway is a centralized service that sits between your applications and LLM providers. Instead of your code talking directly to OpenAI, Anthropic, or a self-hosted model, requests flow through the gateway. The gateway then handles routing, authentication, retries, caching, spend tracking, and observability — all without your application needing to know the details.

Think of it as what an API gateway (like Kong or Nginx) does for microservices, but purpose-built for the unique demands of LLM traffic: token-based billing, streaming responses, semantic caching, prompt-level security, and multi-model routing.

From the application's perspective, there's one stable interface. From the platform team's perspective, there's one place to observe, control, and govern all LLM usage across the organization.


The Contenders: LiteLLM, Portkey, OpenRouter, and Kong AI Gateway

Not all gateways solve the same problems in the same way. Let's break down four popular options and what makes each one distinct.

1. LiteLLM — The Open-Source Swiss Army Knife

What it is: An open-source proxy and SDK that provides a unified, OpenAI-compatible API across 100+ LLM providers.

Why choose it:

  • Full self-hosted control. You deploy it on your own infrastructure. Your data never leaves your network. For teams in regulated industries or with strict data residency requirements, this matters enormously.
  • Provider breadth. LiteLLM supports virtually every major provider — OpenAI, Anthropic, Bedrock, Vertex, Mistral, Ollama, and many more — behind a single completion() call.
  • Cost tracking built in. Automatic spend tracking across providers, with the ability to log costs to S3, GCS, or your data warehouse. You can set budgets per team or per API key.
  • Open source (MIT). The core is free. You can inspect the code, contribute, and customize. Enterprise features like SSO, JWT auth, and audit logging are available as paid add-ons.

The trade-off: LiteLLM is infrastructure you operate. You're responsible for scaling, availability, and monitoring. Observability is basic out of the box — you'll likely want to pair it with something like Langfuse for deeper tracing and evaluation. There's no native enterprise governance (RBAC, workspaces, approval workflows) without additional tooling.

Best for: Platform teams that want maximum control and flexibility, are comfortable managing infrastructure, and need to give internal developers unified access to many LLMs with cost guardrails.


2. Portkey — The Production Control Plane

What it is: A managed AI gateway and observability platform designed for production GenAI workloads, supporting 1,600+ models.

Why choose it:

  • Enterprise-grade out of the box. Portkey ships with features many teams would otherwise spend months building: RBAC, workspaces, audit trails, SSO/SCIM, and data residency controls.
  • Deep observability. Detailed logs, latency metrics, token and cost analytics — broken down by app, team, or model. This is not an afterthought; it's core to the product.
  • Guardrails and security. Request and response filters, jailbreak detection, PII redaction, and policy-based enforcement are built in. If compliance is a first-class concern, Portkey addresses it natively.
  • Prompt management. Reusable templates, variable substitution, versioning, and environment promotion (dev → staging → prod) for prompts.
  • Reliability primitives. Automatic retries, fallbacks with exponential backoff, and configurable routing across providers.

The trade-off: Portkey introduces a managed layer into your architecture. It's more opinionated than LiteLLM, which means less customization but faster time to production. Advanced governance features sit in higher-tier paid plans. For lightweight prototyping, it can feel heavier than needed.

Best for: Product and engineering teams building production LLM applications that need reliability, cost control, and compliance without building the platform layer themselves.


3. OpenRouter — The Model Marketplace

What it is: A developer-focused gateway that provides a single API for accessing 280+ models across providers, abstracting billing and credentials behind a unified endpoint.

Why choose it:

  • Zero infrastructure. There's nothing to deploy. Point your OpenAI SDK to OpenRouter's base URL, and you immediately have access to models from OpenAI, Anthropic, Mistral, Meta, Google, and dozens of open-source providers.
  • Effortless experimentation. Want to compare GPT-4o against Claude Sonnet against Llama 3? Change the model string in your request. No new accounts, no new API keys, no provider-specific SDKs.
  • Automatic failover. Requests can be transparently routed around provider outages to maintain availability.
  • Unified billing. One account, one bill, regardless of how many providers you use.

The trade-off: OpenRouter adds a 5% markup on requests — that's the cost of convenience. Observability is limited; there's no deep tracing, token-level debugging, or per-team cost attribution. Governance and access controls are minimal, making it difficult to use as an internal platform for large organizations. You're also trusting a third party with your prompts and API traffic.

Best for: Individual developers and small teams in the experimentation and prototyping phase who prioritize model flexibility and speed of iteration over infrastructure control or enterprise governance.


4. Kong AI Gateway — The Enterprise API Gateway, Extended

What it is: AI-specific capabilities built into Kong Gateway (the widely-deployed open-source API gateway), delivered as a suite of plugins.

Why choose it:

  • Leverage existing infrastructure. If your organization already runs Kong for API management, adding AI gateway capabilities is an incremental step — not a new tool. All 1,000+ existing Kong plugins (auth, rate limiting, transformations, logging) work alongside AI traffic.
  • Semantic intelligence. Kong's AI plugins go beyond basic proxying. Semantic caching reduces redundant LLM calls. Semantic routing dispatches requests to the best model based on prompt content. A prompt guard enforces topic-level allow/deny lists.
  • Security and compliance. PII sanitization across 18 languages, integration with AWS Bedrock Guardrails, Azure AI Content Safety, and Google Cloud Model Armor. Prompt injection detection. These are production-grade security features.
  • MCP and A2A support. Kong has moved aggressively into supporting Model Context Protocol and Agent-to-Agent workflows, making it a strong choice for teams building agentic systems.
  • Deployment flexibility. Self-hosted, Kubernetes-native (via Kong Ingress Controller), hybrid, or managed through Kong Konnect.

The trade-off: Kong is a general-purpose API gateway with AI capabilities bolted on through plugins. For teams that don't already use Kong, the operational overhead of running a full Kong deployment may be excessive. Advanced AI-specific features (token-based rate limiting, advanced analytics) are locked behind enterprise tiers. The per-service licensing model can get expensive as you add model endpoints.

Best for: Enterprise teams that already use Kong Gateway and want to extend it to govern LLM traffic alongside existing API infrastructure, especially in regulated environments.


How They Compare at a Glance

DimensionLiteLLMPortkeyOpenRouterKong AI Gateway
DeploymentSelf-hosted (open source)Managed SaaSManaged SaaSSelf-hosted / Managed (Konnect)
Provider support100+1,600+280+Major providers via plugins
Cost modelFree (OSS) / Enterprise paidStarts ~$49/mo5% markup on usageFree (OSS) / Enterprise licensed
ObservabilityBasic (needs Langfuse)Deep, nativeLimitedMetrics via plugins + OTEL
GovernanceMinimal nativeStrong (RBAC, SSO, audit)MinimalStrong (enterprise tier)
SecurityBasicGuardrails, PII, jailbreak detectionBasicPII, prompt guard, RAG, Bedrock/Azure guardrails
Best fitPlatform teams, self-hostersProduction AI teamsPrototyping, experimentationEnterprises with existing Kong


Where Langfuse Fits: The Observability Layer

Here's the critical insight: a gateway routes your requests, but Langfuse helps you understand them.

Langfuse is an open-source LLM observability platform that provides tracing, monitoring, evaluation, and debugging for LLM applications. It's not a gateway — it doesn't route traffic. Instead, it ingests telemetry from your gateway (and your application code) and gives you deep visibility into what's happening across your LLM stack.

The good news is that Langfuse integrates natively with all four gateways discussed above.

LiteLLM + Langfuse

This is one of the most popular pairings in the ecosystem. LiteLLM supports Langfuse as a callback target via OpenTelemetry. Set your Langfuse credentials as environment variables, add litellm.callbacks = ["langfuse_otel"], and every LLM call flowing through LiteLLM is automatically traced in Langfuse — with token counts, latencies, costs, and model metadata. You can also send logs from the LiteLLM Proxy directly, meaning every request from every team member gets captured without any SDK changes on their side.

Portkey + Langfuse

Portkey's API is OpenAI-compatible, so you can use Langfuse's OpenAI SDK wrapper (from langfuse.openai import OpenAI) and point it at Portkey's gateway URL. Every request gets dual visibility: Portkey's native analytics for routing and reliability, plus Langfuse's tracing for prompt-level debugging and evaluation. This pairing gives you the best of both worlds — Portkey for traffic control, Langfuse for deep observability.

OpenRouter + Langfuse

OpenRouter supports a "Broadcast" feature that automatically sends traces to Langfuse without any code changes. You connect your Langfuse API keys in your OpenRouter settings, and all requests are traced. For teams that want more control — custom metadata, nested tracing, session grouping — you can use Langfuse's OpenAI SDK wrapper since OpenRouter follows the OpenAI API schema.

Kong AI Gateway + Langfuse

Kong integrates with Langfuse through an ai-tracing plugin. Once configured with your Langfuse API keys, the plugin automatically captures every AI request proxied through Kong and creates traces in Langfuse. You can enrich traces with user IDs, session IDs, and organization metadata via HTTP headers. Because it's a Kong plugin, it works alongside all other Kong capabilities (auth, rate limiting, logging) with zero application code changes.

Why This Matters

The gateway gives you the operational layer: routing, fallbacks, cost controls, security. Langfuse gives you the intelligence layer: understanding prompt quality, debugging regressions, evaluating model outputs, tracking experiments over time. Together, they form a complete platform for running LLMs in production.

Without Langfuse (or equivalent observability), you can route and control your LLM traffic, but you're flying blind on quality. Did that model switch degrade user experience? Is the new prompt template actually better? Which conversations are hitting guardrails? These are the questions Langfuse answers.


So, Which Should You Pick?

There's no single right answer. The choice depends on where you are in your journey:

You're experimenting and iterating fast → Start with OpenRouter. Zero setup, instant access to hundreds of models. Pair with Langfuse (via Broadcast) to start building observability habits early.

You're building an internal LLM platform for your team → Go with LiteLLM. Self-host it, configure budgets and access per team, and integrate Langfuse for the observability LiteLLM doesn't natively provide. This is the stack companies like Lemonade and RocketMoney have adopted.

You're shipping a production AI product and need reliability + compliance → Choose Portkey. Its managed approach means less operational burden, and its native guardrails, RBAC, and prompt management will save you months of build time. Add Langfuse for deeper tracing and evaluation workflows.

You already run Kong and need to govern LLM traffic alongside APIs → Extend with Kong AI Gateway. You get enterprise security, semantic routing, and MCP support without introducing a new tool. The Langfuse plugin gives you AI-specific observability on top of Kong's existing monitoring.

The LLM gateway space is maturing rapidly. The teams that invest in this infrastructure layer now — routing, observability, governance — will be the ones that can move fastest as models improve and use cases multiply. The gateway handles the plumbing. Langfuse ensures you can see what's flowing through it. Together, they turn LLM usage from a series of isolated API calls into a managed, observable, improvable system.

Start with the gateway that matches your constraints today. Add Langfuse from day one. Iterate from there.

Wednesday, 12 July 2017

Raspberrypi setup

Prerequisite:

1) Raspberry Pi device with data cable.
2) Card reader
3) Micro SD card. Here is the compatible documentation
4) A monitor with an HDMI interface
5) HDMI cable
6) USB keyboard
7) USB Mouse
8) Ethernet Cable [Optional]

Following are the steps to move with: 

1) Format SD card:
    Recommended way to format  by SD Card Formatter, you can download it from here

2) Let say we have to load RASPBIAN image onto SD Card, download image from here
 
3) Now its time to load image on SD Card

4) Open a MAC terminal window and then run command: diskutil list

5) Identify your removable drive device address, it will probably be look like the ones below:



/dev/disk0

#: TYPE NAME        SIZE       IDENTIFIER

0:GUID_partition_scheme *500.3 GB   disk0


/dev/disk2

#: TYPE NAME         SIZE     IDENTIFIER

0: Macintosh HD  *378.1 GB   disk1
 Logical Volume on disk0s2
   DAB8DF9E23-A4RR-420D-00R1-FRT67WE
Unlocked Encrypted

/dev/disk3
  #:       TYPE NAME     SIZE       IDENTIFIER
  0:  FDisk_partition_scheme *7.9 GB     disk3
    1:   DOS_FAT_32 AJ     7.9 GB     disk3s1


Note that your removable drive must be DOS_FAT_32 formatted. In this example, /dev/disk3 is the drive address of an 8GB SD card.

6) Unmount your SD card via command: diskutil unmountDisk <drive address>

7) When successful, you should see a message similar to this one:

Unmount of all volumes on <drive address> was successful

8) You can now copy/load the image onto SD card, using the following command:

sudo dd bs=32m if=<image file path> of=<drive address>

Thereafter you will see the following message output and also by pressing Ctrl+t you can see like below records in/out bytes

3420+1 records in
3420+1 records out
286665744 bytes transferred in 524.761215 secs (5069924 bytes/sec)

9) Now you can eject your removable drive. You are ready to install RASPBIAN image on your device.

In Part Two we will learn about how to use SSH and VNC as a virtually desktop on MACOSX.


Friday, 9 June 2017

Raspberry Pi : SSH and VNC : Virtual Desktop on your mac

In previous tutorial we have learnt How to raspberrypi setup?

Now its time to see its display for Raspberry Pi with Laptop. Below steps are with Macbook

1) Open a Terminal in RaspberryPi
   Enable SSH and VNC either from sudo rasp-config or Preferences=>Raspberry Pi Configuration => Interfaces

2) ifconfig and find ip address

3) Open Mac Terminal
  Connect via SSH ssh pi@192.168.1.236
  password: raspberry (by default)

  Now you will see you are connected to pi@raspberrypi:~ $

4) Now its time to get update packages, tightvnc server
   sudo apt-get update
   sudo apt-get install xrdp
   sudo apt-get install tightvncserver

5) cd .config

6) mkdir autostart
   nano tighvnc.desktop

   [Desktop Entry]
   Type=Application
   Name=TightVNC
   Exec=vncviewer :1
   StartupNotify=false

  save contents with above lines in same file.

7) cd /home/pi

8) Run tightvncserver

9) Download Chicken VNC client on macosx & connect with
    host:192.168.1.236
    Display: 1
    Password: raspberry(by default)

Now you are able to see Macintosh as Display for a Raspberry Pi.

Cheers!

Saturday, 29 April 2017

Why Katappa killed Bahuballi?

For those who can't wait for it badly:

Background:

Bahubali owns mashismati kingdom, bhallaldeva and bijjalladeva jealous about the victory.
So they actually planned both to kill rajmata in a dramatic way and Veer bahadur kumar verma (which is very close to bahubali and his wife Devsena) has listen this gossip and  bijjalladeva slapped his father to tell don't dig into this matter and emotionally character played by bijjalladeva in front of Veer Bahadur to provoke to kill his own son (Bhallaldeva) so that they will tell Rajmata that veer bahadur came to kill Bhallaldeva from Bahubali order. 
So below is the actual story:

Katappa: Is this happening with your consent? I beg you queen mother. Ask the king to take back his command. Even integrity can take a backseat. Bahubali has no mean bone in his body. The son you raised. He grew up drinking your milk. The Dharma you taught him runs in his blood.

Rajmaata: Bahubali has to die.

Katappa: No, I can’t do it. He gave sword to rajmata as punishment for my refusal. Please sever my head

Rajmata: Will you kill him? or shall I finish this task?

Katappa: No queen mother. Your hands should not be stained by that sin. I will kill him.

Bijjaladeva: Can we trust this Dog bhalla?

Katappa: and he killed bahubali 

More you will need to watch the film the actual scene :)

Cheers!
Enjoy



Tuesday, 14 February 2017

ionic2 based using Angular2 TypeScript

This tutorial is demonstrating "How to create ionic2 based app using Angular2 TypeScript"?

Here is the demo example with complete guide documentation process to install and run this demo project.

Happy Coding!