README

Vanadium Core

CircleCI

This is a slimmed down version of Vanadium that is focused on its secure RPC system and service discovery. See the Vanadium site for more details, remembering that this repository implements RPC, security and naming; it does not provide support for mobile development.

Install steps

go get -t v.io/...
go test v.io/...
Expand ▾ Collapse ▴

Directories

Path Synopsis
jiri module
v23
Package v23 defines the runtime interface of Vanadium, and its subdirectories define the entire Vanadium public API.
Package v23 defines the runtime interface of Vanadium, and its subdirectories define the entire Vanadium public API.
context
Package context provides an implementation of context.Context with additional functionality used within the Vanadium code base.
Package context provides an implementation of context.Context with additional functionality used within the Vanadium code base.
conventions
Package conventions implements unenforced conventions for Vanadium.
Package conventions implements unenforced conventions for Vanadium.
discovery
Package discovery defines types and interfaces for discovering services.
Package discovery defines types and interfaces for discovering services.
flow
Package flow defines interfaces for the management of authenticated bidirectional byte Flows.
Package flow defines interfaces for the management of authenticated bidirectional byte Flows.
glob
Package glob defines a globbing syntax and implements matching routines.
Package glob defines a globbing syntax and implements matching routines.
i18n
Package i18n implements internationalization of formatted message strings in different languages.
Package i18n implements internationalization of formatted message strings in different languages.
logging
Package loging defines an interface for logging modeled on Google's glog.
Package loging defines an interface for logging modeled on Google's glog.
namespace
Package namespace defines an interface for resolving and managing names.
Package namespace defines an interface for resolving and managing names.
naming
Package naming defines types and utilities associated with naming.
Package naming defines types and utilities associated with naming.
options
Package options defines common options recognized by vanadium implementations.
Package options defines common options recognized by vanadium implementations.
query
The query packages implement Vanadium's query capabilities.
The query packages implement Vanadium's query capabilities.
query/engine
Package engine defines a Create function which returns an instance of datasource.QueryEngine
Package engine defines a Create function which returns an instance of datasource.QueryEngine
query/engine/datasource
Package datasource defines the interfaces a system must implement to support querying.
Package datasource defines the interfaces a system must implement to support querying.
query/engine/public
Package public defines the QueryEngine interface which is returned from calling v.io/v23/query/engine.Create and PreparedStatement which is returned from the QueryEngine.PrepareStatement function.
Package public defines the QueryEngine interface which is returned from calling v.io/v23/query/engine.Create and PreparedStatement which is returned from the QueryEngine.PrepareStatement function.
query/pattern
Package pattern handles parsing and matching SQL LIKE-style glob patterns.
Package pattern handles parsing and matching SQL LIKE-style glob patterns.
query/syncql
The ResultStream interface is used to iterate over query results.
The ResultStream interface is used to iterate over query results.
rpc
Package rpc defines interfaces for communication via remote procedure call.
Package rpc defines interfaces for communication via remote procedure call.
rpc/reserved
Package reserved implements client-side support for reserved RPC methods implemented by all servers.
Package reserved implements client-side support for reserved RPC methods implemented by all servers.
rpc/version
Package version defines a mechanism for versioning the RPC protocol.
Package version defines a mechanism for versioning the RPC protocol.
security
Package security defines types and utilities associated with security.
Package security defines types and utilities associated with security.
security/access
Package access defines types and interfaces for dynamic access control.
Package access defines types and interfaces for dynamic access control.
services/groups
Package groups defines interfaces for managing access control groups.
Package groups defines interfaces for managing access control groups.
services/http
Package HTTP defines an interface to send a http.Request from a client to a Vanadium server.
Package HTTP defines an interface to send a http.Request from a client to a Vanadium server.
services/logreader
Package logreader defines interfaces for reading log files remotely.
Package logreader defines interfaces for reading log files remotely.
services/mounttable
Package mounttable defines interfaces for managing associations between names and servers.
Package mounttable defines interfaces for managing associations between names and servers.
services/permissions
Package permissions defines an interface for managing access control permissions.
Package permissions defines an interface for managing access control permissions.
services/pprof
Package pprof defines an interface for accessing runtime profiling data in the format expected by the pprof visualization tool.
Package pprof defines an interface for accessing runtime profiling data in the format expected by the pprof visualization tool.
services/stats
Package stats defines an interface to access statistical information for troubleshooting and monitoring purposes.
Package stats defines an interface to access statistical information for troubleshooting and monitoring purposes.
services/tidyable
Package tidyable defines an interface for services that can be requested to clean up transient resource use (such as logs or caches.)
Package tidyable defines an interface for services that can be requested to clean up transient resource use (such as logs or caches.)
services/vtrace
Package vtrace defines an interface to access v.io/v23/vtrace traces, to help analyze and debug distributed systems.
Package vtrace defines an interface to access v.io/v23/vtrace traces, to help analyze and debug distributed systems.
services/watch
Package watch defines interfaces for watching a sequence of changes.
Package watch defines interfaces for watching a sequence of changes.
uniqueid
Package uniqueid defines functions that are likely to generate globally unique identifiers.
Package uniqueid defines functions that are likely to generate globally unique identifiers.
vdl
Package vdl implements the Vanadium Definition Language type and value system.
Package vdl implements the Vanadium Definition Language type and value system.
vdl/vdltest
Package vdltest provides a variety of VDL types and values for testing.
Package vdltest provides a variety of VDL types and values for testing.
vdlroot
Package vdlroot defines the standard VDL packages; the VDLROOT environment variable should point at this directory.
Package vdlroot defines the standard VDL packages; the VDLROOT environment variable should point at this directory.
vdlroot/signature
Package signature defines types representing interface and method signatures.
Package signature defines types representing interface and method signatures.
vdlroot/time
Package time defines standard representations of absolute and relative times.
Package time defines standard representations of absolute and relative times.
vdlroot/vdltool
Package vdltool defines types used by the vdl tool itself, including the format of vdl.config files.
Package vdltool defines types used by the vdl tool itself, including the format of vdl.config files.
verror
Package verror implements an error reporting mechanism that works across programming environments, and a set of common errors.
Package verror implements an error reporting mechanism that works across programming environments, and a set of common errors.
vom
Package vom implements the Vanadium Object Marshaling serialization format.
Package vom implements the Vanadium Object Marshaling serialization format.
vom/vomtest
Package vomtest provides protocol conformance tests for the Vanadium Object Marshaller (VOM).
Package vomtest provides protocol conformance tests for the Vanadium Object Marshaller (VOM).
vtrace
Package vtrace defines a system for collecting debugging information about operations that span a distributed system.
Package vtrace defines a system for collecting debugging information about operations that span a distributed system.
x
ref
Package ref defines constants used through the Vanadium reference implementation, which is implemented in its subdirectories.
Package ref defines constants used through the Vanadium reference implementation, which is implemented in its subdirectories.
ref/cmd/gclogs
Command gclogs safely deletes old log files.
Command gclogs safely deletes old log files.
ref/cmd/mounttable
Command mounttable sends commands to Vanadium mounttable services.
Command mounttable sends commands to Vanadium mounttable services.
ref/cmd/namespace
Command namespace resolves and manages names in the Vanadium namespace.
Command namespace resolves and manages names in the Vanadium namespace.
ref/cmd/principal
Command principal creates and manages Vanadium principals and blessings.
Command principal creates and manages Vanadium principals and blessings.
ref/cmd/uniqueid
Command uniqueid generates unique identifiers.
Command uniqueid generates unique identifiers.
ref/cmd/vdl
Command vdl manages Vanadium Definition Language source code.
Command vdl manages Vanadium Definition Language source code.
ref/cmd/vom
Command vom helps debug the Vanadium Object Marshaling wire protocol.
Command vom helps debug the Vanadium Object Marshaling wire protocol.
ref/cmd/vrpc
Command vrpc sends and receives Vanadium remote procedure calls.
Command vrpc sends and receives Vanadium remote procedure calls.
ref/examples/echo/echo
Command echo is a client for the Echo service.
Command echo is a client for the Echo service.
ref/examples/echo/echod
Command echo is a server for the Echo service.
Command echo is a server for the Echo service.
ref/examples/fortune
Package fortune defines the Fortune example interface.
Package fortune defines the Fortune example interface.
ref/examples/fortune/fortune
Command fortune is a client to the Fortune interface.
Command fortune is a client to the Fortune interface.
ref/examples/fortune/fortuned
Command fortuned runs a daemon that implements the Fortune interface.
Command fortuned runs a daemon that implements the Fortune interface.
ref/examples/noflags
An example using the 'library' factory which is configured via exported variables rather than by command line flags.
An example using the 'library' factory which is configured via exported variables rather than by command line flags.
ref/examples/rps
Package rps defines interfaces for playing the game Rock-Paper-Scissors.
Package rps defines interfaces for playing the game Rock-Paper-Scissors.
ref/examples/rps/rpsbot
Command rpsbot repeatedly runs automated games, implementing all three roles.
Command rpsbot repeatedly runs automated games, implementing all three roles.
ref/examples/rps/rpsplayer
Command rpsplayer implements the Player interface, which enables a human to play the game.
Command rpsplayer implements the Player interface, which enables a human to play the game.
ref/examples/rps/rpsscorekeeper
Command rpsscorekeeper implements the ScoreKeeper interface.
Command rpsscorekeeper implements the ScoreKeeper interface.
ref/examples/tunnel
Package tunnel defines an interface for creating a network tunnel from client to server.
Package tunnel defines an interface for creating a network tunnel from client to server.
ref/examples/tunnel/tunneld
Command tunneld runs the tunneld daemon, which implements the Tunnel interface.
Command tunneld runs the tunneld daemon, which implements the Tunnel interface.
ref/examples/tunnel/vsh
Command vsh runs the Vanadium shell, a Tunnel client that can be used to run shell commands or start an interactive shell on a remote tunneld server.
Command vsh runs the Vanadium shell, a Tunnel client that can be used to run shell commands or start an interactive shell on a remote tunneld server.
ref/lib/apilog
Package apilog provides functions to be used in conjunction with logcop.
Package apilog provides functions to be used in conjunction with logcop.
ref/lib/discovery/global
TODO(jhahn): This is an experimental work to see its feasibility and set the long-term goal, and can be changed without notice.
TODO(jhahn): This is an experimental work to see its feasibility and set the long-term goal, and can be changed without notice.
ref/lib/discovery/plugins/loopback
Package loopback implements loopback plugin for discovery service.
Package loopback implements loopback plugin for discovery service.
ref/lib/discovery/plugins/mdns
Package mdns implements mDNS plugin for discovery service.
Package mdns implements mDNS plugin for discovery service.
ref/lib/discovery/plugins/vine
Package vine contains a discovery plugin that is using Vine protocol.
Package vine contains a discovery plugin that is using Vine protocol.
ref/lib/discovery/test
package test contains tests that rely on a fake runtime.
package test contains tests that rely on a fake runtime.
ref/lib/discovery/testutil
Package testutil defines helpers for discovery tests.
Package testutil defines helpers for discovery tests.
ref/lib/exec
Package exec implements configuration and secret-sharing between parent and child processes via anoymous pipes.
Package exec implements configuration and secret-sharing between parent and child processes via anoymous pipes.
ref/lib/flags
Package flags implements utilities to augment the standard Go flag package.
Package flags implements utilities to augment the standard Go flag package.
ref/lib/publisher
Package publisher provides a type to publish names to a mounttable.
Package publisher provides a type to publish names to a mounttable.
ref/lib/pubsub
Package pubsub defines interfaces for accessing dynamically changing process configuration information.
Package pubsub defines interfaces for accessing dynamically changing process configuration information.
ref/lib/security
Package security implements utilities for creating and using Vanadium security primitives.
Package security implements utilities for creating and using Vanadium security primitives.
ref/lib/security/audit
Package audit implements a mechanism for writing auditable events to an audit log.
Package audit implements a mechanism for writing auditable events to an audit log.
ref/lib/security/bcrypter
Package bcrypter defines the mechanisms for blessings based encryption and decryption.
Package bcrypter defines the mechanisms for blessings based encryption and decryption.
ref/lib/security/passphrase
Package passphrase contains utilities for reading a passphrase.
Package passphrase contains utilities for reading a passphrase.
ref/lib/security/securityflag
Package securityflag implements utilities for creating security objects based on flags.
Package securityflag implements utilities for creating security objects based on flags.
ref/lib/security/serialization
Package serialization implements utilities for reading and writing data with signature-based integrity checking.
Package serialization implements utilities for reading and writing data with signature-based integrity checking.
ref/lib/security/signing/keyfile
Package keyfile provides a signing service that uses files to store keys.
Package keyfile provides a signing service that uses files to store keys.
ref/lib/security/signing/sshagent
Package sshagent provides the ability to use openssh's ssh-agent to carry out key signing operations using keys stored therein.
Package sshagent provides the ability to use openssh's ssh-agent to carry out key signing operations using keys stored therein.
ref/lib/signals
Package signals implements utilities for managing process shutdown with support for signal-handling.
Package signals implements utilities for managing process shutdown with support for signal-handling.
ref/lib/stats
Package stats implements a global repository of stats objects.
Package stats implements a global repository of stats objects.
ref/lib/stats/counter
Package counter implements counters that keeps track of their recent values over different periods of time.
Package counter implements counters that keeps track of their recent values over different periods of time.
ref/lib/stats/histogram
Package histogram implements a basic histogram to keep track of data distribution.
Package histogram implements a basic histogram to keep track of data distribution.
ref/lib/stats/sysstats
Package sysstats implements system statistics and updates them periodically.
Package sysstats implements system statistics and updates them periodically.
ref/lib/timekeeper
Package timekeeper defines an interface to allow switching between real time and simulated time.
Package timekeeper defines an interface to allow switching between real time and simulated time.
ref/lib/v23cmd
Package v23cmd implements utilities for running v23 cmdline programs.
Package v23cmd implements utilities for running v23 cmdline programs.
ref/lib/vdl/build
Package build implements utilities to collect VDL build information and run the parser and compiler.
Package build implements utilities to collect VDL build information and run the parser and compiler.
ref/lib/vdl/codegen
Package codegen implements utilities for VDL code generators.
Package codegen implements utilities for VDL code generators.
ref/lib/vdl/codegen/golang
Package golang implements Go code generation from compiled VDL packages.
Package golang implements Go code generation from compiled VDL packages.
ref/lib/vdl/codegen/java
Package java implements Java code generation from compiled VDL packages.
Package java implements Java code generation from compiled VDL packages.
ref/lib/vdl/codegen/javascript
Package javascript implements Javascript code generation from compiled VDL packages.
Package javascript implements Javascript code generation from compiled VDL packages.
ref/lib/vdl/codegen/json
Package json implements JSON generation for VDL const values.
Package json implements JSON generation for VDL const values.
ref/lib/vdl/codegen/swift
Package swift implements Swift code generation from compiled VDL packages.
Package swift implements Swift code generation from compiled VDL packages.
ref/lib/vdl/codegen/vdlgen
Package vdlgen implements VDL code generation from compiled VDL packages.
Package vdlgen implements VDL code generation from compiled VDL packages.
ref/lib/vdl/compile
Package compile implements the VDL compiler, converting a parse tree into compiled results.
Package compile implements the VDL compiler, converting a parse tree into compiled results.
ref/lib/vdl/opconst
Package opconst defines the representation and operations for VDL constants.
Package opconst defines the representation and operations for VDL constants.
ref/lib/vdl/parse
Package parse implements the VDL parser, converting source files into a parse tree.
Package parse implements the VDL parser, converting source files into a parse tree.
ref/lib/vdl/vdlutil
Package vdlutil implements utilities used by many VDL components.
Package vdlutil implements utilities used by many VDL components.
ref/runtime
Package runtime and its subdirectories provide implementations of the Vanadium runtime for different runtime environments.
Package runtime and its subdirectories provide implementations of the Vanadium runtime for different runtime environments.
ref/runtime/factories/fake
Package fake implements a fake RuntimeFactory, useful in tests for mocking out certain components.
Package fake implements a fake RuntimeFactory, useful in tests for mocking out certain components.
ref/runtime/factories/generic
Package generic implements a RuntimeFactory that is useful in tests.
Package generic implements a RuntimeFactory that is useful in tests.
ref/runtime/factories/library
Package library implements a RuntimeFactory suitable for building a Vanadium library that is linked into other applications.
Package library implements a RuntimeFactory suitable for building a Vanadium library that is linked into other applications.
ref/runtime/factories/roaming
Package roaming implements a RuntimeFactory suitable for a variety of network configurations, including 1-1 NATs, dhcp auto-configuration, Amazon Web Services and Google Compute Engine.
Package roaming implements a RuntimeFactory suitable for a variety of network configurations, including 1-1 NATs, dhcp auto-configuration, Amazon Web Services and Google Compute Engine.
ref/runtime/factories/static
Package static implements a RuntimeFactory suitable for a variety of network configurations, including 1-1 NATs, Amazon Web Services and Google Compute Engine but hosted on a static IP address with no support for adapting to dhcp changes.
Package static implements a RuntimeFactory suitable for a variety of network configurations, including 1-1 NATs, Amazon Web Services and Google Compute Engine but hosted on a static IP address with no support for adapting to dhcp changes.
ref/runtime/protocols/lib/tcputil
package tcputil contains functions commonly used to manipulate TCP connections.
package tcputil contains functions commonly used to manipulate TCP connections.
ref/runtime/protocols/vine
Package vine contains Vanadium's Implementation of Network Emulation (VINE).
Package vine contains Vanadium's Implementation of Network Emulation (VINE).
ref/runtime/protocols/wsh
Package wsh registers the websocket 'hybrid' protocol.
Package wsh registers the websocket 'hybrid' protocol.
ref/runtime/protocols/wsh_nacl
Package wsh_nacl registers the websocket 'hybrid' protocol for nacl architectures.
Package wsh_nacl registers the websocket 'hybrid' protocol for nacl architectures.
ref/services/ben
Package ben defines datastructures to archive microbenchmark results.
Package ben defines datastructures to archive microbenchmark results.
ref/services/ben/archive
Package archive defines the RPC interface for archiving benchmark results.
Package archive defines the RPC interface for archiving benchmark results.
ref/services/ben/benarchd
Command benarchd implements a benchmark archival daemon.
Command benarchd implements a benchmark archival daemon.
ref/services/debug/debug
Command debug supports debugging Vanadium servers.
Command debug supports debugging Vanadium servers.
ref/services/debug/debug/browseserver
Package browseserver provides a web interface that can be used to interact with the vanadium debug interface.
Package browseserver provides a web interface that can be used to interact with the vanadium debug interface.
ref/services/debug/debuglib
Package debuglib implements debug server support.
Package debuglib implements debug server support.
ref/services/discharger
Package discharger defines an interface for obtaining discharges for third-party caveats.
Package discharger defines an interface for obtaining discharges for third-party caveats.
ref/services/groups/groups
Command groups creates and manages Vanadium groups of blessing patterns.
Command groups creates and manages Vanadium groups of blessing patterns.
ref/services/groups/groupsd
Daemon groupsd implements the v.io/v23/services/groups interfaces for managing access control groups.
Daemon groupsd implements the v.io/v23/services/groups interfaces for managing access control groups.
ref/services/identity
Package identity defines interfaces for Vanadium identity providers.
Package identity defines interfaces for Vanadium identity providers.
ref/services/identity/identityd
Command identityd runs a daemon HTTP server that uses OAuth to create security.Blessings objects.
Command identityd runs a daemon HTTP server that uses OAuth to create security.Blessings objects.
ref/services/identity/identitylib
Package identitylib implements a test identityd service registered using the v.io/x/lib/gosh library.
Package identitylib implements a test identityd service registered using the v.io/x/lib/gosh library.
ref/services/mounttable/mounttabled
Command mounttabled runs the mount table daemon, which implements the v.io/v23/services/mounttable interfaces.
Command mounttabled runs the mount table daemon, which implements the v.io/v23/services/mounttable interfaces.
ref/services/mounttable/mounttablelib
Package mounttablelib implements utilities for mounttable implementations.
Package mounttablelib implements utilities for mounttable implementations.
ref/services/role
Package role defines an interface for requesting blessings from a role account server.
Package role defines an interface for requesting blessings from a role account server.
ref/services/role/roled
Command roled runs the Role interface daemon.
Command roled runs the Role interface daemon.
ref/services/stats
Packages stats defines the non-native types exported by the stats service.
Packages stats defines the non-native types exported by the stats service.
ref/services/xproxy
Package xproxy enables services to export (proxy) themselves across networks (behind NATs for example).
Package xproxy enables services to export (proxy) themselves across networks (behind NATs for example).
ref/services/xproxy/xproxy
Package xproxy contains the implementation of the proxy service.
Package xproxy contains the implementation of the proxy service.
ref/services/xproxy/xproxyd
Command proxyd is a daemon that listens for connections from Vanadium services (typically behind NATs) and proxies these services to the outside world.
Command proxyd is a daemon that listens for connections from Vanadium services (typically behind NATs) and proxies these services to the outside world.
ref/test
Package test implements initialization for unit and integration tests.
Package test implements initialization for unit and integration tests.
ref/test/basics
Package basics implements some benchmarks for important basic operations in go.
Package basics implements some benchmarks for important basic operations in go.
ref/test/benchmark
Package benchmark implements utilities to augment the standard Go testing.Benchmark functionality.
Package benchmark implements utilities to augment the standard Go testing.Benchmark functionality.
ref/test/expect
Package expect implements support for checking expectations against a buffered input stream.
Package expect implements support for checking expectations against a buffered input stream.
ref/test/hello
Package hello defines a simple client and server and uses them in a series of regression tests.
Package hello defines a simple client and server and uses them in a series of regression tests.
ref/test/hello/helloclient
Command helloclient is a simple client mainly used in regression tests.
Command helloclient is a simple client mainly used in regression tests.
ref/test/hello/helloserver
Command helloserver is a simple server mainly used in regression tests.
Command helloserver is a simple server mainly used in regression tests.
ref/test/testutil
Package testutil implements utilities for unit and integration tests.
Package testutil implements utilities for unit and integration tests.
ref/test/timekeeper
Package timekeeper implements simulated time against the v.io/x/ref/lib/timekeeper.TimeKeeper interface.
Package timekeeper implements simulated time against the v.io/x/ref/lib/timekeeper.TimeKeeper interface.
ref/test/v23test
Package v23test defines Shell, a wrapper around gosh.Shell that provides Vanadium-specific functionality such as credentials management, StartRootMountTable, and StartSyncbase.
Package v23test defines Shell, a wrapper around gosh.Shell that provides Vanadium-specific functionality such as credentials management, StartRootMountTable, and StartSyncbase.
lib Module