ShibMe
Portrait of Shibly Meeran

Shibly Meeran

I keep secrets for a living.

I am Director of Platform Engineering at Amagi, where my team owns the shared identity, infrastructure and AI layer that every internal product runs on. Before this I ran security engineering there.

Most of what I build is plumbing. Xipher encrypts without a server to call home. SLV keeps secrets in the repository, beside the code they belong to. The access work at Amagi hands out short-lived tokens instead of credentials that sit around waiting to leak. The useful parts end up on GitHub.

That button encrypts in your browser against a public key this domain publishes at /.well-known/xipher, so nothing you type reaches a server on the way to me.

Four things, repeatedly

Cryptography people actually use

Getting the primitives right is table stakes. Most cryptography fails at adoption instead, because the interface asks too much of whoever has to use it.

Access without credentials

A credential that was never issued cannot leak. That is most of the reason my access work leans on short-lived tokens rather than better storage for long-lived ones.

Security where the work already happens

Findings belong in the pipeline and the issue tracker. A separate security backlog is a backlog engineers learn to ignore.

Platforms teams opt into

Internal tools compete with "I'll just do it myself," and they lose that comparison more often than platform teams admit. So the test I use is whether the platform is the easier path.

Things I've built

Both are MIT-licensed and running in places I will never hear about, which is the outcome I was hoping for.

Xipher

xipher.org

Your password is the private key, so there is no key file to lose.

Argon2id turns a passphrase into a keypair, which also means there is no server in the middle to trust. Hybrid X25519 + ML-KEM-1024 for post-quantum cover, XChaCha20-Poly1305 for the payload. Ships as a CLI, a Go library, WASM, a browser app and a GitHub Action.

Go Post-quantum WASM
source → โ˜… 16

SLV

slv.sh

Secrets you can git commit on purpose.

Secure Local Vault keeps encrypted secrets beside the code they belong to, with no secret store to run. Envelope encryption and key-wrapping for team sharing, ephemeral injection into CI, Kubernetes-native, pluggable AWS / Azure / GCP KMS backends. Presented at Black Hat Arsenal twice.

Go Kubernetes CI/CD
source → โ˜… 78

Things I've built at Amagi

Three movements, described at the level of what each one does and why, rather than at the level of how to get around it.

Security into the pipeline

2023 – 2024 · Security Engineering

Container image scanning gated before deployment across production Kubernetes, rather than reported after it. SAST adopted across five product lines, with findings synced into the normal issue tracker, so vulnerabilities joined ordinary engineering work instead of a separate security backlog nobody grooms. Secret scanning in the build, plus fixes to the validation framework to kill the false positives that teach people to ignore alerts. A distroless image initiative to shrink what's in production in the first place.

Also wrote the security function's annual operating plan and the quarterly roadmap cadence the team then ran on for three years. That part was unglamorous, and it is the reason any of the rest of it shipped.

Running security engineering

Architect → Senior Engineering Manager

Architected a company-wide Zero Trust access gateway that retired scattered SSH keys, per-cluster access requests and client-side credential config: SSH brokered with nothing configured on the client, Kubernetes access via OIDC, SSO for internal users.

Wrote the org's policy restricting long-lived IAM credentials to a narrow approved set, with enforcement and an exception path that people could actually use. Established quarterly privileged-access reviews. Built the security metrics dashboard leadership reports from, and ran the cloud risk register through to closure.

SLV came out of this work, was adopted across the company, and is recognized well beyond the team that built it.

Director of Platform Engineering

Now

Defined the charter, structure and operating plan for a new central function: ~10 engineers across cloud infrastructure, CI/CD, identity, cost, observability, API gateway and AI infrastructure. Originated and specified roughly twenty platform initiatives. I wrote each design, then handed delivery to an owning engineer and kept the outcome.

The one I'd show you first

A centralized identity token exchange service, so internal services stopped each writing their own token validation. KMS-backed signing key, mutual-TLS gateway, audience validation at both the provider and the target, short-lived tokens scoped per target, and a named-rule, block-by-default policy engine. Extended with a GitOps group-identity layer: membership as version-controlled YAML, owner approval enforced in the pipeline, resolved to token claims at deploy time.

Alongside it: a scoped token broker issuing short-lived repo-scoped credentials in place of long-lived personal access tokens; self-service Kubernetes access and certificate lifecycle management; a self-service developer portal replacing manual ticketing for access, certificates, on-call and approvals; CI consolidated onto one autoscaling system, extended to GPU runners; a managed → self-hosted API gateway migration across dev, pre-production and production; and per-team monitoring stacks folded into one governed observability platform, with monitoring-of-monitoring and 90 days of undownsampled retention.

Founded and led the cloud cost optimization program across a large multi-cloud estate, reaching six figures of verified savings in a single month and reporting to executives monthly. Underneath it sits a multi-cloud cost dashboard with forward run-rate, storage tiering automation, reservation automation, idle detection with owner-approved auto-stop, and per-workload Kubernetes cost attribution.

The function now owns unified AI infrastructure: one internal API fronting dedicated hardware, managed cloud models and direct providers, so consumers never change endpoints while cheap capacity carries baseline load and the cloud absorbs surges. Per-team budgets, quota enforcement and spend attribution sit on top of it.

Two documents I'm fond of

A GitOps maturity assessment and whitepaper, surveying every product line against a target standard and naming the gaps blocking rollout. The other is "The 10 Commandments of Engineering," the principles document the wider org is held to. Ten of them, covering everything from designing before building to reviewing code properly.

Things I've broken

Everything here was authorized, reported and fixed. It is on the page because the fix is the interesting part.

Rebinding a name out from under a filter

How it worked
An authoritative nameserver of my own, answering with a TTL of zero and alternating addresses between consecutive lookups. The validator resolves the hostname, likes the answer, and hands the name to the fetcher. The fetcher resolves again and gets somewhere else entirely.
Why it mattered
Every URL allowlist that validates and then fetches has this shape. The check passes honestly; the request still lands inside the network.
What stops it
Resolve once, pin the address you validated, and connect to that IP rather than to the name again. Then re-check the resolved address against the denylist at connect time, and make outbound egress a proxy's decision rather than the application's. Built custom-dns-server to demonstrate it repeatably.

Waiting out a one-time password

How it worked
Treat TOTP as a probability problem rather than a wall. A six-digit code is one in a million per window. But if the rate limit permits a sample of guesses per window and the window refreshes forever, the attempts accumulate while the search space does not.
Why it mattered
"Effectively impossible" quietly becomes "eventually," and the logs look like ordinary failed logins the whole way.
What stops it
Count failures against the account, not the window: a hard cumulative cap, lockout with a human path back, and one-time use per code so a correct guess can't be replayed. Alert on the aggregate, not the individual failure.

Saying it out loud

  • Dec 2025
    Black Hat Arsenal, Europe

    On SLV, and on how secrets leak from a developer machine through to deployment. Isolated encrypted vaults close that path.

  • Jul 2024
    Shielding your secrets using Secure Local Vault

    Written for IABM, making the case at length for keeping secrets beside the code they belong to.

  • Apr 2024
    Black Hat Arsenal, Asia

    SLV's first outing, presented with Sriram Krishnan.

Where this happened

  • Feb 2023 → now

    Amagi

    Architect, Security Engineering → Senior Engineering Manager, Security Engineering → Director of Platform Engineering

    I joined to build security tooling that engineers wouldn't route around, and ended up owning the platform the whole company builds on.

  • Jul 2022 – Feb 2023

    Disney+ Hotstar

    Security Engineering

    Application security at the scale where a cricket match is a load test.

  • May 2016 – Jul 2022

    Freshworks

    Architect, Information Security

    Six years building the DevSecOps toolchain: scanning, triage automation and the unglamorous integrations that decide whether a security programme is real.

  • 2015 – 2019

    Independent

    Security consulting & tooling

    Security assessments alongside a fair number of side projects, which is where most of my older open-source libraries come from.

  • Apr 2013 – Apr 2015

    Amazon

    Kindle

    Automation frameworks and test suites for the Kindle software stack.

  • Sep 2011 – Mar 2013

    Tata Consultancy Services

    System Engineer

    Network operations: monitoring, support, and automating my way out of the parts that repeated.

Before all of it: B.E. Computer Science & Engineering, Coimbatore Institute of Technology, 2007–2011.

Say something, and encrypt it if you like

LinkedIn reaches me for the ordinary kind of message. For the other kind, this domain publishes a Xipher public key. Encrypt in your browser, or from a terminal:

$ xipher encrypt text --fetch -k shib.me