Open-source project
EthanXiang777/ash-agents avatar
EthanXiang777/ash-agents

ash-agents: disposable browser identities instead of one hidden one

A swarm of disposable agents for unattributable web interaction

471 stars18 forksPythonMIT

At a glance

What is it?
Ash Agents is a Python framework in which every web task runs under a freshly created identity that is discarded on completion. The design is coherent and the README is candid about its scope, but the repository as supplied documents a structure and a set of principles rather than a runnable installation path.
Who is it for?
Adopt ash-agents only if you have read the source under ash/isolation and ash/identity and confirmed how fingerprints and network egress are actually assigned per agent, because the README describes that separation as the structure of the environment but never names the mechanism. If your work requires a logged-in account that persists across sessions, this is the wrong tool: identity is scoped to the task and erased on completion, so there is nothing to log back into.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 62 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The problem ash-agents targets is identity persistence, not tracking scripts

Most privacy tooling accepts a durable identity and tries to reduce what leaks from it. The README states this position directly: a VPN hides where you connect from but not who you are once you arrive, private browsing clears local state but does nothing about fingerprinting or behavioral correlation, and anti-tracking extensions cut some third-party collection while leaving first-party identification intact. Each of those narrows a surface. None of them removes the stable thing that a site can accumulate observations against.

Ash Agents takes the opposite position. The README says the system removes the persistent identity instead of hiding it better, and that you never act on the web directly, you delegate. The intended user is someone running automated web interaction where being recognized across sessions is itself the problem: repeated price checks, research across many sites, or any workflow where the accumulation of behavior under one profile is the exposure you are trying to avoid. It is not aimed at a person who wants a hardened everyday browser. It is aimed at someone writing code that performs tasks on sites they do not control.

Four directories and one claim about where separation lives

The README gives the repository layout as four packages: isolation, reasoning, orchestration, and identity. Isolation is described as a fresh, separable browser context per agent. Reasoning turns intent into actions and reasons over each page live. Orchestration decomposes a task, fans it across agents, and reconciles results. Identity instantiates on task start and destroys on completion.

The claim worth examining is the one about isolation. The README says separation is the structure of the environment, not a setting applied on top of it. That is a meaningful distinction in browser automation, where the common pattern is a single browser process with per-context options layered onto it, and where leakage between contexts is a known class of bug. Whether ash-agents actually achieves process-level or environment-level separation is not stated. The README asserts the property; it does not name the mechanism. Anyone evaluating this for real use needs to read the isolation package to find out whether each agent gets its own browser process, its own network namespace, or something lighter.

The orchestration design has a second claim that matters: coordination lives entirely within your trust boundary and is never exposed to any site. The README phrases this as coordination being private while only the multiplicity is observable. If that holds, an observer sees unrelated participants and no coordinating entity, which is a different threat model from a proxy pool where a central controller is itself a single point of correlation.

Getting it running: what the README does and does not give you

This is the weakest part of the supplied material, and it should be stated plainly. The README contains no install command, no package name on PyPI, no example invocation, no configuration keys, and no environment variables. There are no retrieved releases. Nothing in the material shows how a task is submitted, how many agents a task fans out to, or how a network egress is selected per agent.

What the material does support is the shape of the interface. Intent is expressed in plain language, and the system delegates it to one or more agents. That means the entry point is a natural-language task string handed to the orchestrator, which decomposes it and fans it across agents. The identity package instantiates on task start and destroys on completion, so identity lifetime is bound to task lifetime rather than to a session you manage. The isolation package supplies the per-agent browser context.

Beyond that, everything is inference from directory names. If you want to run this, the first step is to read the source under ash/orchestration to find the task submission function, and ash/identity to find what a task-scoped identity actually consists of. Do not expect a quickstart to carry you.

Disposability has a cost that the README does not price

The central design decision is that completion and erasure are a single event, with no archive, no fallback copy, and nothing kept against the possibility it might later be wanted. That is stated as a virtue, and for the stated threat model it is one. It also removes a capability that many automation workflows depend on.

Anything requiring a persistent session is out of scope. If a task needs a logged-in account, a saved cart, a multi-step checkout, or a workflow that resumes tomorrow, ash-agents cannot serve it, because the identity that held that state no longer exists. The same property makes debugging harder: if an agent fails mid-task, there is no retained state to inspect. The README's framing of erasure as unconditional is honest, but it means the framework is unsuitable for any workflow where continuity is the point.

A second limitation is subtler. Non-linkability is claimed on the basis that each identity shares no fingerprint, state, or behavioral baseline with any other. Fingerprint separation is a technical problem that can be solved. Behavioral baseline separation is harder, because timing, task ordering, and the pattern of which sites get visited in what sequence can correlate two otherwise unrelated identities. The README does not address timing or sequencing as a correlation channel. That is a real gap, not a nitpick.

How this differs from stealth browser frameworks

The closest category is stealth browser automation, projects that patch or replace browser fingerprint signals so a single automated session looks like a normal human session. Playwright with fingerprint-patching plugins and the various undetected-browser forks sit in that space. The approach there is concealment: keep one session, make it look unremarkable, and keep it alive.

Ash Agents inverts that. The README states the system declines to maintain a persistent identity at all rather than hiding one more effectively, and that there is no long-lived profile to conceal because none is ever permitted to form. The practical difference shows up in what each tool is good at. A stealth browser is the right choice when you need to hold a session, log in, and act as a consistent user over time. Ash Agents is the right choice when consistency is the liability and each interaction should stand alone.

The trade-off is that ash-agents gives up the ability to build up any relationship with a site. A stealth session can accumulate cookies and history that make it look more legitimate over time. A disposable identity starts from nothing every single time, which is exactly the point, and also exactly why some sites will treat every visit as a first visit from an unknown party.

Maintenance, licence, and what the notice actually says

The project is MIT licensed, with the licence file at legal/LICENSE per the README. MIT is permissive: it allows use, modification, and redistribution with attribution and without a warranty. That last part matters here more than usual, because the README makes strong claims about non-attribution and non-linkability that are properties of a deployment, not of a code licence. The licence grants you the code. It does not grant you any assurance about what the code does against a given site's detection.

The repository is not archived, and the last push recorded is 2026-07-16. There are no retrieved releases, which means there is no versioned artifact to pin and no changelog to read. For a dependency you intend to run in production, that is a real consideration: you would be tracking the main branch. The README also carries a notice stating that the project is a technical system, not an offer or inducement, and that you are responsible for compliance with the terms of services you interact with and with the law in your jurisdiction. That is a normal disclaimer, and it is worth reading as a boundary rather than boilerplate, because the framework's entire purpose is to make interactions unattributable, which is precisely the property that many sites' terms of service are written to prohibit.

Editorial conclusion

Adopt ash-agents only if you have read the source under ash/isolation and ash/identity and confirmed how fingerprints and network egress are actually assigned per agent, because the README describes that separation as the structure of the environment but never names the mechanism. If your work requires a logged-in account that persists across sessions, this is the wrong tool: identity is scoped to the task and erased on completion, so there is nothing to log back into. Before writing any integration code, verify three things in the repository itself: how a task is submitted to the orchestrator, what configuration selects a network egress per agent, and whether the isolation layer can run headless on your infrastructure. Until those are answered from the code, treat the project as a design to study rather than a dependency to install.

Official sources

  1. EthanXiang777/ash-agents on GitHub
  2. Issues
  3. License: MIT
  4. README
Community notes

Community notes