Tacavar
2026-04-13

How Tacavar Built Cross-Server Command Dispatch Without Sharing Root SSH Keys

Shared SSH keys are easy. Least-privilege automation is better.

That tradeoff sits at the center of how Tacavar approaches autonomous infrastructure. When one Tacavar-managed server needed to trigger work on another server, the obvious implementation was also the laziest one: copy a powerful SSH key across machines, let one box act as the other, and move on. Instead, Tacavar built a narrower pattern for cross-server automation: a dedicated dispatcher that accepts approved command names, runs only those commands, and records every invocation. That choice preserved speed without turning convenience into permanent security debt.

Since Josh Fathi founded Tacavar in 1987, the company has operated with a builder mindset: ship systems that can survive real operators, real failure modes, and real compromises. That matters in automation more than almost anywhere else, because every shortcut becomes an attack path later.

The real problem with cross-server automation

Most cross-server automation problems are not really about remote execution. They are about trust boundaries.

At Tacavar, the requirement was concrete: one server needed to dispatch work to a primary server. The jobs were practical operator tasks, not abstract platform theory. They included triggering deploys, posting Instagram reels, and writing video briefs. In a small infrastructure footprint, those tasks often live close together. A supporting machine can produce or coordinate work, while a primary machine remains the system of record for executing sensitive actions.

The common mistake is to collapse that boundary. Teams say they need automation, but what they actually create is identity sharing between machines. One compromised node stops being one compromised node; it becomes an entry point into every server that accepts its credentials.

Tacavar treated the problem differently. The question was not, “How can server A run anything on server B?” The question was, “What exactly should server A be allowed to ask server B to do?” That framing changes the whole design. It pushes you toward least privilege devops instead of convenience-driven sprawl.

This is where SSH security often gets oversimplified. SSH itself is not the problem. The problem is what an authenticated caller is allowed to do after login. If the answer is effectively “anything root can do,” then the automation layer has no meaningful containment. For founder/operators running lean systems, that is a fragile bargain. You save a few hours up front and inherit a large, invisible blast radius.

Why shared root SSH keys were rejected

Tacavar rejected shared root SSH keys because they solve the wrong problem too broadly.

If the supporting server had been given a root-capable key on the primary server, Tacavar would have gained unlimited remote execution where only a handful of approved actions were actually needed. That is operationally seductive and strategically sloppy. It means a compromise of the supporting machine can be replayed as full administrative access on the primary machine. In practice, the attacker does not need to break two systems. They only need to break the weaker one.

That was unacceptable for the Tacavar pattern. The primary server held the authority to execute actions that mattered. The supporting server only needed to request a known subset of those actions. So Tacavar split identity from authorization.

The resulting design used a dedicated deploy key tied to a specific entrypoint on the primary machine rather than a general-purpose shell. Instead of giving the caller bash, Tacavar gave it a narrow interface. Instead of exposing root, Tacavar exposed approved intents.

This distinction is the core insight behind the whitelist command dispatcher. A machine is not trusted because it authenticated successfully. It is trusted only to the extent its allowed commands have been explicitly modeled.

The difference looks small in implementation and enormous in consequence. Shared root SSH keys create ambient authority. Tacavar wanted explicit authority. Ambient authority spreads quietly. Explicit authority forces operators to name what the system can do.

How the whitelist dispatcher works in practice

On the primary server, Tacavar built deploy_gate.sh, a dispatcher that accepts command names, not raw shell input.

That detail is the whole pattern. The remote server does not send bash -c "whatever it wants". It sends a named request such as a deploy trigger or another approved operation. The dispatcher maps that name to a known command path, executes the mapped action under sudo, and rejects anything not on the whitelist.

In practice, this turns cross-server automation into a constrained RPC layer built from familiar Unix primitives. Tacavar did not need a heavyweight orchestration system to get strong guarantees. It needed a small interface with hard edges.

For example, the Tacavar supporting server could ask the primary to run a deployment, post an Instagram reel, or generate a video brief, because those actions were modeled as named commands. It could not improvise. It could not append arbitrary flags. It could not pivot from a legitimate task into a general shell session. That is what makes the pattern durable.

The whitelist command dispatcher also improves operator cognition. When the allowed commands are enumerated in one place, the automation surface becomes inspectable. Tacavar can answer a simple but powerful question immediately: what can this remote machine actually do? In many ad hoc SSH setups, no one can answer that without reading multiple scripts and hoping there are no hidden assumptions.

This is one of those rare patterns where the security control also makes the system easier to operate. The whitelist is not just a denial layer. It is an interface contract.

Audit logs as both security control and operational memory

Tacavar also made audit logging a first-class part of the design rather than an afterthought.

Every dispatcher call is written to an audit log on the primary server. That means each remote invocation leaves a durable record of what was requested and when it happened. From a security standpoint, this is basic hygiene. If a supporting machine is compromised, Tacavar can reconstruct what it attempted through the dispatcher instead of guessing from side effects.

But the more interesting benefit is operational. In small autonomous teams, audit logging becomes institutional memory.

Founders and operators know this problem well: a system works, a few edge-case commands get added over time, and six months later no one remembers which automations exist because the original decisions live only in shell history and scattered chat messages. Tacavar avoided that trap. The dispatcher plus audit log creates a compact record of intent, authorization, and usage.

That matters for incident review, onboarding, and change discipline. It also matters for simple diagnosis. If a Tacavar deploy did not run when expected, the first question is no longer speculative. The log tells you whether the request was dispatched, whether the requested command was valid, and how often that path has been used historically.

In that sense, audit logging is not just about compliance theater or postmortem reconstruction. It is a working control surface. It helps Tacavar keep a living memory of its automation layer while preserving SSH security boundaries.

What happens when you need to add new commands safely

A secure automation interface fails if extending it becomes so painful that operators route around it.

Tacavar solved that by making additions explicit, fast, and reviewable. When a new remote capability is needed, the answer is not to loosen the dispatcher into a shell. The answer is to add a new named command deliberately.

That is exactly how the system evolved. New commands were added to the whitelist as real needs emerged, including instagram_post on 2026-04-07, along with other Tacavar-specific operations such as domain_pending and pip_install_*. The pattern scales because each addition is a conscious decision. Operators have to state the command, define what it maps to, and accept that it becomes part of the known remote API.

This is a better change process than broadening privilege. It keeps expansion legible. It also forces a design question that strong systems should ask anyway: does this new action deserve remote access, and if so, what is the smallest safe interface for it?

That is the part many teams miss. Safety is not just denying bad inputs. Safety is making good additions cheap enough that people do not fall back to unsafe shortcuts. Tacavar’s dispatcher preserves that balance. It is strict at runtime and lightweight at design time.

Where this pattern fits in small autonomous infrastructure teams

This pattern fits best where Tacavar spends a lot of its time: small, high-trust, high-velocity infrastructure environments that still need hard boundaries.

If you are running a few servers, shipping continuously, and automating real business operations across machines, you do not always need a full platform engineering stack to get disciplined remote execution. You need a narrow interface, strong defaults, and logs that tell the truth. Tacavar’s whitelist command dispatcher gives small teams most of the utility of shared SSH with a fraction of the blast radius.

It is especially useful for founder/operator teams because the people designing the system are often the same people carrying pager responsibility. They benefit directly from architectures that are easy to reason about at 2 a.m. A whitelist, a dedicated key, sudo on known paths, and audit logging is not glamorous. It is legible. In real operations, legibility wins.

The broader lesson is that least privilege devops is not about adding enterprise ceremony to a lean system. It is about refusing false shortcuts. Tacavar did not remove automation to improve security. Tacavar constrained automation so it could remain fast, useful, and survivable.

That is the right pattern whenever one Tacavar-managed machine needs power over another without inheriting total authority. Use SSH as transport, not as a blank check. Model remote actions as named capabilities. Log every call. Grow the interface intentionally.

If you want Tacavar to design secure autonomous infrastructure patterns for your stack, start at tacavar.com.