Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/release-cli.yml
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ jobs:
body: |
## Conduit CLI ${{ steps.version.outputs.VERSION }}

Conduit is a volunteer-run proxy node that helps relay traffic for users in censored regions.
Conduit is a volunteer-run proxy node that helps relay traffic for Psiphon users.

### Running the Conduit CLI

Expand Down
2 changes: 1 addition & 1 deletion cli/GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ We have observed that Conduit can support around 150-350 concurrent users for ev

## Expected usage patterns:

Conduit is one tool of many in Psiphon's circumvention toolbox. On some networks, Conduit will not work as well as some of our other protocols, and on other networks Conduit may be the best way to get users connected. This changes constantly as network conditions change. Like everything, Conduit servers can be blocked, this is another reason why IP diversity is so important.
Conduit is one tool of many in Psiphon's toolbox. On some networks, Conduit will not work as well as some of our other protocols, and on other networks Conduit may be the best way to get users connected. This changes constantly as network conditions change. Like everything, Conduit servers can be blocked, this is another reason why IP diversity is so important.

Brand new Conduit stations will take time to build up a reputation with the tunnel connection broker. For this reason, it is not unexpected for freshly deployed Conduit stations to not see traffic for some hours or even days, depending on supply vs demand. If you can, keep your Conduit stations running even if they are not seeing high connection volumes; this latent capacity may become very useful when network conditions change.

Expand Down
71 changes: 6 additions & 65 deletions cli/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Conduit CLI

Command-line interface for running a Psiphon Conduit node, a volunteer-run proxy that relays traffic for users in censored regions.
Command-line interface for running a Psiphon Conduit node, a volunteer-run proxy that relays traffic for Psiphon users.

## Quick Start

Expand All @@ -13,26 +13,12 @@ Contact Psiphon (`conduit-oss@psiphon.ca`) to discuss custom configuration value

Conduit deployment guide: [GUIDE.md](./GUIDE.md)

### Common-only mode
### Usage

```bash
conduit start
```

### Personal compartment mode

```bash
# Generate and persist a personal compartment ID, and print a share token
conduit new-compartment-id --name my-station

# Enable personal clients (can be combined with common clients)
conduit start --max-common-clients 50 --max-personal-clients 10
```

If you do not have `personal_compartment.json` in your data directory yet, you can also pass a compartment ID or share token directly:
Download a release binary, then :

```bash
conduit start --max-personal-clients 10 --compartment-id "<id-or-token>"
conduit start
```

## Docker
Expand All @@ -48,7 +34,6 @@ The compose file enables Prometheus metrics on `:9090` inside the container. To
## Commands

- `conduit start` - start the Conduit inproxy service
- `conduit new-compartment-id` - create and persist a personal compartment ID and output a share token
- `conduit ryve-claim` - output Conduit claim data for Ryve

## Start Command Flags
Expand All @@ -57,8 +42,6 @@ The compose file enables Prometheus metrics on `:9090` inside the container. To
| -------------------------- | ------- | --------------------------------------------------------------------------------- |
| `--psiphon-config, -c` | - | Path to Psiphon network config file (required when no embedded config is present) |
| `--max-common-clients, -m` | `50` | Maximum common proxy clients (`0-1000`) |
| `--max-personal-clients` | `0` | Maximum personal proxy clients (`0-1000`) |
| `--compartment-id` | - | Personal compartment ID or share token |
| `--bandwidth, -b` | `40` | Total bandwidth limit in Mbps (`-1` for unlimited) |
| `--set` | - | Override allowlisted config keys (`key=value`), repeatable |
| `--metrics-addr` | - | Prometheus metrics listen address (for example, `:9090`) |
Expand All @@ -68,25 +51,6 @@ Global flags:
- `--data-dir, -d` (default `./data`)
- `--verbose, -v` (repeatable count flag)

At least one of `--max-common-clients` or `--max-personal-clients` must be greater than `0`.

## Personal Compartments

When `--max-personal-clients` is greater than 0, Conduit needs a personal compartment ID.

Use `conduit new-compartment-id` to:

1. Generate a personal compartment ID.
2. Save it to `personal_compartment.json` in your data directory.
3. Print a v1 share token (for pairing).

`--name` is limited to 32 characters.

You can provide `--compartment-id` as either:

- a raw compartment ID, or
- a share token (the CLI extracts and validates the ID)

## `--set` Overrides

`--set` supports a strict allowlist of config keys:
Expand All @@ -97,8 +61,6 @@ You can provide `--compartment-id` as either:
- `InproxyLimitUpstreamBytesPerSecond`
- `InproxyMaxClients`
- `InproxyMaxCommonClients`
- `InproxyMaxPersonalClients`
- `InproxyProxyPersonalCompartmentID`
- `InproxyReducedEndTime`
- `InproxyReducedLimitDownstreamBytesPerSecond`
- `InproxyReducedLimitUpstreamBytesPerSecond`
Expand All @@ -108,9 +70,7 @@ You can provide `--compartment-id` as either:
Example:

```bash
conduit start \
--set EmitInproxyProxyActivity=true \
--set InproxyReducedMaxCommonClients=10
conduit start --set InproxyMaxCommonClients=25
```

## Metrics
Expand Down Expand Up @@ -145,25 +105,7 @@ To use throttling with Docker:
docker compose -f docker-compose.limited-bandwidth.yml up -d
```

Edit `docker-compose.limited-bandwidth.yml` to set limits:

```yaml
command: [
"--traffic-limit",
"500", # Total quota in GB
"--traffic-period",
"30", # Time period in days
"--bandwidth-threshold",
"80", # Throttle at 80% usage
"--min-connections",
"10", # Reduced common clients when throttled
"--min-bandwidth",
"10", # Reduced bandwidth when throttled
"--", # Separator
"start", # Conduit command
..., # Conduit flags
]
```
Edit `docker-compose.limited-bandwidth.yml` to set limits.

How it works:

Expand All @@ -177,7 +119,6 @@ How it works:
Keys and state are stored in the data directory (default: `./data`):

- `conduit_key.json` - node identity keypair
- `personal_compartment.json` - persisted personal compartment ID
- `traffic_state.json` - traffic usage state (when throttling is enabled)

The Psiphon broker tracks proxy reputation by key. Always use persistent storage for your data directory so your key and reputation survive restarts.
Expand Down
4 changes: 1 addition & 3 deletions cli/cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,7 @@ var (
var rootCmd = &cobra.Command{
Use: "conduit",
Short: "Conduit - A volunteer-run proxy relay for the Psiphon network",
Long: `Conduit is a Psiphon inproxy service that relays traffic for users
in censored regions, helping them access the open internet.

Long: `Conduit is a Psiphon inproxy service that relays traffic for Psiphon users, helping them access the open internet.
Run 'conduit start' to begin relaying traffic.`,
Version: version,
}
Expand Down
4 changes: 2 additions & 2 deletions cli/cmd/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,9 @@ var startCmd = &cobra.Command{

func getStartLongHelp() string {
if config.HasEmbeddedConfig() {
return `Start the Conduit inproxy service to relay traffic for users in censored regions.`
return `Start the Conduit inproxy service to relay traffic for Psiphon users.`
}
return `Start the Conduit inproxy service to relay traffic for users in censored regions.
return `Start the Conduit inproxy service to relay traffic for Psiphon users.
Requires a Psiphon network configuration file (JSON) containing the
PropagationChannelId, SponsorId, and broker specifications.`
Expand Down
2 changes: 1 addition & 1 deletion src/i18n/locales/en/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@
"string": "What is Conduit?"
},
"ONBOARDING_INFO_1_BODY_I18N": {
"string": "Conduit is an open-source application that enables people in censored regions worldwide to bounce off your device and into the Psiphon Network.\n\nThe more Conduit Stations there are, the stronger Psiphon is and the more open the internet becomes."
"string": "Conduit is an open-source application that enables Psiphon users worldwide to bounce off your device and into the Psiphon Network.\n\nThe more Conduit Stations there are, the stronger Psiphon is and the more open the internet becomes."
},
"ONBOARDING_INFO_1_BUTTON_I18N": {
"string": "Next"
Expand Down
Loading