AutoSwarm Shadow Adapter
Pauses AutoSwarm agentic DAGs for human sign-off or remote GPU work without timeouts or stalling parallel branches.
- Source repo
- AhmadHassan-BTed/AutoSwarm-Shadow-Adapter
- Stars
- ★ 2.8k
- Last updated
- 2d ago
- License
- MIT
- Primary language
- Python
- FA score
- 31/100 · Major gaps
At a glance
- How it runs
- Works with
- Portable with changesOpenAI API · Claude API
- Cost
- Free software; you pay for model usage
- Setup effort
- Medium · a few setup steps
- You'll need
- Typical use
- A company runs multi-agent AutoSwarm workflows but needs real people to sign off on legal review or architecture decisions
- Not a fit if
- Teams without an OpenOPC/AutoSwarm DAG engine to plug into
- Teams wanting a managed hosted service instead of self-hosting
- Source review
- 31/100 · Major gaps 1 safety controls not found
What does this agent do, and when should you use it?
AutoSwarm-Shadow-Adapter is an external agent adapter plugin for the AutoSwarm (OpenOPC) agentic DAG runtime, registered through ADAPTER_CLASSES["shadow"] with zero modifications to the core repository. It intercepts tasks for roles configured with preferred_external_agent: shadow, parks them in an isolated SQLite WAL database (shadow_tasks.db) in under 50ms, and returns AWAITING_HUMAN so worker threads are released immediately. Human reviewers claim work through a React 19 portal on top of a FastAPI REST API (shadow-serve, port 8800), where they read generated markdown briefs, inspect inherited upstream artifacts, and upload up to 5 files per submission. Remote GPU machines can join as silicon workers via the shadow-worker daemon, polling by role and running local inference through Ollama, Anthropic, OpenAI, or a custom Python handler. When a deliverable is submitted, OpcResumeRepository writes back to delegation_work_items.phase in the host store.db, waking downstream DAG nodes through AutoSwarm's native phase hooks.
On the engine side, ShadowModeAdapter parses the project goal, builds a markdown task brief with TaskBriefBuilder, persists the record to shadow_tasks.db, and returns AWAITING_HUMAN; ancestor deliverables are packaged as context. On the portal side, the FastAPI server (shadow-serve --port 8800) exposes JWT+bcrypt-authenticated /api/v1 endpoints, and a React 19 TaskWorkspace lets humans claim pending tasks, write solution notes, and attach files that are indexed into CorporateArtifacts with SHA-256 hashes. On the silicon side, shadow-worker logs in with --server-url, --role, --provider and --model, polls the queue, and runs local inference; ShadowWorker(custom_handler=...) embeds the same loop in custom Python pipelines. Submission triggers OpcResumeRepository to update delegation_work_items.phase in the host store.db, so AutoSwarm's native phase hooks resume downstream DAG nodes and pass artifacts forward; a rework_requested transition supports return-for-revision loops.
- A company runs multi-agent AutoSwarm workflows but needs real people to sign off on legal review or architecture decisions
- A freelancer juggling several client contracts routes execution to remote silicon nodes and approves deliverables asynchronously
- Finance, healthcare or legal teams need immutable, attributed audit trails for SOC 2, ISO 27001 or GDPR human-oversight requirements
- An enterprise has spare GPU workstations or cloud nodes and wants to plug them in as BYOC inference workers without touching the central engine
- A role is vacant or overloaded, so AI completes most preliminary work and only the final decision is routed to an available manager
How do you install or deploy this agent?
Requires Python 3.10+ and a host project where AutoSwarm (opc) is installed and runnable.
pip install AutoSwarm-shadow-adapterA JWT signing secret (documented as at least 32 characters) is mandatory:
export SHADOW_JWT_SECRET="a-very-long-secret-at-least-32-chars"Optional variables include SHADOW_DB_PATH, SHADOW_OPC_STORE_PATH, SHADOW_UPLOAD_DIR, SHADOW_MAX_FILES_PER_SUBMISSION, SHADOW_MAX_FILE_SIZE_MB, SHADOW_MAX_TOTAL_UPLOAD_SIZE_MB and SHADOW_API_PORT.
How do you use this agent?
Register the adapter and start the portal in a background thread from your entry point:
from opc.layer3_agent.adapters.registry import ADAPTER_CLASSES
from shadow_adapter import ShadowModeAdapter, start_server_in_thread
ADAPTER_CLASSES["shadow"] = ShadowModeAdapter
start_server_in_thread(port=8800)Or run it as a sidecar from a separate terminal:
shadow-serve --port 8800Point human-backed roles at the shadow adapter in your company config:
roles:
legal_counsel:
title: "Human Legal Counsel"
execution_strategy: external
preferred_external_agent: shadow
senior_architect:
title: "Human Senior Architect"
execution_strategy: external
preferred_external_agent: shadowJoin remote compute nodes as silicon workers:
shadow-worker \
--server-url "http://192.168.1.100:8800" \
--username "dev_node_1" \
--password "secure_pass_1" \
--role "senior_developer" \
--provider "ollama" \
--model "llama3.3:70b"Reviewers then open http://localhost:8800 to claim tasks and submit deliverables; the REST base is http://localhost:8800/api/v1.
What are this agent's strengths and limitations?
- Sub-50ms non-blocking intercept parks tasks in an isolated SQLite WAL store, so human response times can be arbitrarily long without engine timeouts
- Registers as ADAPTER_CLASSES["shadow"] without modifying the AutoSwarm core repository
- One REST surface serves both the React 19 human portal and remote shadow-worker nodes across Ollama, Anthropic, OpenAI or custom handlers
- Submission writes back to delegation_work_items.phase in the host store.db, reusing AutoSwarm's native state machine to resume downstream nodes
- Built-in CorporateArtifacts registry with SHA-256 hashes and hierarchy-driven context injection gives downstream roles the exact upstream files
- Hard-coupled to AutoSwarm (opc): adapter registry, store.db schema and host runtime, so it is unusable outside that ecosystem
- Deployment requires a JWT secret, host store.db path, upload directory and multi-user accounts — not a one-command setup
- Documented as a v0.1.0 pre-release, and repository naming is inconsistent (shadow-adapter vs Shadow-Adapter)
- Default upload limits (10MB per file, 5 files, 50MB total) may be too small for large deliverables
- Several architecture deep-dive links resolve to search pages rather than files, so some specs must be reconstructed
How does this agent compare with similar options?
Key facts side by side with the most closely related agents.
| Agent | Source review | Form / cost | Stars | Updated | Language | Full support on |
|---|---|---|---|---|---|---|
| AutoSwarm Shadow Adapter This agent | 31 · Major gaps | Library / SDKFree + model costs | ★ 2.8k | 2d ago | Python | OpenAI API · Claude API |
| Auto Browser | 62 · Some gaps | Self-hosted serviceFree + model costs | ★ 914 | 3d ago | Python | OpenAI API · Claude API |
| AuditPilot | 60 · Some gaps | Web appFree + model costs | ★ 1.2k | 2mo ago | Python | — |
| Agentspan | 62 · Some gaps | CLIFree + model costs | ★ 499 | 27d ago | TypeScript | OpenAI API · Claude API |
How does FollowAgents rate this agent?
Why each dimension lost points
README describes JWT+bcrypt auth, upload size caps, SHA-256 integrity hashes, and audit timelines as design intent; however the repository only provides README, LICENSE, pyproject, CI, and test files, with no actual implementation code (shadow_adapter package, security.py, upload.py, etc.) to verify. Thus least_privilege, user_confirmation, data_flow_transparency, sensitive_data_handling, dependency_security, and external_effects each score 1 (asserted without implementation support). Rollback scores 0: README claims store.db state recovery but provides no mechanism to undo submitted deliverables or restore overwritten state. Source_attribution scores 1: LICENSE and pyproject declare MIT and authors, but README links point to google.com searches rather than real docs, weakening attribution credibility.
Test files (conftest.py, mock_openopc_engine.py) show full lifecycle assertions against a mock engine, and CI configures a multi-version matrix, indicating some self-consistency; but implementation code is absent, so tests cannot be verified to pass, dependency availability (opc>=0.1.0 is optional) is unconfirmed, and failure message handling has no source to inspect—all three score 1.
README clearly lists target audiences (freelancers, enterprise compliance, BYOC remote compute) and multiple scenarios, so audience_and_scenarios scores 2; but capability boundaries (which DAG features are unsupported), trigger precision (matching rules for preferred_external_agent: shadow), and environment fit (only Python 3.10+, SQLite WAL mentioned; no OS/network/firewall requirements) are only summarized, scoring 1 each.
README is well-structured with install steps and examples, scoring 1; but naming stability is problematic: package name is AutoSwarm-shadow-adapter in README, openopc-shadow-adapter in pyproject, and repo name AutoSwarm-Shadow-Adapter, with README links pointing to google.com searches—naming and links are unstable, scoring 0. Known limitations are entirely absent, scoring 0. LICENSE is full MIT text, scoring 2. Version numbers conflict (README v0.1.0 vs pyproject 1.0.0) and no CHANGELOG file exists, scoring 0. Maintenance responsibility: author and issue link present but publisher identity unverified, scoring 1.
README describes output usability (deliverables, attachments, audit timeline) and marginal value (non-blocking HITL, BYOC), but lacks implementation code and real run evidence, so whether outputs are directly usable, marginal value holds, and cost-benefit is reasonable cannot be confirmed—all three score 1.
claim_traceability scores 0: multiple README links point to google.com searches rather than real docs (docs/architecture.md etc.), making key claims untraceable. cross_source_corroboration scores 1: test files somewhat correspond to README descriptions, but implementation code is missing, limiting cross-validation. fact_inference_separation scores 1: README mixes factual descriptions with marketing inferences (e.g., '5x output', '90% preliminary work') without clear separation.
- Not found in source: rollback or recovery pathBack up first, or work on a git branch or snapshot, so its changes can be undone.
- Repository lacks actual implementation code (shadow_adapter package, security.py, upload.py, etc.); only README, tests, and config are present, so security and functional claims cannot be verified.
- Multiple README documentation links point to google.com searches rather than real files, making key architecture and database schema claims untraceable.
- Package name and version are inconsistent (README v0.1.0 / pyproject 1.0.0; AutoSwarm-shadow-adapter / openopc-shadow-adapter), posing naming and release stability risks.
- Known limitations and CHANGELOG are absent, rollback mechanism is unspecified, and publisher identity is unverified.