pythia-producthunt
Pricing
Pay per event
pythia-producthunt
Pricing
Pay per event
Rating
0.0
(0)
Developer
Creator Fusion
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Share
pythia-actors — Rust workspace for Pythia OSINT Actors on Apify
Cargo workspace containing Apify Actors written in Rust. Each Actor is a separate
crate under actors/. Shared functionality lives in crates/.
Layout
pythia-actors/├── Cargo.toml # workspace root, shared deps + release profile├── crates/│ ├── apify_client/ # minimal Apify API client (input read, dataset write)│ └── source_common/ # shared types: Signal, ResultEnvelope, redaction└── actors/├── greenhouse/ # public job-board fetcher│ ├── Cargo.toml│ ├── src/main.rs│ └── .actor/│ ├── actor.json│ ├── input_schema.json│ └── Dockerfile└── sec_edgar/└── ... (same shape)
Build
# Local dev build (fast, debug symbols)cargo build# Release build (LTO, stripped, optimized — what ships to Apify)cargo build --release# Run a specific Actor locallyAPIFY_TOKEN=xxx cargo run -p greenhouse-actor -- --input examples/greenhouse_input.json
Deployment to Apify
Each Actor has its own .actor/ directory with the Apify deployment scaffold.
From inside an Actor's directory:
cd actors/greenhouseapify push # uploads to Apify, builds Docker image, publishes
The Dockerfile is multi-stage — cargo build --release, then COPY the
single binary into a minimal debian:bookworm-slim image. Final image is
~50-80 MB depending on the Actor's deps.
IP protection posture
Release profile uses lto = "fat" + codegen-units = 1 + strip = "symbols"
panic = "abort". This produces the smallest, most-aggressively-optimized binary, which is also the hardest to reverse-engineer. Combined with Apify's private-Actor model, customers never see source code at any point.
For the proprietary scoring/synthesis layer (when built), see the planned
actors/synthesis/ Actor — that's where we'll consider WASM-bound critical
paths and additional obfuscation.
Testing
- Per-crate unit tests:
cargo test - HTTP fixtures via
reqwestmocks - Integration tests against real public APIs are gated behind
LIVE_NETWORK=1env var to keep CI deterministic.
Why Rust on Apify
- Compiled binary = strong IP protection vs. minified JS
- Single binary, no node_modules — small Apify Docker image, faster cold start
tokio+reqwestasync fan-out for parallel source fetching- Existing Creator Fusion Rust expertise (ark_sensor, Ouija eBPF projects)