
Security News
PHP Foundation Says Chainguard Broke Security Embargo Ahead of Emergency Patches
The PHP Foundation says Chainguard broke a security embargo ahead of critical RCE patches, as leaks disrupted the coordinated release.
Real-time terminal UI debugger for React Native
Salvetron is a real-time debugging tool for React Native developers, delivered as a terminal UI (TUI). The Salvetron CLI runs a WebSocket server in your terminal and renders incoming telemetry — JS logs, native logs, network traffic, and live performance metrics — from your running app. Your app streams that telemetry using the companion SDK, @salve-software/salvetron-react-native.
SALVETRON_PORT)
Salvetron has two parts:
┌──────────────────────────┐ WebSocket ┌──────────────────────────┐
│ React Native App │ ───────────────────────▶ │ Salvetron CLI │
│ @salve-software/ │ port 8765 │ (terminal UI debugger) │
│ salvetron-react-native │ │ │
└──────────────────────────┘ └──────────────────────────┘
│ │
├── JS Console Logs ├── Dashboard (FPS/CPU/memory)
├── Native Logs (iOS/Android) ├── JS Logs viewer
├── Network Requests/Responses ├── Network Inspector
└── Performance Metrics └── Native Logs viewer
Salvetron CLI (salvetron): an Ink-based terminal UI that runs a WebSocket server and renders telemetry from connected apps.
salvetron-react-native (SDK): A React Native package built with Nitro Modules that captures logs, network activity, and performance metrics and streams them to the CLI.
| Component | Requirement |
|---|---|
| Salvetron CLI | Node.js 18+ |
| React Native SDK | React Native 0.73+ |
| Xcode | 15+ (for iOS development) |
| Android Studio | Latest (for Android development) |
Clone the repository:
git clone https://github.com/Salve-Software/salvetron.git
cd salvetron
yarn install
Start the CLI:
yarn dev # starts the Salvetron CLI (Ink TUI) on port 8765
Or, once published:
npx salvetron
Override the port with the SALVETRON_PORT environment variable:
SALVETRON_PORT=9000 yarn dev
Install the package in your React Native project:
# Using npm
npm install @salve-software/salvetron-react-native
# Using yarn
yarn add @salve-software/salvetron-react-native
For iOS, install pods:
cd ios && pod install && cd ..
For Android, the package will auto-link. Run a gradle sync if needed.
Run yarn dev (or npx salvetron) in your terminal. The CLI starts a WebSocket server on port 8765 and shows the Dashboard. Use the tab bar / keyboard shortcuts shown in the status bar to switch between Dashboard, JS Logs, Network, and Native Logs. Connected device info appears in the header once your app connects.
Add the following code to your React Native app's entry point (e.g., App.tsx or index.js):
import Salvetron from '@salve-software/salvetron-react-native';
// Connect only in development mode
if (__DEV__) {
Salvetron.connect({
host: '192.168.1.100', // Your Mac's IP address
port: 8765,
enableNetworkCapture: true,
onConnect: () => console.log('Connected to Salvetron!'),
onDisconnect: () => console.log('Disconnected from Salvetron'),
onError: (error) => console.error('Salvetron error:', error),
});
}
Tip: Use
localhostwhen running on iOS Simulator, or your Mac's local IP address for physical devices.
Salvetron.connect(config?)Establishes a WebSocket connection to the Salvetron CLI.
interface SalvetronConfig {
host?: string; // Default: 'localhost'
port?: number; // Default: 8765
enableNetworkCapture?: boolean; // Default: true
ignoredUrls?: RegExp[]; // URL patterns to ignore
onConnect?: () => void;
onDisconnect?: () => void;
onError?: (error: Error) => void;
}
Salvetron.disconnect()Closes the WebSocket connection.
Salvetron.disconnect();
Salvetron.isConnected()Returns the current connection status.
const connected = Salvetron.isConnected(); // boolean
// Send logs with different levels
Salvetron.log('General log message');
Salvetron.debug('Debug information', { userId: 123 });
Salvetron.info('Informational message');
Salvetron.warn('Warning message');
Salvetron.error('Error message', { stack: error.stack });
All logging methods accept an optional metadata object as the second parameter.
Problem: App can't connect to the Salvetron CLI
Solutions:
yarn dev / npx salvetron)ifconfig to find your machine's IP)localhost instead of IP addressProblem: HTTP requests are not appearing in the Network tab
Solutions:
enableNetworkCapture: true is set in the configignoredUrls listProblem: Console logs are not showing in the Salvetron CLI
Solutions:
Salvetron.isConnected())__DEV__ === true)Problem: The Salvetron CLI process using too much memory
Solutions:
We welcome contributions! Here's how you can help:
git clone https://github.com/your-username/salvetron.git
git checkout -b feature/your-feature-name
feature/ - New featuresfix/ - Bug fixesdocs/ - Documentation updatesrefactor/ - Code refactoringtest/ - Adding or updating testsFollow conventional commits:
type(scope): description
Examples:
feat(sdk): add custom log levels support
fix(app): resolve memory leak in log viewer
docs(readme): update installation instructions
yarn dev and verify with the simulator (yarn sim)salvetron (CLI, TypeScript / Ink):
src/modules/<feature> and shared UI under src/sharedyarn typecheck before opening a PRsalvetron-react-native (SDK, TypeScript):
cd packages/salvetron-react-native/example
yarn install
cd ios && pod install && cd ..
yarn ios # or yarn android
This project is licensed under the MIT License - see below for details:
MIT License
Copyright (c) 2024 Salvetron Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Made by Salve Software
FAQs
Terminal UI debugger for React Native
We found that salvetron demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
The PHP Foundation says Chainguard broke a security embargo ahead of critical RCE patches, as leaks disrupted the coordinated release.

Security News
PHP releases emergency patches for two critical RCE vulnerabilities as agencies urge organizations to take unpatched sites offline.

Threat Research
/Security News
A supply chain attack compromised LiteLLM 1.107.0 on PyPI and Docker, spreading malware that steals cloud credentials, developer secrets, and AI provider keys.