https://github.com/sansmoraxz/wf-info-2
Alternative warframe companion app
https://github.com/sansmoraxz/wf-info-2
inventory linux warframe
Last synced: 4 months ago
JSON representation
Alternative warframe companion app
- Host: GitHub
- URL: https://github.com/sansmoraxz/wf-info-2
- Owner: sansmoraxz
- License: apache-2.0
- Created: 2026-01-14T08:25:31.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2026-01-25T18:37:42.000Z (5 months ago)
- Last Synced: 2026-01-26T10:40:50.666Z (5 months ago)
- Topics: inventory, linux, warframe
- Language: Rust
- Homepage:
- Size: 601 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# WF Info
Alternative Warframe companion app with Linux support.
## Building
```bash
cargo build --release
```
This produces two binaries:
- `wf-info-daemon` - The main daemon that monitors Warframe
- `wf-info-cli` - CLI client to interact with the daemon
## Usage
### Option 1: Wrapper Mode (No sudo required with default kernel settings)
Run as a parent process that launches Warframe as a child. This allows memory access without sudo on most systems:
```bash
./target/release/wf-info-daemon -- /path/to/Warframe.x64.exe [warframe args]
```
**For Steam:** Set as launch options:
```
/path/to/wf-info-daemon -- %command%
```
The daemon will automatically exit when Warframe closes.
### Option 2: Standalone Mode (Requires elevated permissions)
Run independently and monitor an already-running Warframe instance:
```bash
# With capabilities (recommended):
sudo setcap cap_sys_ptrace=eip ./target/release/wf-info-daemon
./target/release/wf-info-daemon
# Or with sudo:
sudo ./target/release/wf-info-daemon
# Or relax ptrace restrictions (security risk):
sudo sysctl kernel.yama.ptrace_scope=0
./target/release/wf-info-daemon
```
## Control API
The daemon exposes a line-delimited JSON protocol over TCP, Unix sockets, or Windows named pipes.
### Configuration
Set endpoint via CLI flags or environment variables:
| Flag | Environment Variable | Example |
|------|---------------------|---------|
| `--tcp` | `WF_INFO_API_TCP` | `127.0.0.1:47410` |
| `--unix` | `WF_INFO_API_UNIX` | `/tmp/wf-info-2.sock` |
| `--npipe` | `WF_INFO_API_NPIPE` | `wf-info-2-control` |
**Defaults (when no options are set):**
- Linux/macOS: Unix socket at `${XDG_RUNTIME_DIR}/wf-info-2/control.sock`
- Windows: Named pipe `\\.\pipe\wf-info-2-control`
- Other platforms: TCP `127.0.0.1:47410`
### Supported Operations
| Operation | Description |
|-----------|-------------|
| `ping` | Health check |
| `subscribe` | Subscribe to daemon events (streaming) |
| `inventory.load` | Load inventory from file or JSON |
| `inventory.filter` | Filter and search inventory items |
| `inventory.meta.get` | Get inventory metadata |
| `inventory.stale.update` | Mark inventory as stale |
| `inventory.refresh` | Refresh inventory from game API |
| `screenshot.trigger` | Capture and return a screenshot |
### Examples
**TCP:**
```bash
echo '{"id":1,"op":"ping"}' | nc 127.0.0.1 47410
echo '{"id":2,"op":"inventory.filter","params":{"category":"suits","contains":"prime","include_details":true}}' | nc 127.0.0.1 47410
```
**Unix socket:**
```bash
echo '{"id":1,"op":"ping"}' | socat - UNIX-CONNECT:/tmp/wf-info-2.sock
```
**Windows named pipe:**
```powershell
echo {"id":1,"op":"ping"} | ncat --exec "cmd /c type con" --no-shutdown \\.\pipe\wf-info-2-control
```
## CLI Client
The `wf-info-cli` binary provides a convenient interface to the daemon.
### Commands
| Command | Description |
|---------|-------------|
| `ping` | Ping the daemon |
| `watch` | Subscribe to events (streaming) |
| `inventory-load` | Load inventory data |
| `inventory-filter` | Filter inventory items |
| `inventory-meta` | Get inventory metadata |
| `inventory-stale` | Mark inventory as stale |
| `inventory-refresh` | Refresh inventory from game |
| `screenshot` | Trigger screenshot capture |
| `call` | Call any operation by name |
### Examples
```bash
# Ping the daemon
./target/release/wf-info-cli --tcp 127.0.0.1:47410 ping --pretty
# Load inventory from file
./target/release/wf-info-cli inventory-load --path testdata/pretty.json
# Filter inventory
./target/release/wf-info-cli inventory-filter --category suits --contains prime --include-details --limit 10
# Mark inventory as stale
./target/release/wf-info-cli inventory-stale --timestamp 1737840000 --reason "manual reset"
# Watch for events
./target/release/wf-info-cli watch --events account_login,inventory_fetched
# Trigger screenshot
./target/release/wf-info-cli screenshot
```
_**Note:** The screenshot will only do fullscreen capture, to avoid unintended consequences, ensure that the game window is active when capturing._
## Events
The daemon emits events that clients can subscribe to via the `subscribe` operation or `watch` command:
- `account_login` - Player account login detected
- `account_logout` - Player account logout detected
- `inventory_fetched` - Inventory loaded successfully
- `inventory_stale` - Inventory marked as stale
- `profile_updated` - Profile data updated
- `screenshot_triggered` - Screenshot captured
## Environment Variables
| Variable | Description |
|----------|-------------|
| `WF_INFO_API_TCP` | TCP endpoint for control API |
| `WF_INFO_API_UNIX` | Unix socket endpoint (Unix only) |
| `WF_INFO_API_NPIPE` | Named pipe endpoint (Windows only) |
| `WF_ITEMDATA_DIR` | Path to warframe-items-data JSON directory |
| `WARFRAME_APP_CONFIG` | Custom path to Warframe config directory |
| `RUST_LOG` | Logging level (e.g., `debug`, `info`) |